<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=103.251.167.21&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=103.251.167.21&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/103.251.167.21"/>
		<updated>2026-06-11T16:46:35Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B9_%D0%BF%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D0%B8_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_2022&amp;diff=83514</id>
		<title>Список заданий по теории сложности 2022</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B9_%D0%BF%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D0%B8_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_2022&amp;diff=83514"/>
				<updated>2022-09-01T05:04:56Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# Докажите, что объединение, пересечение, конкатенация и замыкание Клини языков из $NP$ является языком из $NP$&lt;br /&gt;
# В определении $NP$ мы говорим, что при любом недетерминированном выборе программа должна завершиться не более чем за $p(n)$, где $p$ - полином, а $n$ - длина входа. На самом деле это требование может быть ослаблено, можно требовать, чтобы программа завершалась не более чем за $p(n)$ только в случае допуска. Докажите, что в таком определении класс $NP$ не меняется.&lt;br /&gt;
# $PRIMES\in NP$. Язык $PRIMES$ определяется следующим образом: это множество двоичных записей простых целых чисел. Доказательство принадлежности $PRIMES$ классу $NP$ разбито на два задания. Часть 1. Известно, что если $n$ простое, то существует $g$, такое что $g^{n-1}=1\pmod n$ и для всех $1 \le k &amp;lt; n - 1$ выполнено $g^k \ne 1 \pmod n$. Пусть известно разложение $n-1$ на простые множители: $n-1=q_1^{a_1}q_2^{a_2}\ldots q_k^{a_k}$. Предложите полиномиальный алгоритм проверки, что заданное $g$ удовлетворяет описанному условию. Можно недетерминированно выбрать $g$ и недетерминированно угадать разбиение $n-1$ на простые множители. Однако это требует проверки на простоту, чтобы убедиться, что угадано разложение именно на простые множители. Завершите доказательство, что $PRIMES \in NP$, описав рекурсивную процедуру проверки и доказав, что она работает за полиномиальное время.&lt;br /&gt;
# Задача останова $HALT = \{\langle m, x \rangle | m$ - детерминированная машина Тьюринга, $m(x) = 1\}$. Докажите, что $HALT$ является $NP$-трудной. Является ли она $NP$-полной?&lt;br /&gt;
# Изоморфизм подграфа $NP$-полный. Докажите $NP$-полноту следующего языка. Множество пар $\{\langle G_1, G_2 \rangle | G_1$ содержит $G_2$ как подграф $\}$.&lt;br /&gt;
# Задача о покрытии подмножествами $NP$-полна. Докажите $NP$-полноту следующего языка. Даны $n$ множеств $S_i\subset\{1, 2, \ldots, m\}$ и число $k$. Язык наборов $SETCOVER = \{ \langle [S_1, S_2, \ldots, S_n], k\rangle$ можно выбрать не более $k$ множеств, чтобы каждый элемент от $1$ до $m$ лежал хотя бы в одном выбранном множестве $\}$.&lt;br /&gt;
# Задача поиска доминирующего множества $NP$-полна. Докажите $NP$-полноту следующего языка. Множество пар $DOM = \{\langle G, k \rangle | G$ содержит множество из $k$ вершин, таких, что любая вершина $G$ либо выбрана, либо имеет выбранного соседа $\}$.&lt;br /&gt;
# Задача о раскраске в три цвета $NP$-полна. Докажите $NP$-полноту следующего языка. Множество графов $3COL=\{ G | G$ имеет правильную раскраску в три цвета $\}$. Что можно сказать про раскраску в два цвета?&lt;br /&gt;
# Задача о рюкзаке $NP$-полна. Докажите $NP$-полноту следующего языка. Даны предметы с весом $w_i$ и стоимостью $v_i$. Язык наборов $KNAPSACK=\{ \langle s, [(v_1, w_1), (v_2, w_2), \ldots (v_n, w_n)], k\rangle | $ можно выбрать предметы с суммарным весом не более $s$ и суммарной стоимостью не менее $k \}$.&lt;br /&gt;
# Задача целочисленного линейного программирования $NP$-трудна. Докажите $NP$-трудность следующего языка. Множество систем линейных ограничений, которые имеют целочисленное решение.&lt;br /&gt;
# Неориентированный гамильтонов цикл. Докажите, что язык $UHAM = \{G | G$ - неориентированный граф, содержащий гамильтонов цикл$\}$ является $NP$-полным.&lt;br /&gt;
# Ориентированный гамильтонов путь. Докажите, что язык $HAMP = \{G | G$ - ориентированный граф, содержащий гамильтонов путь$\}$ является $NP$-полным.&lt;br /&gt;
# Говорят, что булева формула с кванторами находится в предваренной форме, если сначала идут все кванторы, а затем булева формула: $Qx_1Qx_2\ldots Qx_n \varphi(x_1,\ldots, x_n)$, где $Q = \forall$ или $Q = \exists$. Говорят, что булева формула с кванторами находится в КНФ, если она находится в предваренной форме $Qx_1Qx_2\ldots Qx_n \varphi(x_1,\ldots, x_n)$, где $Q = \forall$ или $Q = \exists$, причём $\varphi$ находится в КНФ. Говорят, что булева формула с кванторами находится в 3-КНФ, если она находится в предваренной форме $Qx_1Qx_2\ldots Qx_n \varphi(x_1,\ldots, x_n)$, где $Q = \forall$ или $Q = \exists$, причём $\varphi$ находится в 3-КНФ. Докажите, что язык истиных булевых формул с кванторами в 3-КНФ является $PS$-полным.&lt;br /&gt;
# $PS$-полнота Generalized Geography. Игра в Generalized Geography (GG) ведется на поле, которое представляет собой ориентированный граф с выделенной стартовой вершиной. Исходно фишка находится в стартовой вершине. Два игрока делают ходы по очереди, за один ход игрок перемещает фишку по ребру из текущей вершины. Запрещается перемещать фишку в вершину, где она уже ранее была. Игрок, который не может сделать ход, проигрывает. Докажите, что $GG = \{\langle G, s\rangle|$ первый игрок выигрывает на графе $G$ со стартовой вершиной $s\}$ является $PS$-полным языком.&lt;br /&gt;
# $PS$-полнота Shannon Switching Game. Игра Шеннона ведется на поле, которое представляет собой неориентированный граф с двумя выделенными вершинами $s$ и $t$. Два игрока Short и Cut делают ходы по очереди, Short ходит первым. За один ход Short может выбрать одну вершину и защитить её. За один ход Cut может удалить любую вершину, кроме $s$, $t$ и защищенных к текущему моменту вершин. В конце Short выигрывает, если по защищенным вершинам можно добраться от $s$ до $t$. Докажите, что $SHSW = \{\langle G, s, t\rangle|$ Short выигрывает на графе $G$ с выделенными вершиными $s$ и $t\}$ является $PS$-полным языком.&lt;br /&gt;
# $PS$-трудность языка полных регулярных выражений. Докажите, что $FRE = \{\langle \varphi\rangle|$ любое слово подходит под регулярное выражение $\varphi\}$ является $PS$-трудным языком.&lt;br /&gt;
# Класс $EXP$ определяется как множество языков $L$, для которых существует детерминированная программа, разрешающая $L$ за $O(2^{p(n)})$, где $p(n)$ - полином. Докажите, что $NP \subset EXP$.&lt;br /&gt;
# Класс $NEXP$ определяется как множество языков $L$, для которых существует недетерминированная программа, разрешающая $L$ за $O(2^{p(n)})$, где $p(n)$ - полином. Предложите понятие $NEXP$-полноты. По аналогии с $BH_{1N}$ определите язык $BH_{2N}$, докажите, что он является $NEXP$-полным.&lt;br /&gt;
# Петя свёл язык $A$ по Карпу к $NP$-полному языку $B$. Учитель утверждает, что из этого не следует, что $A$ является $NP$-полным. Помогите учителю подобрать пример.&lt;br /&gt;
# Предположим, что существует $NP$-полный язык, для которого существует решение за $O(n^{C\log_2n})$, где $C$ - константа. Что можно сказать про класс $NP$ в этом случае?&lt;br /&gt;
# Верно ли, что если $A \le B$, то $A \in P^B$? В случае, если вы не можете доказать свой ответ, можно привести разумные аргументы в его пользу.&lt;br /&gt;
# Верно ли, что если $A \in P^B$, то $A \le B$? В случае, если вы не можете доказать свой ответ, можно привести разумные аргументы в его пользу.&lt;br /&gt;
# Сережа дал такое определение $NP$-полноты: язык $L$ является $NP$-полным по Серёже, если $L \in P \Rightarrow P = NP$. Прокомментируйте определение Серёжи.&lt;br /&gt;
# Юра дал такое определение класса $NP$: это задачи, который можно решить перебором. Прокомментируйте определение Юры.&lt;br /&gt;
# Докажите, что найдется такой оракул $A$ и язык $L \in NP^A$, что $L$ не сводится к $3SAT$ за полином даже, если у сведения есть доступ к оракулу для $A$.&lt;br /&gt;
# Докажите, что если $L\in coNP$, то $L^* \in coNP$.&lt;br /&gt;
# Разработайте алгоритм проверки, является ли неориентированный граф, заданный списками смежности, ациклическим, используя $O(\log V)$ дополнительной памяти, где $V$ --- количество вершин графа. Алгоритм должен быть детерминированным.&lt;br /&gt;
# Докажите, что $2SAT \in NL$&lt;br /&gt;
# $BH_{1N}$ является $NP$-полным. Определите по аналогии $P$-полный язык.&lt;br /&gt;
# Определим $polyL$ как $\cup_{c&amp;gt;0}DSPACE(\log^c n)$. $PATH = \{\langle G, s, t\rangle,$ в ориентированном графе $G$ есть путь из $s$ в $t\}$. Докажите, что $PATH \in polyL$.&lt;br /&gt;
# Обозначим как $DP$ множество языков $L$, для которых найдутся $L_1 \in NP$ и $L_2 \in coNP$, такие что $L = L_1 \cap L_2$. Рассмотрим язык $EXACTINDSET = \{\langle G, k\rangle | \text{ максимальное}$ $\text{независимое множество в графе $G$ имеет размер $k$}\}$. Докажите, что $EXACTINDSET$ является полным для класса $DP$ относительно полиномиального сведения.&lt;br /&gt;
# Докажите, что $EXACTINDSET \in \Sigma_2 \cap \Pi_2$. Сделайте вывод про место $DP$ в полиномиальной иерархии.&lt;br /&gt;
# Предложите разрешимый язык из $P/poly$, который не лежит в $P$.&lt;br /&gt;
# Докажите, что $Sparse \subset P/poly$ ($Sparse$ - множество языков, которые имеют лишь полиномиальное число слов каждой длины).&lt;br /&gt;
# Докажите, что существует язык из $DSPACE(2^{O(n)})$, которой не принадлежит $SIZE(2^{o(n)})$. &lt;br /&gt;
# Докажите, что если $EXP \subset P/poly$, то $EXP = \Sigma_2$.&lt;br /&gt;
# Обозначим как $PP^+$ как класс языков, для которых существует вероятностная программа $M$, работающая за полином, что если $x \in L$, то $P(M(x) = 1) &amp;gt; 1/2$, а если $x \notin L$, то $P(M(x) = 0) \ge 1/2$. Докажите, что $PP^+ = PP$.&lt;br /&gt;
# Докажите, что $NP \subset PP$.&lt;br /&gt;
# Докажите, что если $NP \subset BPP$, то $NP = RP$.&lt;br /&gt;
# В определении $ZPP$ нет требования, чтобы на любой вероятностной ленте программа завершалась. Докажите, что если добавить это ограничение, определение класса $ZPP$ не поменяется.&lt;br /&gt;
# При симуляции $random(n)$ с помощью бросков честной монеты (или абстракции вероятностной ленты) математическое ожидание времени работы $random(n)$ равно $O(\log n)$, но нет ограничения сверху на число бросков. Кажется, что это может испортить определение классов $RP$ или $BPP$, потому что в них время работы программы должно быть ограничено сверху. Докажите, что это не так и можно разрешить конструкции $random(n)$ в вероятностных программах из определения $RP$ или $BPP$, даже если на самом деле в модели вычислений есть доступ к источнику случайности только с распределением честной монеты.&lt;br /&gt;
# Нечестные монеты с нерациональным $p$ могут привести к парадоксам. Докажите, что существует такое $p$, такой неразрешимый язык $L$ и такая программа $A$, что если у программы $A$ есть доступ к источнику случайности с распределением нечестной монеты с вероятностью выпадения $1$ равной $p$, то она может распознать язык $L$ за полиномиальное время.&lt;br /&gt;
# Полные языки для $BPP$. Будем называть $A\in BPP$ язык полным для $BPP$, если для любого языка $B \in BPP$ выполнено $B \le A$. Петя предполагает, что язык $BH_{1DP} = \{\langle p, x, 1^t \rangle\}$, где $p$ — вероятностная программа, допускающая $x$ за время $t$ с вероятностью не меньше $2/3$ является полным для $BPP$. Прав ли Петя?&lt;br /&gt;
# Вероятностные сведения. Будем говорить, что $B$ вероятностно сводится к $C$ и писать $B \le_r C$, если найдется такая вероятностная программа $p$, работающая за полином, что $P([x \in B] = [p(x) \in C]) \ge 2/3$. Докажите, что если $C \in BPP$, $B \le_r C$, то $B \in BPP$.&lt;br /&gt;
# Докажите, что $\le_r$ не является транзитивным отношением.&lt;br /&gt;
# Арифметическая схема - аналог булевой схемы, но на вход она получает $m$-битные неотрицательные целые числа, а вместо функциональных элементов используются арифметические: &amp;quot;$+$&amp;quot;, &amp;quot;$-$&amp;quot; и &amp;quot;$\times$&amp;quot;. Также на некоторые входы разрешается подать константы. Все вычисления происходят в целых числах. Разработайте вероятностный алгоритм проверки, что заданная арифметическая схема с $n$ арифметическими элементами равна нулю на любых входах, полиномиальный относительно $n$ и $m$.&lt;br /&gt;
# Рассмотрим следующее (неверное) доказательство, что $NP \subset BPP$. Решим для этого $NP$-полную задачу $CIRCUIT-SAT$. Рассмотрим булеву схему в базисе &amp;quot;$\oplus$&amp;quot;, &amp;quot;$\wedge$&amp;quot;, &amp;quot;$\mathbb{1}$&amp;quot;. Превратим её в арифметическую схему, заменив элемент &amp;quot;$\oplus$&amp;quot; на &amp;quot;$+$&amp;quot;, а &amp;quot;$\wedge$&amp;quot; на &amp;quot;$\times$&amp;quot;. Теперь проверим её на вычисление тождественного нуля с помощью предыдущей задачи. В чём ошибка в рассуждениях?&lt;br /&gt;
# Интерактивное доказательство для перманента, часть 1. Перманент матрицы - $\mathrm{perm}(A)=\sum_{\sigma}\prod_{i=1}^n a_{i\sigma_i}$ - вычисляется по той же формуле, что и определитель, но суммирование происходит без $(-1)^{\mathrm{sign}(\sigma)}$. Можно показать, что вычисление перманента - трудная задача. Докажите формулу разложения перманента по первой строке $\mathrm{perm}(A)=\sum_{i=1}^n a_{1i}\mathrm{perm}(A_{1i})$.&lt;br /&gt;
# Часть 2. Рассмотрим $A_{1i}[j][k]$ как функцию от $i$. Докажите, что для всех $j$ и $k$ она является полиномом от $i$. Какой степени? &lt;br /&gt;
# Часть 3. Рассмотрим матрицу полиномов $D_A(x)$, элемент которой $D_A(x)[j][k]$ для всех $i$ равен $A_{1i}[j][k]$. Рассмотрим $\mathrm{perm}(D_A(x))$. Докажите, что он является полиномом от $x$. Какой степени?&lt;br /&gt;
# Часть 4. На основании предыдущих трех заданий и конструкции интерактивного доказательства для $\#SAT$ разработайте интерактивное доказательство для языка $\langle A, k\rangle$, где $\mathrm{perm}A = k$.&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%83%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C&amp;diff=83513</id>
		<title>Канальный уровень</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%83%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C&amp;diff=83513"/>
				<updated>2022-09-01T05:04:49Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Сервисы, подуровни ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Протоколы ==&lt;br /&gt;
На канальном уровне нужно передавать данные с сетевого уровня. При этом требуется, чтобы кадры не дублировались, и сохранялся порядок. Ниже представлены протоколы с различными допущениями о канале от самого простого случая (с идеальным каналом) к более сложным. Сначала даётся краткое словесное описание, затем сишный псевдокод, из которого всё понятно.&lt;br /&gt;
&lt;br /&gt;
=== Общие объявления ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 #define MAX_PKT 4	/* determines packet size in bytes */&lt;br /&gt;
&lt;br /&gt;
 typedef enum {false, true} boolean;	/* boolean type */&lt;br /&gt;
 typedef unsigned int seq_nr;	/* sequence or ack numbers */&lt;br /&gt;
 typedef struct {unsigned char data[MAX_PKT];} packet;	/* packet definition */&lt;br /&gt;
 typedef enum {data, ack, nak} frame_kind;	/* frame_kind definition */&lt;br /&gt;
&lt;br /&gt;
 typedef struct {	/* frames are transported in this layer */&lt;br /&gt;
   frame_kind kind;	/* what kind of a frame is it? */&lt;br /&gt;
   seq_nr seq;   	/* sequence number */&lt;br /&gt;
   seq_nr ack;   	/* acknowledgement number */&lt;br /&gt;
   packet info;  	/* the network layer packet */&lt;br /&gt;
 } frame;&lt;br /&gt;
 &lt;br /&gt;
 /* Wait for an event to happen; return its type in event. */&lt;br /&gt;
 void wait_for_event(event_type *event);&lt;br /&gt;
 &lt;br /&gt;
 /* Fetch a packet from the network layer for transmission on the channel. */&lt;br /&gt;
 void from_network_layer(packet *p);&lt;br /&gt;
 &lt;br /&gt;
 /* Deliver information from an inbound frame to the network layer. */&lt;br /&gt;
 void to_network_layer(packet *p);&lt;br /&gt;
 &lt;br /&gt;
 /* Go get an inbound frame from the physical layer and copy it to r. */&lt;br /&gt;
 void from_physical_layer(frame *r);&lt;br /&gt;
 &lt;br /&gt;
 /* Pass the frame to the physical layer for transmission. */&lt;br /&gt;
 void to_physical_layer(frame *s);&lt;br /&gt;
 &lt;br /&gt;
 /* Start the clock running and enable the timeout event. */&lt;br /&gt;
 void start_timer(seq_nr k);&lt;br /&gt;
 &lt;br /&gt;
 /* Stop the clock and disable the timeout event. */&lt;br /&gt;
 void stop_timer(seq_nr k);&lt;br /&gt;
&lt;br /&gt;
 /* Start an auxiliary timer and enable the ack_timeout event. */&lt;br /&gt;
 void start_ack_timer(void);&lt;br /&gt;
&lt;br /&gt;
 /* Stop the auxiliary timer and disable the ack_timeout event. */&lt;br /&gt;
 void stop_ack_timer(void);&lt;br /&gt;
&lt;br /&gt;
 /* Allow the network layer to cause a network_layer_ready event. */&lt;br /&gt;
 void enable_network_layer(void);&lt;br /&gt;
 &lt;br /&gt;
 /* Forbid the network layer from causing a network_layer_ready event. */&lt;br /&gt;
 void disable_network_layer(void);&lt;br /&gt;
 &lt;br /&gt;
 /* Macro inc is expanded in-line: Increment k circularly. */&lt;br /&gt;
 #define inc(k) if (k &amp;lt; MAX_SEQ) k = k + 1; else k = 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Неограниченный симлексный протокол ===&lt;br /&gt;
Данные передаются в одном направлении. Время обработки равно нулю, буфер бесконечен, канал идеальный. Отправитель просто постоянно шлёт данные, получатель постоянно читает.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /* Protocol 1 (utopia) provides for data transmission in one direction only, from&lt;br /&gt;
    sender to receiver.  The communication channel is assumed to be error free,&lt;br /&gt;
    and the receiver is assumed to be able to process all the input infinitely fast.&lt;br /&gt;
    Consequently, the sender just sits in a loop pumping data out onto the line as&lt;br /&gt;
    fast as it can. */&lt;br /&gt;
&lt;br /&gt;
 typedef enum {frame_arrival} event_type;&lt;br /&gt;
 #include &amp;quot;protocol.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 void sender1(void)&lt;br /&gt;
 {&lt;br /&gt;
   frame s;	/* buffer for an outbound frame */&lt;br /&gt;
   packet buffer;	/* buffer for an outbound packet */&lt;br /&gt;
 &lt;br /&gt;
   while (true) {&lt;br /&gt;
         from_network_layer(&amp;amp;buffer);	/* go get something to send */&lt;br /&gt;
         s.info = buffer;	/* copy it into s for transmission */&lt;br /&gt;
         to_physical_layer(&amp;amp;s);	/* send it on its way */&lt;br /&gt;
   }	/* tomorrow, and tomorrow, and tomorrow,&lt;br /&gt;
  	   Creeps in this petty pace from day to day&lt;br /&gt;
 	   To the last syllable of recorded time;&lt;br /&gt;
 	        - Macbeth, V, v */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void receiver1(void)&lt;br /&gt;
 {&lt;br /&gt;
   frame r;&lt;br /&gt;
   event_type event;	/* filled in by wait, but not used here */&lt;br /&gt;
 &lt;br /&gt;
   while (true) {&lt;br /&gt;
         wait_for_event(&amp;amp;event);	/* only possibility is frame_arrival */&lt;br /&gt;
         from_physical_layer(&amp;amp;r);	/* go get the inbound frame */&lt;br /&gt;
         to_network_layer(&amp;amp;r.info);	/* pass the data to the network layer */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Симлексный протокол с ожиданием ===&lt;br /&gt;
Всё то же самое, только теперь считаем, что получатель обрабатывает данные не моментально, поэтому посылающий не может постоянно слать данные. Для этого получатель будет слать подтверждение, а отправитель будет его дожидаться, прежде чем послать следующий пакет. Канал считаем идеальным.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /* Protocol 2 (stop-and-wait) also provides for a one-directional flow of data from&lt;br /&gt;
    sender to receiver. The communication channel is once again assumed to be error&lt;br /&gt;
    free, as in protocol 1. However, this time, the receiver has only a finite buffer&lt;br /&gt;
    capacity and a finite procesing speed, so the protocol must explicitly prevent &lt;br /&gt;
    the sender from flooding the receiver with data faster than it can be handled. */&lt;br /&gt;
&lt;br /&gt;
 typedef enum {frame_arrival} event_type;&lt;br /&gt;
 #include &amp;quot;protocol.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 void sender2(void)&lt;br /&gt;
 {&lt;br /&gt;
   frame s;	/* buffer for an outbound frame */&lt;br /&gt;
   packet buffer;	/* buffer for an outbound packet */&lt;br /&gt;
   event_type event;	/* frame_arrival is the only possibility */&lt;br /&gt;
 &lt;br /&gt;
   while (true) {&lt;br /&gt;
         from_network_layer(&amp;amp;buffer);	/* go get something to send */&lt;br /&gt;
         s.info = buffer;	/* copy it into s for transmission */&lt;br /&gt;
         to_physical_layer(&amp;amp;s);	/* bye bye little frame */&lt;br /&gt;
         wait_for_event(&amp;amp;event);	/* do not proceed until given the go ahead */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void receiver2(void)&lt;br /&gt;
 {&lt;br /&gt;
   frame r, s;	/* buffers for frames */&lt;br /&gt;
   event_type event;	/* frame_arrival is the only possibility */&lt;br /&gt;
   while (true) {&lt;br /&gt;
         wait_for_event(&amp;amp;event);	/* only possibility is frame_arrival */&lt;br /&gt;
         from_physical_layer(&amp;amp;r);	/* go get the inbound frame */&lt;br /&gt;
         to_network_layer(&amp;amp;r.info);	/* pass the data to the network layer */&lt;br /&gt;
         to_physical_layer(&amp;amp;s);	/* send a dummy frame to awaken sender */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Симплексный протокол для замушлённых каналов ===&lt;br /&gt;
Теперь перестаём верить в идеальный канал, кадры могут теряться и искажаться (в том числе служебные). Проверку искажения кадра будем проводить уровнем ниже (сверять checksum). Чтобы обнаружить потерю кадра, запустим таймер и будем ждать подтверждение. Если подтверждения нет, а наступил таймаут, то кадр считаем потраченным и посылаем заново. Есть проблема: может потеряться подтверждение, в таком случае произойдёт дублирование кадра. Для этого добавим порядковый номер кадра и подтверждения. В этом случае принимающий будет знать, какой порядковый номер он ждёт, и игнорировать кадры с неправильным номером. Нетрудно понять, что для порядкового номера хватит одного бита.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /* Protocol 3 (par) allows unidirectional data flow over an unreliable channel. */&lt;br /&gt;
&lt;br /&gt;
 #define MAX_SEQ 1	/* must be 1 for protocol 3 */&lt;br /&gt;
 typedef enum  {frame_arrival, cksum_err, timeout} event_type;&lt;br /&gt;
 #include &amp;quot;protocol.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 void sender3(void)&lt;br /&gt;
 {&lt;br /&gt;
   seq_nr next_frame_to_send;	/* seq number of next outgoing frame */&lt;br /&gt;
   frame s;	/* scratch variable */&lt;br /&gt;
   packet buffer;	/* buffer for an outbound packet */&lt;br /&gt;
   event_type event;&lt;br /&gt;
&lt;br /&gt;
   next_frame_to_send = 0;	/* initialize outbound sequence numbers */&lt;br /&gt;
   from_network_layer(&amp;amp;buffer);	/* fetch first packet */&lt;br /&gt;
   while (true) {&lt;br /&gt;
         s.info = buffer;	/* construct a frame for transmission */&lt;br /&gt;
         s.seq = next_frame_to_send;	/* insert sequence number in frame */&lt;br /&gt;
         to_physical_layer(&amp;amp;s);	/* send it on its way */&lt;br /&gt;
         start_timer(s.seq);	/* if answer takes too long, time out */&lt;br /&gt;
         wait_for_event(&amp;amp;event);	/* frame_arrival, cksum_err, timeout */&lt;br /&gt;
         if (event == frame_arrival) {&lt;br /&gt;
                 from_physical_layer(&amp;amp;s);	/* get the acknowledgement */&lt;br /&gt;
                 if (s.ack == next_frame_to_send) {&lt;br /&gt;
                         from_network_layer(&amp;amp;buffer);	/* get the next one to send */&lt;br /&gt;
                         inc(next_frame_to_send);	/* invert next_frame_to_send */&lt;br /&gt;
                 }&lt;br /&gt;
         }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void receiver3(void)&lt;br /&gt;
 {&lt;br /&gt;
   seq_nr frame_expected;&lt;br /&gt;
   frame r, s;&lt;br /&gt;
   event_type event;&lt;br /&gt;
 &lt;br /&gt;
   frame_expected = 0;&lt;br /&gt;
   while (true) {&lt;br /&gt;
         wait_for_event(&amp;amp;event);	/* possibilities: frame_arrival, cksum_err */&lt;br /&gt;
         if (event == frame_arrival) {&lt;br /&gt;
                 /* A valid frame has arrived. */&lt;br /&gt;
                 from_physical_layer(&amp;amp;r);	/* go get the newly arrived frame */&lt;br /&gt;
                 if (r.seq == frame_expected) {&lt;br /&gt;
                        /* This is what we have been waiting for. */&lt;br /&gt;
                         to_network_layer(&amp;amp;r.info);	/* pass the data to the network layer */&lt;br /&gt;
                         inc(frame_expected);	/* next time expect the other sequence nr */&lt;br /&gt;
                 }&lt;br /&gt;
                 s.ack = 1 - frame_expected;	/* tell which frame is being acked */&lt;br /&gt;
                 to_physical_layer(&amp;amp;s);	/* only the ack field is use */&lt;br /&gt;
         }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Протоколы скользящего окна ===&lt;br /&gt;
Симплексные протоколы — это плохо, потому что данные хотим посылать в обе стороны, а если сделать два отдельных канала, то получится дороже. В случае с дуплексными протоколами в обе стороны могут ходить и обычные кадры, и служебные (ACK). В заголовке кадра будем хранить kind, чтобы различать типы кадров. Есть техника piggybacking: если мы хотим послать подтверждение и обычный кадр, то пошлём их вместе (подтверждение положим в поле ACK в заголовке кадра). В таком варианте нужно заводить отдельный таймер на тот случай, когда от нас ждут подтверждение, а мы не хотим посылать обычный кадр (в этом случае мы просто пошлём кадр с подтверждением). То есть, если нам пришло сообщение, то мы либо довольно скоро захотим сами что-то послать и приложим подтверждение, либо просто пошлём подтверждение по тику таймера.&lt;br /&gt;
&lt;br /&gt;
Следующие три протокола относятся к протоколам скользящего окна. Суть в том, чтобы хранить два окна (диапазона порядковых номеров кадров) — посылающее и принимающее. Окно хранит номера кадров, которые мы можем послать/принять. Когда сетевой уровень просит что-то послать, мы даём очередному кадру номер, равный верхней границе посылающего окна, и увеличиваем эту границу. При получении подтверждения увеличиваем нижнюю границу. При получении пакета из принимающего окна оно сдвигается на единицу. При получении пакета не из принимающего окна такой пакет игнорируется.&lt;br /&gt;
&lt;br /&gt;
Это всё общая идея, перейдём к конкретным реализациям.&lt;br /&gt;
&lt;br /&gt;
==== Однобитовое окно ====&lt;br /&gt;
Простейший вариант, когда размер окна равен единице. В этом случае после отправки одного пакета мы не будем отправлять следующий, пока не получим подтверждения о доставке первого.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /* Protocol 4 (sliding window) is bidirectional and is more robust than protocol 3. */&lt;br /&gt;
&lt;br /&gt;
 #define MAX_SEQ 1	/* must be 1 for protocol 4 */&lt;br /&gt;
 typedef enum {frame_arrival, cksum_err, timeout} event_type;&lt;br /&gt;
 #include &amp;quot;protocol.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 void protocol4 (void)&lt;br /&gt;
 {&lt;br /&gt;
   seq_nr next_frame_to_send;	/* 0 or 1 only */&lt;br /&gt;
   seq_nr frame_expected;	/* 0 or 1 only */&lt;br /&gt;
   frame r, s;	/* scratch variables */&lt;br /&gt;
   packet buffer;	/* current packet being sent */&lt;br /&gt;
   event_type event;&lt;br /&gt;
 &lt;br /&gt;
   next_frame_to_send = 0;	/* next frame on the outbound stream */&lt;br /&gt;
   frame_expected = 0;	/* number of frame arriving frame expected */&lt;br /&gt;
   from_network_layer(&amp;amp;buffer);	/* fetch a packet from the network layer */&lt;br /&gt;
   s.info = buffer;	/* prepare to send the initial frame */&lt;br /&gt;
   s.seq = next_frame_to_send;	/* insert sequence number into frame */&lt;br /&gt;
   s.ack = 1 - frame_expected;	/* piggybacked ack */&lt;br /&gt;
   to_physical_layer(&amp;amp;s);	/* transmit the frame */&lt;br /&gt;
   start_timer(s.seq);	/* start the timer running */&lt;br /&gt;
 &lt;br /&gt;
   while (true) {&lt;br /&gt;
         wait_for_event(&amp;amp;event);	/* could be: frame_arrival, cksum_err, timeout */&lt;br /&gt;
         if (event == frame_arrival) { /* a frame has arrived undamaged. */&lt;br /&gt;
                 from_physical_layer(&amp;amp;r);	/* go get it */&lt;br /&gt;
 &lt;br /&gt;
                 if (r.seq == frame_expected) {&lt;br /&gt;
                         /* Handle inbound frame stream. */&lt;br /&gt;
                         to_network_layer(&amp;amp;r.info);	/* pass packet to network layer */&lt;br /&gt;
                         inc(frame_expected);	/* invert sequence number expected next */&lt;br /&gt;
                 }&lt;br /&gt;
 &lt;br /&gt;
                 if (r.ack == next_frame_to_send) { /* handle outbound frame stream. */&lt;br /&gt;
                         from_network_layer(&amp;amp;buffer);	/* fetch new packet from network layer */&lt;br /&gt;
                         inc(next_frame_to_send);	/* invert sender's sequence number */&lt;br /&gt;
                 }&lt;br /&gt;
         }&lt;br /&gt;
              &lt;br /&gt;
         s.info = buffer;	/* construct outbound frame */&lt;br /&gt;
         s.seq = next_frame_to_send;	/* insert sequence number into it */&lt;br /&gt;
         s.ack = 1 - frame_expected;	/* seq number of last received frame */&lt;br /&gt;
         to_physical_layer(&amp;amp;s);	/* transmit a frame */&lt;br /&gt;
         start_timer(s.seq);	/* start the timer running */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Протоколы с возвратом на N ====&lt;br /&gt;
Если у нас есть большая пропускная способность, небольшие кадры и большое время прохождения сигнала, то пропускная способность будет использоваться очень слабо, так как большую часть времени мы будем ждать подтверждение, прежде чем посылать очередной кадр. Поэтому будем посылать сразу много кадров не дожидаясь доставки/потери предыдущего. Размер посылающего окна больше единицы (но ограничен какой-нибудь константой).&lt;br /&gt;
&lt;br /&gt;
Есть два подхода к обработке ошибок. Первый называется возвратом на N. Если с каким-то из посланных кадров случилась беда, то все остальные посланные кадры игнорируются, что соответствует единичному размеру входящего окна. Через какое-то время проигнорированные кадры будут перепосланы отправителем. Это плохо в ситуации, когда возможно большое количество ошибок.&lt;br /&gt;
&lt;br /&gt;
В реализации есть ещё одно нововведение: у сетевого уровня не всегда есть данные для передачи, поэтому он будет генерить событие, когда хочет что-то передавать. Также его можно выключить, чтобы он ничего не генерил, если у нас заполнено всё окно.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /* Protocol 5 (pipelining) allows multiple outstanding frames. The sender may transmit up&lt;br /&gt;
    to MAX_SEQ frames without waiting for an ack. In addition, unlike the previous protocols,&lt;br /&gt;
    the network layer is not assumed to have a new packet all the time. Instead, the&lt;br /&gt;
    network layer causes a network_layer_ready event when there is a packet to send. */&lt;br /&gt;
&lt;br /&gt;
 #define MAX_SEQ 7	/* should be 2^n - 1 */&lt;br /&gt;
 typedef enum {frame_arrival, cksum_err, timeout, network_layer_ready} event_type;&lt;br /&gt;
 #include &amp;quot;protocol.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 static boolean between(seq_nr a, seq_nr b, seq_nr c)&lt;br /&gt;
 {&lt;br /&gt;
 /* Return true if (a &amp;lt;=b &amp;lt; c circularly; false otherwise. */&lt;br /&gt;
   if (((a &amp;lt;= b) &amp;amp;&amp;amp; (b &amp;lt; c)) || ((c &amp;lt; a) &amp;amp;&amp;amp; (a &amp;lt;= b)) || ((b &amp;lt; c) &amp;amp;&amp;amp; (c &amp;lt; a)))&lt;br /&gt;
         return(true);&lt;br /&gt;
     else&lt;br /&gt;
         return(false);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 static void send_data(seq_nr frame_nr, seq_nr frame_expected, packet buffer[])&lt;br /&gt;
 {&lt;br /&gt;
 /* Construct and send a data frame. */&lt;br /&gt;
   frame s;	/* scratch variable */&lt;br /&gt;
 &lt;br /&gt;
   s.info = buffer[frame_nr];	/* insert packet into frame */&lt;br /&gt;
   s.seq = frame_nr;	/* insert sequence number into frame */&lt;br /&gt;
   s.ack = (frame_expected + MAX_SEQ) % (MAX_SEQ + 1);	/* piggyback ack */&lt;br /&gt;
   to_physical_layer(&amp;amp;s);	/* transmit the frame */&lt;br /&gt;
   start_timer(frame_nr);	/* start the timer running */&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void protocol5(void)&lt;br /&gt;
 {&lt;br /&gt;
   seq_nr next_frame_to_send;	/* MAX_SEQ &amp;gt; 1; used for outbound stream */&lt;br /&gt;
   seq_nr ack_expected;	/* oldest frame as yet unacknowledged */&lt;br /&gt;
   seq_nr frame_expected;	/* next frame expected on inbound stream */&lt;br /&gt;
   frame r;	/* scratch variable */&lt;br /&gt;
   packet buffer[MAX_SEQ+1];	/* buffers for the outbound stream */&lt;br /&gt;
   seq_nr nbuffered;	/* # output buffers currently in use */&lt;br /&gt;
   seq_nr i;	/* used to index into the buffer array */&lt;br /&gt;
   event_type event;&lt;br /&gt;
 &lt;br /&gt;
   enable_network_layer();	/* allow network_layer_ready events */&lt;br /&gt;
   ack_expected = 0;	/* next ack expected inbound */&lt;br /&gt;
   next_frame_to_send = 0;	/* next frame going out */&lt;br /&gt;
   frame_expected = 0;	/* number of frame expected inbound */&lt;br /&gt;
   nbuffered = 0;	/* initially no packets are buffered */&lt;br /&gt;
&lt;br /&gt;
   while (true) {&lt;br /&gt;
      wait_for_event(&amp;amp;event);	/* four possibilities: see event_type above */&lt;br /&gt;
 &lt;br /&gt;
      switch(event) { &lt;br /&gt;
         case network_layer_ready:	/* the network layer has a packet to send */&lt;br /&gt;
                 /* Accept, save, and transmit a new frame. */&lt;br /&gt;
                 from_network_layer(&amp;amp;buffer[next_frame_to_send]); /* fetch new packet */&lt;br /&gt;
                 nbuffered = nbuffered + 1;	/* expand the sender's window */&lt;br /&gt;
                 send_data(next_frame_to_send, frame_expected, buffer);	/* transmit the frame */&lt;br /&gt;
                 inc(next_frame_to_send);	/* advance sender's upper window edge */&lt;br /&gt;
                 break;&lt;br /&gt;
 &lt;br /&gt;
         case frame_arrival:	/* a data or control frame has arrived */&lt;br /&gt;
                 from_physical_layer(&amp;amp;r);	/* get incoming frame from physical layer */&lt;br /&gt;
   &lt;br /&gt;
                 if (r.seq == frame_expected) {&lt;br /&gt;
                         /* Frames are accepted only in order. */&lt;br /&gt;
                         to_network_layer(&amp;amp;r.info);	/* pass packet to network layer */&lt;br /&gt;
                         inc(frame_expected);	/* advance lower edge of receiver's window */&lt;br /&gt;
                  }&lt;br /&gt;
   &lt;br /&gt;
                  /* Ack n implies n - 1, n - 2, etc.  Check for this. */&lt;br /&gt;
                 while (between(ack_expected, r.ack, next_frame_to_send)) {&lt;br /&gt;
                         /* Handle piggybacked ack. */&lt;br /&gt;
                         nbuffered = nbuffered - 1;	/* one frame fewer buffered */&lt;br /&gt;
                         stop_timer(ack_expected);	/* frame arrived intact; stop timer */&lt;br /&gt;
                         inc(ack_expected);	/* contract sender's window */&lt;br /&gt;
                 }                &lt;br /&gt;
                 break;&lt;br /&gt;
 &lt;br /&gt;
         case cksum_err: ;	/* just ignore bad frames */&lt;br /&gt;
                 break;&lt;br /&gt;
   &lt;br /&gt;
         case timeout:	/* trouble; retransmit all outstanding frames */&lt;br /&gt;
                 next_frame_to_send = ack_expected;	/* start retransmitting here */&lt;br /&gt;
                 for (i = 1; i &amp;lt;= nbuffered; i++) {&lt;br /&gt;
                         send_data(next_frame_to_send, frame_expected, buffer);	/* resend 1 frame */&lt;br /&gt;
                         inc(next_frame_to_send);	/* prepare to send the next one */&lt;br /&gt;
                 }&lt;br /&gt;
      }&lt;br /&gt;
   &lt;br /&gt;
      if (nbuffered &amp;lt; MAX_SEQ)&lt;br /&gt;
         enable_network_layer(); &lt;br /&gt;
      else&lt;br /&gt;
         disable_network_layer();&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Протоколы с выборочным повтором ====&lt;br /&gt;
Второй вариант обработки ошибок называется выборочным повтором. Если потерялся/повредился кадр, то все следующие за ним получатель не игнорирует, а буферизует и шлёт на них подтверждения. Сломанный кадр будет перепослан, после чего получатель сможет восстановить нужную последовательность. Доставленные кадры перепосылать не потребуется.&lt;br /&gt;
&lt;br /&gt;
Также можно посылать отрицательное подтверждение (NAK), в этом случае отправитель перепошлёт потерянный кадр до истечения таймаута.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /* Protocol 6 (nonsequential receive) accepts frames out of order, but passes packets to the&lt;br /&gt;
    network layer in order. Associated with each outstanding frame is a timer. When the timer&lt;br /&gt;
    goes off, only that frame is retransmitted, not all the outstanding frames, as in protocol 5. */&lt;br /&gt;
 &lt;br /&gt;
 #define MAX_SEQ 7	/* should be 2^n - 1 */&lt;br /&gt;
 #define NR_BUFS ((MAX_SEQ + 1)/2)&lt;br /&gt;
 typedef enum {frame_arrival, cksum_err, timeout, network_layer_ready, ack_timeout} event_type;&lt;br /&gt;
 #include &amp;quot;protocol.h&amp;quot;&lt;br /&gt;
 boolean no_nak = true;	/* no nak has been sent yet */&lt;br /&gt;
 seq_nr oldest_frame = MAX_SEQ+1;	/* init value is for the simulator */&lt;br /&gt;
 &lt;br /&gt;
 static boolean between(seq_nr a, seq_nr b, seq_nr c)&lt;br /&gt;
 {&lt;br /&gt;
 /* Same as between in protocol5, but shorter and more obscure. */&lt;br /&gt;
   return ((a &amp;lt;= b) &amp;amp;&amp;amp; (b &amp;lt; c)) || ((c &amp;lt; a) &amp;amp;&amp;amp; (a &amp;lt;= b)) || ((b &amp;lt; c) &amp;amp;&amp;amp; (c &amp;lt; a));&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 static void send_frame(frame_kind fk, seq_nr frame_nr, seq_nr frame_expected, packet buffer[])&lt;br /&gt;
 {&lt;br /&gt;
 /* Construct and send a data, ack, or nak frame. */&lt;br /&gt;
   frame s;	/* scratch variable */&lt;br /&gt;
 &lt;br /&gt;
   s.kind = fk;	/* kind == data, ack, or nak */&lt;br /&gt;
   if (fk == data) s.info = buffer[frame_nr % NR_BUFS];&lt;br /&gt;
   s.seq = frame_nr;	/* only meaningful for data frames */&lt;br /&gt;
   s.ack = (frame_expected + MAX_SEQ) % (MAX_SEQ + 1);&lt;br /&gt;
   if (fk == nak) no_nak = false;	/* one nak per frame, please */&lt;br /&gt;
   to_physical_layer(&amp;amp;s);	/* transmit the frame */&lt;br /&gt;
   if (fk == data) start_timer(frame_nr % NR_BUFS);&lt;br /&gt;
   stop_ack_timer();	/* no need for separate ack frame */&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void protocol6(void)&lt;br /&gt;
 {&lt;br /&gt;
   seq_nr ack_expected;	/* lower edge of sender's window */&lt;br /&gt;
   seq_nr next_frame_to_send;	/* upper edge of sender's window + 1 */&lt;br /&gt;
   seq_nr frame_expected;	/* lower edge of receiver's window */&lt;br /&gt;
   seq_nr too_far;	/* upper edge of receiver's window + 1 */&lt;br /&gt;
   int i;	/* index into buffer pool */&lt;br /&gt;
   frame r;	/* scratch variable */&lt;br /&gt;
   packet out_buf[NR_BUFS];	/* buffers for the outbound stream */&lt;br /&gt;
   packet in_buf[NR_BUFS];	/* buffers for the inbound stream */&lt;br /&gt;
   boolean arrived[NR_BUFS];	/* inbound bit map */&lt;br /&gt;
   seq_nr nbuffered;	/* how many output buffers currently used */&lt;br /&gt;
   event_type event;&lt;br /&gt;
 &lt;br /&gt;
   enable_network_layer();	/* initialize */&lt;br /&gt;
   ack_expected = 0;	/* next ack expected on the inbound stream */&lt;br /&gt;
   next_frame_to_send = 0;	/* number of next outgoing frame */&lt;br /&gt;
   frame_expected = 0;	/* frame number expected */&lt;br /&gt;
   too_far = NR_BUFS;	/* receiver's upper window + 1 */&lt;br /&gt;
   nbuffered = 0;	/* initially no packets are buffered */&lt;br /&gt;
 &lt;br /&gt;
   for (i = 0; i &amp;lt; NR_BUFS; i++) arrived[i] = false;&lt;br /&gt;
   while (true) {&lt;br /&gt;
      wait_for_event(&amp;amp;event);	/* five possibilities: see event_type above */&lt;br /&gt;
      switch(event) { &lt;br /&gt;
         case network_layer_ready:	/* accept, save, and transmit a new frame */&lt;br /&gt;
                 nbuffered = nbuffered + 1;	/* expand the window */&lt;br /&gt;
                 from_network_layer(&amp;amp;out_buf[next_frame_to_send % NR_BUFS]); /* fetch new packet */&lt;br /&gt;
                 send_frame(data, next_frame_to_send, frame_expected, out_buf);	/* transmit the frame */&lt;br /&gt;
                 inc(next_frame_to_send);	/* advance upper window edge */&lt;br /&gt;
                 break;&lt;br /&gt;
&lt;br /&gt;
         case frame_arrival:	/* a data or control frame has arrived */&lt;br /&gt;
                 from_physical_layer(&amp;amp;r);	/* fetch incoming frame from physical layer */&lt;br /&gt;
                 if (r.kind == data) {&lt;br /&gt;
                         /* An undamaged frame has arrived. */&lt;br /&gt;
                         if ((r.seq != frame_expected) &amp;amp;&amp;amp; no_nak)&lt;br /&gt;
                             send_frame(nak, 0, frame_expected, out_buf); else start_ack_timer();&lt;br /&gt;
                         if (between(frame_expected, r.seq, too_far) &amp;amp;&amp;amp; (arrived[r.seq%NR_BUFS] == false)) {&lt;br /&gt;
                                 /* Frames may be accepted in any order. */&lt;br /&gt;
                                 arrived[r.seq % NR_BUFS] = true;	/* mark buffer as full */&lt;br /&gt;
                                 in_buf[r.seq % NR_BUFS] = r.info;	/* insert data into buffer */&lt;br /&gt;
                                 while (arrived[frame_expected % NR_BUFS]) {&lt;br /&gt;
                                         /* Pass frames and advance window. */&lt;br /&gt;
                                         to_network_layer(&amp;amp;in_buf[frame_expected % NR_BUFS]);&lt;br /&gt;
                                         no_nak = true;&lt;br /&gt;
                                         arrived[frame_expected % NR_BUFS] = false;&lt;br /&gt;
                                         inc(frame_expected);	/* advance lower edge of receiver's window */&lt;br /&gt;
                                         inc(too_far);	/* advance upper edge of receiver's window */&lt;br /&gt;
                                         start_ack_timer();	/* to see if (a separate ack is needed */&lt;br /&gt;
                                 }&lt;br /&gt;
                         }&lt;br /&gt;
                 }&lt;br /&gt;
                 if((r.kind==nak) &amp;amp;&amp;amp; between(ack_expected,(r.ack+1)%(MAX_SEQ+1),next_frame_to_send))&lt;br /&gt;
                         send_frame(data, (r.ack+1) % (MAX_SEQ + 1), frame_expected, out_buf);&lt;br /&gt;
 &lt;br /&gt;
                 while (between(ack_expected, r.ack, next_frame_to_send)) {&lt;br /&gt;
                         nbuffered = nbuffered - 1;	/* handle piggybacked ack */&lt;br /&gt;
                         stop_timer(ack_expected % NR_BUFS);	/* frame arrived intact */&lt;br /&gt;
                         inc(ack_expected);	/* advance lower edge of sender's window */&lt;br /&gt;
                 }&lt;br /&gt;
                 break;&lt;br /&gt;
 &lt;br /&gt;
         case cksum_err: if (no_nak) send_frame(nak, 0, frame_expected, out_buf); break;	/* damaged frame */&lt;br /&gt;
         case timeout: send_frame(data, oldest_frame, frame_expected, out_buf); break;	/* we timed out */&lt;br /&gt;
         case ack_timeout: send_frame(ack,0,frame_expected, out_buf);	/* ack timer expired; send ack */&lt;br /&gt;
      }&lt;br /&gt;
 &lt;br /&gt;
      if (nbuffered &amp;lt; NR_BUFS) enable_network_layer(); else disable_network_layer();&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верификация протоколов ===&lt;br /&gt;
Нам про это очень мало рассказывали.&lt;br /&gt;
&lt;br /&gt;
==== Конечные автоматы ====&lt;br /&gt;
Состояние процесса будет хранить в себе значения всех переменных в программе. Также будет состояние канала (какой кадр передаётся и передаётся ли). Множество переходов — все возможные переходы между состояниями вследствие каких-либо событий. Также пометим начальные состояния. Получим автомат, в котором можно анализировать достижимость различных состояний. Возможны следующие ошибки:&lt;br /&gt;
* состояние, в котором нельзя определить, куда переходить (неполнота протокола)&lt;br /&gt;
* состояние, из которого нет выхода (тупик)&lt;br /&gt;
* состояние с переходом по событию, которое никогда не может произойти (лишний переход).&lt;br /&gt;
&lt;br /&gt;
Анализ достижимости позволяет обнаружить такие проблемы.&lt;br /&gt;
&lt;br /&gt;
==== Сети Петри ====&lt;br /&gt;
Нам про это два слова сказали, так что вряд ли понадобится. Есть в Таненбауме, если очень нужно.&lt;br /&gt;
&lt;br /&gt;
== Контроль и исправление ошибок ==&lt;br /&gt;
&lt;br /&gt;
== Мосты ==&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2&amp;diff=83512</id>
		<title>Теория формальных языков</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2&amp;diff=83512"/>
				<updated>2022-09-01T05:04:42Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
&lt;br /&gt;
Символом &amp;lt;tex&amp;gt; \star &amp;lt;/tex&amp;gt; помечены дополнительные темы (возможно, сложные), которые не были подробно рассмотрены (или вообще рассмотрены) в рамках курса.&lt;br /&gt;
== Автоматы и регулярные языки ==&lt;br /&gt;
=== Регулярные языки и ДКА ===&lt;br /&gt;
*[[Основные определения: алфавит, слово, язык, конкатенация, свободный моноид слов; операции над языками]]&lt;br /&gt;
*[[Регулярные языки: два определения и их эквивалентность | Регулярные языки: два определения и их эквивалентность, регулярные выражения]]&lt;br /&gt;
*[[Детерминированные конечные автоматы]]&lt;br /&gt;
*[[Прямое произведение ДКА]]&lt;br /&gt;
*[[Преобразование регулярного выражения в ДКА]]&lt;br /&gt;
*[[Простой сопоставитель регулярных выражений]] &amp;lt;tex&amp;gt; \star &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== НКА ===&lt;br /&gt;
*[[Недетерминированные конечные автоматы]]&lt;br /&gt;
*[[Построение по НКА эквивалентного ДКА, алгоритм Томпсона]]&lt;br /&gt;
*[[Автоматы с eps-переходами. Eps-замыкание]]&lt;br /&gt;
*[[Теорема Клини (совпадение классов автоматных и регулярных языков)]]&lt;br /&gt;
*[[Альтернативное доказательство теоремы Клини (через систему уравнений в регулярных выражениях)]]&lt;br /&gt;
=== Минимизация ДКА ===&lt;br /&gt;
*[[Эквивалентность состояний ДКА]]&lt;br /&gt;
*[[Минимизация ДКА, алгоритм за O(n^2) с построением пар различимых состояний]]&lt;br /&gt;
*[[Минимизация ДКА, алгоритм Хопкрофта (сложность O(n log n))]]&lt;br /&gt;
*[[Алгоритм Бржозовского]]&amp;lt;tex&amp;gt; ^\star &amp;lt;/tex&amp;gt;&lt;br /&gt;
=== Свойства конечных автоматов ===&lt;br /&gt;
*[[Доказательство нерегулярности языков: лемма о разрастании]]&lt;br /&gt;
*[[Интерпретация булевых формул с кванторами как игр для двух игроков]]&lt;br /&gt;
*[[Решение уравнений в регулярных выражениях]]&lt;br /&gt;
*[[Замкнутость регулярных языков относительно различных операций]]&lt;br /&gt;
*[[Анализ свойств регулярных языков (пустота, совпадение, включение, конечность, подсчет числа слов)]]&lt;br /&gt;
*[[Контексты и синтаксические моноиды]]&lt;br /&gt;
*[[Булевые формулы с кванторами как игры для двух игроков]]&lt;br /&gt;
&lt;br /&gt;
=== Другие автоматы ===&lt;br /&gt;
*[[Локальные автоматы]]&amp;lt;tex&amp;gt; ^\star &amp;lt;/tex&amp;gt;&lt;br /&gt;
*[[Двусторонний детерминированный конечный автомат]]&amp;lt;tex&amp;gt; ^\star &amp;lt;/tex&amp;gt;&lt;br /&gt;
*[[Квантовые конечные автоматы]]&amp;lt;tex&amp;gt; ^\star &amp;lt;/tex&amp;gt;&lt;br /&gt;
*[[Автоматы Мура и Мили]]&amp;lt;tex&amp;gt; ^\star &amp;lt;/tex&amp;gt;&lt;br /&gt;
*[[Автоматы в современном мире]]&amp;lt;tex&amp;gt; ^\star &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Контекстно-свободные грамматики ==&lt;br /&gt;
=== Базовые понятия о грамматиках ===&lt;br /&gt;
*[[Формальные грамматики]]&lt;br /&gt;
*[[Иерархия Хомского формальных грамматик]]&lt;br /&gt;
*[[Неукорачивающие и контекстно-зависимые грамматики, эквивалентность]]&lt;br /&gt;
*[[Правоконтекстные грамматики, эквивалентность автоматам]]&lt;br /&gt;
*[[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора]]&lt;br /&gt;
*[[Замкнутость КС-языков относительно различных операций]]&lt;br /&gt;
*[[Регулярная аппроксимация КС-языков]]&amp;lt;tex&amp;gt; ^\star &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Нормальные формы КС-грамматик ===&lt;br /&gt;
*[[Удаление бесполезных символов из грамматики]]&lt;br /&gt;
*[[Удаление длинных правил из грамматики]]&lt;br /&gt;
*[[Удаление eps-правил из грамматики]]&lt;br /&gt;
*[[Удаление цепных правил из грамматики]]&lt;br /&gt;
*[[Нормальная форма Хомского]]&lt;br /&gt;
*[[Устранение левой рекурсии]]&lt;br /&gt;
*[[Приведение грамматики к ослабленной нормальной форме Грейбах]]&lt;br /&gt;
*[[Нормальная форма Куроды]]&amp;lt;tex&amp;gt; ^\star &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы разбора ===&lt;br /&gt;
*[[Алгоритм Кока-Янгера-Касами разбора грамматики в НФХ]]&lt;br /&gt;
*[[Алгоритм Кока-Янгера-Касами, модификация для произвольной грамматики]]&lt;br /&gt;
*[[Алгоритм Эрли]]&lt;br /&gt;
*[[Алгоритм Эрли, доказательство оценки O(n^2) для однозначной грамматики]]&lt;br /&gt;
&lt;br /&gt;
=== Опровержение контекстно-свободности языка ===&lt;br /&gt;
*[[Лемма о разрастании для КС-грамматик]]&lt;br /&gt;
*[[Лемма Огдена]]&lt;br /&gt;
*[[Существенно неоднозначные языки]]&lt;br /&gt;
*[[Теорема Парика]]&amp;lt;tex&amp;gt; ^\star &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== МП-автоматы ===&lt;br /&gt;
*[[Автоматы с магазинной памятью]]&lt;br /&gt;
*[[МП-автоматы, допуск по пустому стеку и по допускающему состоянию, эквивалентность]]&lt;br /&gt;
*[[Совпадение множества языков МП-автоматов и контекстно-свободных языков]]&lt;br /&gt;
*[[Детерминированные автоматы с магазинной памятью]]&lt;br /&gt;
*[[Детерминированные автоматы с магазинной памятью, допуск по пустому стеку]]&lt;br /&gt;
*[[Нормальная форма ДМП-автомата]]&amp;lt;tex&amp;gt; ^\star &amp;lt;/tex&amp;gt;&lt;br /&gt;
*[[Эквивалентность ДМП-автоматов]]&amp;lt;tex&amp;gt; ^\star &amp;lt;/tex&amp;gt;&lt;br /&gt;
*[[Несовпадение класса языков, распознаваемых ДМП автоматами и произвольными МП автоматами]]&lt;br /&gt;
*[[ДМП-автоматы и неоднозначность]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B8%D0%BE%D0%B4%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5&amp;diff=83511</id>
		<title>Периодическое состояние</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B8%D0%BE%D0%B4%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5&amp;diff=83511"/>
				<updated>2022-09-01T05:04:33Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Категория: Удалить]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%B3_tex&amp;diff=83510</id>
		<title>Тег tex</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%B3_tex&amp;diff=83510"/>
				<updated>2022-09-01T05:04:26Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
На этой вики в тестовом режиме работает расширение, основанное на [https://www.mediawiki.org/wiki/Extension:SimpleMathJax SimpleMathJax], поддерживающий тег &amp;lt;tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Текст внутри тега воспринимается как включенная формула в LaTeX-документе, с подключенными всем пакетами от MathJax.&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%90%D0%B4%D0%B0%D0%BC%D0%B0%D1%80%D0%B0_%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D1%8F%D1%89%D0%B8%D1%85_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9&amp;diff=83509</id>
		<title>Произведение Адамара рациональных производящих функций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%90%D0%B4%D0%B0%D0%BC%D0%B0%D1%80%D0%B0_%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D1%8F%D1%89%D0%B8%D1%85_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9&amp;diff=83509"/>
				<updated>2022-09-01T05:04:20Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Одно из наиболее привлекательных свойств рациональных [[Производящая функция|производящих функций]] {{---}} их замкнутость относительно произведения Адамара.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition = '''Произведением Адамара''' (англ. ''Hadamard product'') производящих функций &amp;lt;tex&amp;gt;A(s) = a_0 + a_1 s + a_2 s^2 + \dots&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B(s) = b_0 + b_1 s + b_2 s^2 + \dots&amp;lt;/tex&amp;gt; называется производящая функция &amp;lt;tex&amp;gt;A(s) \circ B(s) = (a_0  b_0) + (a_1  b_1) s + (a_2  b_2) s^2 + \dots&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
Таким образом, произведение Адамара двух последовательностей {{---}} это последовательность, состоящая из почленных произведений соответственных членов этих последовательностей. Необходимость в производящей функции для произведения Адамара уже встречалась: в [[Задача о счастливых билетах|задаче о числе счастливых билетов]] нам понадобилось вычислить сумму квадратов коэффициентов производящего многочлена &amp;lt;tex&amp;gt;A_3&amp;lt;/tex&amp;gt;. Эта необходимость возникает при перечислении пар объектов одинакового порядка: если число объектов первого типа равно &amp;lt;tex&amp;gt;a_n&amp;lt;/tex&amp;gt;, а число объектов второго типа &amp;lt;tex&amp;gt;b_n&amp;lt;/tex&amp;gt; то число пар объектов, составленных из элементов первого и второго типа, равно &amp;lt;tex&amp;gt;a_n b_n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Рациональность произведения Адамара==&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=lemma1&lt;br /&gt;
|statement=Производящая функция для последовательности &amp;lt;tex&amp;gt;a_0, a_1,&lt;br /&gt;
 a_2, \dots&amp;lt;/tex&amp;gt; рациональна тогда и только тогда, когда существуют такие числа &amp;lt;tex&amp;gt;q_1, \dots, q_l&amp;lt;/tex&amp;gt; и такие многочлены &amp;lt;tex&amp;gt;p_1(n),&lt;br /&gt;
 \dots, p_l(n)&amp;lt;/tex&amp;gt;, что начиная с некоторого номера &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; &lt;br /&gt;
&amp;lt;tex&amp;gt;a_n = p_1(n) q_1^n + \dots + p_l(n) q_l^n.&amp;lt;/tex&amp;gt;&lt;br /&gt;
Выражение в правой части равенства называется '''квазимногочленом''' (англ. ''quasypolynomial'') от переменной &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим прежде всего, что производящая функция &amp;lt;tex&amp;gt;(1 - q s)^{-k}&amp;lt;/tex&amp;gt; имеет вид&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;(1 - q s)^{-k} = 1 - \begin{pmatrix} -k \\ 1 \end{pmatrix} q s + \begin{pmatrix} -k \\ 2 \end{pmatrix} q^{2} s^{2} - \begin{pmatrix} -k \\ 3 \end{pmatrix} q^{3} s^{3} + \dots = &amp;lt;/tex&amp;gt;&lt;br /&gt;
:::&amp;lt;tex&amp;gt; = 1+ \begin{pmatrix} k \\ 1 \end{pmatrix} q s + \begin{pmatrix} k+1 \\ 2 \end{pmatrix} q^{2} s^{2} + \begin{pmatrix} k+2 \\ 3 \end{pmatrix} q^{3} s^{3} + \dots =&amp;lt;/tex&amp;gt;&lt;br /&gt;
:::&amp;lt;tex&amp;gt; = 1 + \begin{pmatrix} k \\ k-1 \end{pmatrix} q s + \begin{pmatrix} k+1 \\ k-1 \end{pmatrix} q^{2} s^{2} + \begin{pmatrix} k+2 \\ k-1 \end{pmatrix}q^{3} s^{3} + \dots&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Коэффициент при &amp;lt;tex&amp;gt;s^n&amp;lt;/tex&amp;gt; в этой производящей функции равен&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\dfrac{(n + 1)(n + 2)\dots(n + k - 1)}{(k - 1)!} q^{n} = P_{k - 1}(n) q^{n}&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
где &amp;lt;tex&amp;gt;P_{k - 1}(n)&amp;lt;/tex&amp;gt; {{---}} многочлен от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; степени &amp;lt;tex&amp;gt;k - 1&amp;lt;/tex&amp;gt;. Всякая рациональная функция от переменной &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; представляется в виде линейной комбинации многочлена и элементарных дробей вида &amp;lt;tex&amp;gt;(1 - q_i s)^{-k_i}&amp;lt;/tex&amp;gt;, поэтому коэффициенты соответствующей производящей функции являются квазимногочленами.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Leftarrow&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наоборот, предположим, что коэффициенты производящей функции, начиная с некоторого номера, представляются в виде квазимногочлена. Покажем, что в случае квазимногочлена &amp;lt;tex&amp;gt;p(n) q^{n}&amp;lt;/tex&amp;gt; соответствующая производящая функция рациональна. Пусть степень многочлена &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; равна &amp;lt;tex&amp;gt;k - 1&amp;lt;/tex&amp;gt;. Многочлены &amp;lt;tex&amp;gt;P_0, P_1, \dots, P_{k - 1}&amp;lt;/tex&amp;gt;, определенные равенством &amp;lt;tex&amp;gt;\dfrac{(n + 1)(n + 2)\dots(n + k - 1)}{(k - 1)!} q^{n} = P_{k - 1}(n) q^{n}&amp;lt;/tex&amp;gt;, образуют базис в пространстве многочленов степени не выше &amp;lt;tex&amp;gt; k - 1&amp;lt;/tex&amp;gt;. Действительно, любая последовательность многочленов степеней &amp;lt;tex&amp;gt;0, 1, \dots, k - 1&amp;lt;/tex&amp;gt; образует базис в этом пространстве. Поэтому многочлен &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; представляется в виде линейной комбинации многочленов &amp;lt;tex&amp;gt;P_i&amp;lt;/tex&amp;gt; и соответствующая производящая функция есть просто линейная комбинация функций &amp;lt;tex&amp;gt;(1 - q s)^{-j}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;j = 0, 1, \dots, k - 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Для произвольного квазимногочлена мы получаем линейную комбинацию функций такого вида при разных &amp;lt;tex&amp;gt;q_i&amp;lt;/tex&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement= Предположим, что производящие функции для последовательностей &amp;lt;tex&amp;gt;a_0, a_1, a_2, \dots&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b_0, b_1, b_2, \dots&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A(s) = a_0 + a_1 s + a_2 s^2 + \dots&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B(s) = b_0 + b_1 s + b_2 s^2 + \dots&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
являются рациональными. Значит производящая функция для их произведения Адамара &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A(s) \circ B(s) = (a_0  b_0) + (a_1  b_1) s + (a_2  b_2) s^2 + \dots&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
является тоже рациональной. Проще говоря, произведение Адамара двух рациональных производящих функций рационально.&lt;br /&gt;
&lt;br /&gt;
|proof= Для доказательства теоремы осталось заметить, что произведение квазимногочленов является квазимногочленом. Это утверждение непосредственно вытекает из формулы &amp;lt;tex&amp;gt;a_n = p_1(n) q_1^n + \dots + p_l(n) q_l^n&amp;lt;/tex&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
== Примеры применения теоремы ==&lt;br /&gt;
{{Задача&lt;br /&gt;
|definition = Представьте в виде квазимногочлена коэффициент производящей функции &amp;lt;tex&amp;gt;A(s)=\dfrac{1 + 2s}{(1 - 2s)(1 + 3s)}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
Разобьем дробь на сумму простых дробей: &amp;lt;tex&amp;gt;A(s)=\dfrac{1 + 2s}{(1 - 2s)(1 + 3s)}=\dfrac{1/5}{1 + 3s} + \dfrac{4/5}{1 - 2s}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Воспользуемся результатом [[#lemma1|леммы]]: коэффициент при &amp;lt;tex&amp;gt;s^n&amp;lt;/tex&amp;gt; равен &amp;lt;tex&amp;gt;\dfrac{(n + 1)(n + 2)\dots(n + k - 1)}{(k - 1)!} q^{n}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для первой дроби &amp;lt;tex&amp;gt;k = 1,\, q = -3&amp;lt;/tex&amp;gt;, для второй: &amp;lt;tex&amp;gt;k = 1,\, q = 2&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;a_{n} = \dfrac{1}{5} \cdot \dfrac{1}{(1 - 1)!} (-3)^{n} + \dfrac{4}{5} \cdot \dfrac{1}{(1 - 1)!} (2)^{n} =&lt;br /&gt;
\dfrac{(-3)^{n}}{5} + \dfrac{4}{5} \cdot 2^{n} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Задача&lt;br /&gt;
|definition = Представьте в виде квазимногочлена коэффициент производящей функции &amp;lt;tex&amp;gt;A(s)=\dfrac{s^2}{(1 - 2s)^{2}(1 + s)(1 - s)}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
Разобьем на сумму простых дробей: &amp;lt;tex&amp;gt;A(s)=\dfrac{s^2}{(1 - 2s)^{2}(1 + s)(1 - s)} = \dfrac{1/18}{1 + s} + \dfrac{-8/9}{1 - 2s} + \dfrac{1/3}{(1 - 2s)^2} + \dfrac{1/2}{1 - s}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Первая дробь: &amp;lt;tex&amp;gt;k = 1,\, q = -1&amp;lt;/tex&amp;gt;, вторая: &amp;lt;tex&amp;gt;k = 1,\, q = 2&amp;lt;/tex&amp;gt;, третья: &amp;lt;tex&amp;gt;k = 2,\, q = 2&amp;lt;/tex&amp;gt;, четвертая: &amp;lt;tex&amp;gt;k = 1,\, q = 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда, используя лемму, получаем, что &amp;lt;tex&amp;gt;a_{n} = \dfrac{(-1)^n}{18} - \dfrac{8}{9} \cdot 2^n + \dfrac{n + 1}{(2 - 1)!} \cdot 2^n + \dfrac{1}{2}\cdot 1^n = \left(n + \dfrac{1}{9}\right) \cdot 2^n + (-1)^{n}\dfrac{1}{18} + \dfrac{1}{2}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Производящая функция]]&lt;br /&gt;
* [[Задача о счастливых билетах]]&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
* ''Ландо С. К.'', Лекции о производящих функциях. {{---}} 3-е изд., испр. {{---}} М.: МЦНМО, 2007. {{---}} 26с. ISBN 978-5-94057-042-4&lt;br /&gt;
* [[wikipedia:en:Generating function transformation | Wikipedia {{---}} Generating function transformation]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Opij1Cmax&amp;diff=83508</id>
		<title>Opij1Cmax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Opij1Cmax&amp;diff=83508"/>
				<updated>2022-09-01T05:04:14Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;200&amp;quot;&amp;gt;O \mid p_{ij} = 1 \mid C_{max}&amp;lt;/tex&amp;gt;&lt;br /&gt;
{{Задача&lt;br /&gt;
|definition = Дано &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; одинаковых станков, которые работают параллельно и &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; работ, котороые необходимо выполнить в произвольном порядке на всех станках. Время выполнения каждой работы на любом станке одинаково и равно 1. Необходимо минимизировать время выполнения всех работ.&lt;br /&gt;
}}&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
&lt;br /&gt;
===Описание алгоритма===&lt;br /&gt;
Минимальное значение &amp;lt;tex&amp;gt; C_{max} &amp;lt;/tex&amp;gt; упирается в следующие ограничения:&lt;br /&gt;
# В допустимом расписании на каждом станке надо обработать каждую работу, поэтому &amp;lt;tex&amp;gt; C_{max} \geqslant  n &amp;lt;/tex&amp;gt;.&lt;br /&gt;
# В допустимом расписании каждую работу нужно обработать на всех станках, причем ее нельзя обрабатывать на двух станках одновременно, поэтому &amp;lt;tex&amp;gt; C_{max} \geqslant m &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt; C_{max} = \max{(m, n)} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
В случае &amp;lt;tex&amp;gt; n \geqslant m &amp;lt;/tex&amp;gt; оптимальное расписание строится циклическими сдвигами последовательности &amp;lt;tex&amp;gt; 1 \dots n &amp;lt;/tex&amp;gt; и выглядит следующим образом:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!              &lt;br /&gt;
!| &amp;lt;tex&amp;gt;\textbf1&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;\textbf2&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;\textbf3&amp;lt;/tex&amp;gt; ||&amp;lt;tex&amp;gt;\bf{\cdots}&amp;lt;/tex&amp;gt;|| &amp;lt;tex&amp;gt;\textbf{n - 1}&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;\textbf{n}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
!&amp;lt;tex&amp;gt;\bf{M_1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|| &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt; ||&amp;lt;tex&amp;gt;\cdots&amp;lt;/tex&amp;gt;|| &amp;lt;tex&amp;gt;n - 1&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
!&amp;lt;tex&amp;gt;\bf{M_2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|| &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; ||&amp;lt;tex&amp;gt;\cdots&amp;lt;/tex&amp;gt;|| &amp;lt;tex&amp;gt;n - 2&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;n - 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
!&amp;lt;tex&amp;gt;\bf{M_3}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|| &amp;lt;tex&amp;gt;n - 1&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; ||&amp;lt;tex&amp;gt;\cdots&amp;lt;/tex&amp;gt;|| &amp;lt;tex&amp;gt;n - 3&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;n - 2&amp;lt;/tex&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
!&amp;lt;tex&amp;gt;\bf{\vdots}&amp;lt;/tex&amp;gt;             &lt;br /&gt;
||&amp;lt;tex&amp;gt;\vdots&amp;lt;/tex&amp;gt;||&amp;lt;tex&amp;gt;\vdots&amp;lt;/tex&amp;gt;||&amp;lt;tex&amp;gt;\vdots&amp;lt;/tex&amp;gt;||&amp;lt;tex&amp;gt;\ddots&amp;lt;/tex&amp;gt;||&amp;lt;tex&amp;gt;\vdots&amp;lt;/tex&amp;gt;||&amp;lt;tex&amp;gt;\vdots&amp;lt;/tex&amp;gt; &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
!&amp;lt;tex&amp;gt;\bf{M_m}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|| &amp;lt;tex&amp;gt;n - m + 2&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;n - m + 3&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;n - m + 4&amp;lt;/tex&amp;gt; ||&amp;lt;tex&amp;gt;\cdots&amp;lt;/tex&amp;gt;|| &amp;lt;tex&amp;gt;n - m&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;n - m + 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Если же &amp;lt;tex&amp;gt; n &amp;lt; m &amp;lt;/tex&amp;gt;, добавим &amp;lt;tex&amp;gt; m - n &amp;lt;/tex&amp;gt; фиктивных работ с номерами &amp;lt;tex&amp;gt; n + 1 \dots m &amp;lt;/tex&amp;gt;, построим расписание способом выше и удалим из полученного расписания фиктивные работы.&lt;br /&gt;
&lt;br /&gt;
===Оценка сложности алгоритма===&lt;br /&gt;
Минимальное значение &amp;lt;tex&amp;gt; C_{max} &amp;lt;/tex&amp;gt; вычисляется за &amp;lt;tex&amp;gt; \mathcal{O}(1) &amp;lt;/tex&amp;gt; времени.&lt;br /&gt;
Построение расписания сводится к заполнению матрицы размером &amp;lt;tex&amp;gt; m \times \max{(m, n)} &amp;lt;/tex&amp;gt; и выполняется за &amp;lt;tex&amp;gt; \mathcal{O}(m \dot (m + n)) &amp;lt;/tex&amp;gt; времени.&lt;br /&gt;
&lt;br /&gt;
==См. также.==&lt;br /&gt;
* [[Методы решения задач теории расписаний]]&lt;br /&gt;
* [[O2Cmax|&amp;lt;tex&amp;gt; O2 \mid \mid C_{max} &amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[QpmtnCmax|&amp;lt;tex&amp;gt; Q \mid pmtn \mid C_{max} &amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[Opij1Sumwc|&amp;lt;tex&amp;gt; O \mid p_{ij} = 1 \mid \sum w_i C_i &amp;lt;/tex&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Теория расписаний]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D1%83%D0%BC_%D0%BF%D0%BE_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC%D1%83_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D1%83_%D0%B7%D0%B0_5_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80&amp;diff=83507</id>
		<title>Теоретический минимум по функциональному анализу за 5 семестр</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D1%83%D0%BC_%D0%BF%D0%BE_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC%D1%83_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D1%83_%D0%B7%D0%B0_5_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80&amp;diff=83507"/>
				<updated>2022-09-01T05:04:09Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= 1 Определение МП, замыкание в МП. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=defms&lt;br /&gt;
|definition=&lt;br /&gt;
Для некоторого множества &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, отображение &amp;lt;tex&amp;gt; \rho : X \times X \to \mathbb{R^+} &amp;lt;/tex&amp;gt; {{---}} называется '''метрикой''' на &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, если выполняются аксиомы&lt;br /&gt;
# &amp;lt;tex&amp;gt; \rho (x, y) \ge 0 ;\ \rho (x, y) = 0  \iff x = y &amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt; \rho (x, y) = \rho (y, x) &amp;lt;/tex&amp;gt; &lt;br /&gt;
# &amp;lt;tex&amp;gt; \rho (x, y) \le \rho (x, z) + \rho (z, y) &amp;lt;/tex&amp;gt; {{---}} неравенство треугольника&lt;br /&gt;
&lt;br /&gt;
Пару &amp;lt;tex&amp;gt;(X, \rho)&amp;lt;/tex&amp;gt; называют '''метрическим пространством'''.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=defint&lt;br /&gt;
|definition=&lt;br /&gt;
'''Замыканием (closure)''' множества &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; называется множество &amp;lt;tex&amp;gt;\mathrm{Cl} A = \bigcap\limits_{A \subset F } F&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; F &amp;lt;/tex&amp;gt; — замкнутые множества.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 2 Принцип вложенных шаров в полном МП. =&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|about=&lt;br /&gt;
принцип вложенных шаров&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;(X, \rho)&amp;lt;/tex&amp;gt; — полное. &amp;lt;tex&amp;gt;\overline V_n&amp;lt;/tex&amp;gt; — замкнутые шары. &amp;lt;tex&amp;gt;\overline V_{n + 1} \subset \overline V_n&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;r_n \to 0&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\bigcap\limits_{n=1}^{\infty} \overline V_n \ne \varnothing&amp;lt;/tex&amp;gt;, и состоит из одной точки.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 3 Теорема Бэра о категориях. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Подмножество &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; топологического пространства &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; имеет '''I категорию по Бэру в пространстве &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;''', если оно является не более чем счетным объединением нигде не плотных в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; множеств. В противном случае оно имеет '''II категорию по Бэру'''.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Бэр&lt;br /&gt;
|statement=&lt;br /&gt;
Полное МП является множеством II категории в себе.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 4 Критерий компактности Хаусдорфа в МП. =&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Хаусдорф&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; {{---}} полное метрическое пространство, &amp;lt;tex&amp;gt;K \subset X&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;K&amp;lt;/tex&amp;gt; {{---}} замкнуто. &lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;K&amp;lt;/tex&amp;gt; {{---}} компакт &amp;lt;tex&amp;gt;\iff&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;K&amp;lt;/tex&amp;gt; {{---}} вполне ограниченно.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 5 Пространство &amp;lt;tex&amp;gt;R^{\infty}&amp;lt;/tex&amp;gt; : метрика, покоординатная сходимость. =&lt;br /&gt;
* &amp;lt;tex&amp;gt;X = \mathbb{R}^{\infty}&amp;lt;/tex&amp;gt;. Превращение в МП должно быть связано с желаемой операцией предельного перехода. В случае конечномерного пространства сходимость совпадает с покоординатной сходимостью, хотим того же самого для бесконечномерного. Введем метрику: &amp;lt;tex&amp;gt;\rho(\overline x, \overline y) = \sum\limits_{n = 1}^{\infty} {1 \over 2^n}{|x_n - y_n| \over 1 + |x_n - y_n|}&amp;lt;/tex&amp;gt; (стандартный способ превратить в метрическое пространство счетное произведение метрических пространств, коим и является &amp;lt;tex&amp;gt;R^{\infty}&amp;lt;/tex&amp;gt;). Проверим, что эта метрика удовлетворяет аксиомам:&lt;br /&gt;
** этот ряд всегда сходящийся, так как мажорируется убывающей геометрической прогрессией &amp;lt;tex&amp;gt;\sum\limits_{n=1}^{\infty} {1 \over 2^n} = 1&amp;lt;/tex&amp;gt;, соответственно, расстояние ограничено единицей.&lt;br /&gt;
** первая аксиома: неотрицательность очевидна, равенство метрики нулю в обе стороны очевидно&lt;br /&gt;
** вторая аксиома: еще очевиднее&lt;br /&gt;
** третья аксиома легко вытекает из следующего утверждения:&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&amp;lt;tex&amp;gt; {|x - z| \over 1 + |x - z|} \le {|x - y| \over 1 + |x - y|} + {|y - z| \over 1 + |y - z|}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=Сходимость в метрике &amp;lt;tex&amp;gt; \mathbb{R}^{\infty} &amp;lt;/tex&amp;gt; эквивалентна покоординатной. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 6 Норма в линейном множестве, определение предела по норме, арифметика предела. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Функция &amp;lt;tex&amp;gt;\| \cdot \|: L \to \mathbb{R}&amp;lt;/tex&amp;gt; называется нормой в пространстве &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, если для нее выполняется:&lt;br /&gt;
# &amp;lt;tex&amp;gt;\forall x \in L: \| x \| \ge 0&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\| x \| = 0 \iff x = \mathrm{0}&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\forall \alpha \in \mathbb{R}\ \forall x \in L: \| \alpha x \| = |\alpha |\| x \|&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\forall x, y \in L: \| x + y \| \le \| x \| + \| y \|&amp;lt;/tex&amp;gt;&lt;br /&gt;
Пространство с введенной на нем нормой называют '''нормированным пространством'''.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
В нормированных пространствах определение предела записывается аналогично пределу вещественной последовательности, отличаясь лишь заменой знака модуля на знак нормы.&lt;br /&gt;
&lt;br /&gt;
Например, если &amp;lt;tex&amp;gt;E \subset X&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; — предельная точка множества &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;f \colon E \to Y&amp;lt;/tex&amp;gt; (где &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; — нормированные пространства), то &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; называется пределом функции &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; при &amp;lt;tex&amp;gt;x \to a&amp;lt;/tex&amp;gt; и обозначается &amp;lt;tex&amp;gt;\lim\limits_{x \to a} f(x)&amp;lt;/tex&amp;gt;, если для любого положительного &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; найдётся &amp;lt;tex&amp;gt;\delta &amp;gt; 0&amp;lt;/tex&amp;gt;, для которого выполняется следствие &amp;lt;tex&amp;gt;0 &amp;lt; \|x - a\| &amp;lt; \delta \implies \|f(x) - A\| &amp;lt; \varepsilon&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Специфика нормированных пространств — структура линейного пространства на рассматриваемом множестве. То есть, точки пространства можно складывать и умножать на числа, и эти операции будут непрерывными по норме пространства.&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;x_n&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;y_n&amp;lt;/tex&amp;gt; — последовательности точек нормированного пространства &amp;lt;tex&amp;gt;(X, \|\cdot\|)&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;\alpha_n&amp;lt;/tex&amp;gt; — вещественная последовательность. Известно, что &amp;lt;tex&amp;gt;x_n \to x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;y_n \to y&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\alpha_n \to \alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда:&lt;br /&gt;
# &amp;lt;tex&amp;gt;x_n + y_n \to x + y&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\alpha_n x_n \to \alpha x&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\|x_n\| \to \|x\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 7 Эквивалентность норм в конечномерном НП. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Нормы &amp;lt;tex&amp;gt;\| \|_1&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\| \|_2&amp;lt;/tex&amp;gt; '''эквивалентны''', если существуют константы &amp;lt;tex&amp;gt;m, M &amp;gt; 0&amp;lt;/tex&amp;gt; такие, что &amp;lt;tex&amp;gt;\forall x: m\|x\|_2 \le \|x\|_1 \le M \|x\|_2&amp;lt;/tex&amp;gt;. Очевидно, что отношение эквивалентности норм является отношением эквивалентности (то есть выполняется рефлексивность, симметриченость и транзитивность).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Это определение равносильно тому, что сходимость последовательностей в них равносильна: &amp;lt;tex&amp;gt;x_n \xrightarrow[]{\|\|_1} x \iff x_n \xrightarrow[]{\|\|_2} x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пространство &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; '''конечномерно''', если &amp;lt;tex&amp;gt; \exists n = dim X &amp;lt; \infty: \exists e_1, e_2, \ldots, e_n: X = \mathcal L(e_1, \ldots, e_n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Рисс&lt;br /&gt;
|statement=&lt;br /&gt;
В конечномерных пространствах любые две нормы эквивалентны.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 8 Замкнутость конечномерного линейного подмножества НП. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Подпространство в алгебраическом смысле не обязательно замкнуто в исходном пространстве. Поэтому в функциональном анализе собственно '''подпространством''' называется именно ''замкнутое'' подпространство, а ''алгебраические'' подпространства называют '''линейными подмножествами'''.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — НП и &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; — линейное конечномерное подмножество в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; — замкнуто в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, т.е.&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{Cl} Y = Y&amp;lt;/tex&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
= 9 Лемма Рисса о почти перпендикуляре, пример ее применения. =&lt;br /&gt;
{{Лемма&lt;br /&gt;
|author=Рисc&lt;br /&gt;
|about=о почти перпендикуляре&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — НП, а &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; {{---}} собственное (то есть не совпадающее с &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;) подпространство &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;\forall \varepsilon \in (0, 1) \; \exists z_{\varepsilon} \in X : \|z_{\varepsilon}\| = 1,\; \rho(z_{\varepsilon}, Y) \geq 1 - \varepsilon&amp;lt;/tex&amp;gt; (где &amp;lt;tex&amp;gt;\rho(z, Y) = \inf\limits_{y \in Y} \|z-y\|&amp;lt;/tex&amp;gt;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=некомпактность шара в бесконечномерном пространстве&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; {{---}} бесконечномерное НП, то единичный шар &amp;lt;tex&amp;gt;S_1 = \{ x \in X \mid \|x \| = 1\}&amp;lt;/tex&amp;gt; в нем не компактен.&lt;br /&gt;
|proof=&lt;br /&gt;
Возьмем &amp;lt;tex&amp;gt;x \in S_1&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;Y_1 = \mathcal{L}(x_1)&amp;lt;/tex&amp;gt; — собственное подпространство &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, применим лемму Рисса, возьмем &amp;lt;tex&amp;gt;\varepsilon = {1 \over 2}&amp;lt;/tex&amp;gt;, существует &amp;lt;tex&amp;gt;x_2: \| x_2 \| = 1, \| x_2 - x_1 \| \ge {1 \over 2}&amp;lt;/tex&amp;gt;, заметим, что &amp;lt;tex&amp;gt;x_2&amp;lt;/tex&amp;gt; окажется в &amp;lt;tex&amp;gt;S_1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;Y_2 = \mathcal{L}(x_1, x_2)&amp;lt;/tex&amp;gt;, опять применим лемму Рисса, существует &amp;lt;tex&amp;gt;x_3 \in X: \| x_3 - x_j \| \ge {1 \over 2}, j = 1, 2&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;x_3&amp;lt;/tex&amp;gt; будет в &amp;lt;tex&amp;gt;S_1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продолжаем так же для &amp;lt;tex&amp;gt;Y_3 \dots Y_n \dots&amp;lt;/tex&amp;gt;. Процесс никогда не завершится, так как &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — бесконечномерное и не может быть линейной оболочкой конечного числа векторов. Таким образом построили бесконечную систему точек в &amp;lt;tex&amp;gt;S_1&amp;lt;/tex&amp;gt;, но из которой нельзя выделить сходящуюся подпоследовательность, так как &amp;lt;tex&amp;gt;\| x_n - x_m \| \ge {1 \over 2}&amp;lt;/tex&amp;gt;, следовательно, &amp;lt;tex&amp;gt;S_1&amp;lt;/tex&amp;gt; не компактно.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 10 Банаховы пространства на примерах &amp;lt;tex&amp;gt;C [0,1]&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_p(E)&amp;lt;/tex&amp;gt;. =&lt;br /&gt;
&amp;lt;tex&amp;gt;C[a,b]&amp;lt;/tex&amp;gt; - семейство функций &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;, непрерывных на [a,b] с равномерной сходимостью является Банаховым пространством.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;L_p(E)&amp;lt;/tex&amp;gt; = {сем-во функций f - изм. на E | integral( |f|^p ) &amp;lt; +infinity} - тоже Банахово пр-во&lt;br /&gt;
док-во, видимо, было как упражнение&lt;br /&gt;
&lt;br /&gt;
= 11 Определение скалярного произведения, равенство параллелограмма, неравенство Шварца. =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; — линейное пространство. Величина &amp;lt;tex&amp;gt;(x, y) \in \mathbb R&amp;lt;/tex&amp;gt; называется скалярным произведением точек множества &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt;, если она удовлетворяет следующим трём аксиомам:&lt;br /&gt;
# &amp;lt;tex&amp;gt;(x, x) \ge 0&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;(x, x) = 0 \iff x = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt;(x, y) = (y, x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt;(\alpha x + \beta y, z) = \alpha(x, z) + \beta(y, z)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основное значение для скалярного произведения имеет неравенство Шварца:&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;|(x, y)| \le \sqrt{(x, x)}\sqrt{(y, y)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
//не нашёл этого в конспектах, беру с википедии&lt;br /&gt;
&lt;br /&gt;
Характеристическим свойством, выделяющим гильбертовы пространства &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; среди прочих банаховых пространств, является равенство параллелограмма:&lt;br /&gt;
&amp;lt;tex&amp;gt;\forall x,y\in H\ \quad \|x+y\|^2+\|x-y\|^2=2(\|x\|^2+\|y\|^2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 12 Наилучшее приближение в НП в случае конечномерного подпространства. =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; {{---}} [[Нормированные_пространства#определение и примеры|нормированное пространство]], к примеру, &amp;lt;tex&amp;gt;L_p&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; {{---}} линейное множество в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, например, &amp;lt;tex&amp;gt;H_n&amp;lt;/tex&amp;gt; (тригонометрических полиномов степени не больше &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition = Для любого &amp;lt;tex&amp;gt; x \in X&amp;lt;/tex&amp;gt; величина &amp;lt;tex&amp;gt;E_Y(x) = \inf\limits_{y \in Y}{\|x-y\|}&amp;lt;/tex&amp;gt; называется '''наилучшим приближением точки &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; элементами линейного множества &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;'''.&lt;br /&gt;
Если при этом существует &amp;lt;tex&amp;gt;y^* \in Y&amp;lt;/tex&amp;gt; такой, что &amp;lt;tex&amp;gt;E_Y(x)=\|x-y^*\|&amp;lt;/tex&amp;gt;, то этот &amp;lt;tex&amp;gt;y^*&amp;lt;/tex&amp;gt; называется '''элементом наилучшего приближения точки &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;'''.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; {{---}} нормированное пространство, &amp;lt;tex&amp;gt;\dim Y &amp;lt; +\infty&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;\forall x \in X&amp;lt;/tex&amp;gt; существует элемент наилучшего приближения &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 13 Наилучшее приближение в унитарном пространстве, неравенство Бесселя. =&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement = Пусть &amp;lt;tex&amp;gt;x\in\mathcal{H}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\sum\limits_{j=1}^\infty \langle x, e_j\rangle e_j&amp;lt;/tex&amp;gt; (причем он может быть расходящимся), &amp;lt;tex&amp;gt;s_n(x) = \sum\limits_{j=1}^n \langle x, e_j\rangle e_j&amp;lt;/tex&amp;gt;&lt;br /&gt;
тогда: &amp;lt;tex&amp;gt;\|x-s_n(x)\|^2 = \inf \|x - \sum\limits_{k=1}^n \alpha_ke_k\|^2&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\alpha_k \in \mathbb{R}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=&lt;br /&gt;
Бессель&lt;br /&gt;
|about=&lt;br /&gt;
неравенство Бесселя&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt; \sum \limits_{k=1}^{\infty} (x, e_k)^2 \le \|x\|^2&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;e_1 \dots e_n \dots \in H &amp;lt;/tex&amp;gt; {{---}} ортонормированная система точек&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 14 Определение Гильбертова пространства, сепарабельность и полнота. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Гильбертовым пространством''' называют Банахово пространство, в котором норма порождена скалярным произведением.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Гильбертово пространство''' сепарабельно тогда и только тогда, когда в нём существует счётный ортонормированный базис.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TODO|t= взято от сюда:http://www.nsu.ru/education/funcan/node89.html проверить на правду}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=&lt;br /&gt;
критерий полноты ортонормированной системы в сепарабельном гильбертовом пространстве&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; {{---}} сепарабельное гильбертово пространство и &amp;lt;tex&amp;gt;\{e_1, e_2, \ldots, e_n, \ldots\}&amp;lt;/tex&amp;gt; {{---}} ортонормированная система векторов в нем. Тогда следующие условия эквивалентны:&lt;br /&gt;
&lt;br /&gt;
# система &amp;lt;tex&amp;gt;\{e_1, e_2, \ldots, e_n, \ldots\}&amp;lt;/tex&amp;gt; полна&lt;br /&gt;
# система &amp;lt;tex&amp;gt;\{e_1, e_2, \ldots, e_n, \ldots\}&amp;lt;/tex&amp;gt; замкнута&lt;br /&gt;
# &amp;lt;tex&amp;gt;\forall x \in H &amp;lt;/tex&amp;gt; справедливо разложение &amp;lt;tex&amp;gt;x = \sum\limits_{n = 1}^\infty \lambda_n e_n&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;\lambda_n = (x, e_n)&amp;lt;/tex&amp;gt; {{---}} коэффициенты Фурье вектора &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; относительно ортонормированной системы &amp;lt;tex&amp;gt;\{e_1, e_2, \ldots, e_n, \ldots\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 15 Теорема Рисса-Фишера, равенство Парсеваля. =&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=&lt;br /&gt;
равенство Парсеваля&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;\forall x: \|x\|^2 = \sum\limits_{k=1}^{\infty} \langle x, e_k \rangle ^2 &amp;lt;/tex&amp;gt; тогда и только тогда, когда ортонормированная система точек, по которым строятся коэффициенты Фурье, полная или замкнутая.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Рисс-Фишер&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;\{e_1, e_2, \ldots, e_n, \ldots\}&amp;lt;/tex&amp;gt; {{---}} ортонормированная система в гильбертовом пространстве &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\sum\limits_{i=1}^{\infty} \alpha_i^2 &amp;lt; +\infty&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\exists ! x \in H : \alpha_i = \langle x, e_i \rangle&amp;lt;/tex&amp;gt; и выполняется '''равенство Парсеваля''': &amp;lt;tex&amp;gt;\sum\limits_{i=1}^{\infty} \alpha_i^2 = \|x\|^2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 16 Наилучшее приближение в &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; для случая выпуклого,замкнутого множества, &amp;lt;tex&amp;gt;H = H_1 \oplus H_2&amp;lt;/tex&amp;gt;. =&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; — выпуклое замкнутое множество в &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;\forall x \in H\ \exists z \in M: \| x - z \| = \inf\limits_{y \in M} \| x - y\|&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt; называется '''элементом наилучшего приближения'''&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Говорят, что два элемента &amp;lt;tex&amp;gt; x, y &amp;lt;/tex&amp;gt; гильбертова пространства &amp;lt;tex&amp;gt; H &amp;lt;/tex&amp;gt; '''перпендикулярны''' (&amp;lt;tex&amp;gt; x \perp y &amp;lt;/tex&amp;gt;), если &amp;lt;tex&amp;gt; \langle x, y \rangle = 0. &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;H_1&amp;lt;/tex&amp;gt;  — подпространство в &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt;, тогда '''ортогональным дополнением''' называется &amp;lt;tex&amp;gt;H_2 = H_1^{\perp} = \{ x \in H \mid \forall y \in H_1: x \perp y\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 17 Разложение гильбертова пространства в прямую сумму подпространств. =&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; H_1 &amp;lt;/tex&amp;gt; — подпространство в &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; H_2 &amp;lt;/tex&amp;gt; {{---}} его ортогональное дополнение. Тогда для любого &amp;lt;tex&amp;gt; x \in H &amp;lt;/tex&amp;gt; существует единственное представление &amp;lt;tex&amp;gt; x = x_1 + x_2 &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; x_1 \in H_1, x_2 \in H_2 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; x_1 \perp x_2 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 18 Счетно-нормированные пространства, метризуемость. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — линейное пространство, &amp;lt;tex&amp;gt;p_1 \dots p_n \dots&amp;lt;/tex&amp;gt; — полунормы. Если &amp;lt;tex&amp;gt;\forall x \in X&amp;lt;/tex&amp;gt; из того, что &amp;lt;tex&amp;gt;\forall k: p_k(x) = 0&amp;lt;/tex&amp;gt; следует, что &amp;lt;tex&amp;gt;x = 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; называют '''счетно-нормированным пространством'''&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
Счетно-нормированные пространства можно метризовать как &amp;lt;tex&amp;gt;\mathbb{R}^{\infty}&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;\rho(x, y) = \sum\limits_{n=1}^{\infty} {1 \over 2^n} {p_n(x - y) \over 1 + p_n(x - y)}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 19 Условие нормируемости СНТП. =&lt;br /&gt;
&amp;lt;wikitex&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Полунорма $p_n$ в системе $p$ '''существенна''', если она не мажорируется ни одной из полунорм этой системы с меньшими чем $n$ номерами.&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=критерий нормируемости счетно-нормированного пространства&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть $X$ — счетное-нормированное пространство по монотонной системе полунорм $p$. Оно нормируется тогда и только тогда, когда в системе $p$ конечное число существенных полунорм.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/wikitex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 20 Функционал Минковского. =&lt;br /&gt;
&amp;lt;wikitex&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
$A$ '''поглощает''' $B$, если $\exists \lambda_0 &amp;gt; 0: \forall \lambda: |\lambda| &amp;gt; \lambda_0: B \subset \lambda A$.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
$A$ '''радиальное/поглощающее''', если оно поглощает любую конечную систему точек. Для проверки радиальности достаточно проверить поглощение каждой конкретной точки.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть $X$ — линейное пространство, $\mu$ — радиальное подмножество, тогда '''функционал Минковского''' $p_{\mu}$ определяется как $p_{\mu}(x) = \inf \{ \lambda &amp;gt; 0 \mid x \in \lambda \mu\}$.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/wikitex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 21 Топология векторных пространств. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Топологическое векторное пространство''' — линейное пространство, наделенной такой топологией, что операции сложения векторов и умножения на скаляр в ней непрерывны в этой топологии, то есть:&lt;br /&gt;
* непрерывность умножения на скаляр: $\alpha x \to \alpha_0 x_0$, если $\alpha \to \alpha_0$, $x \to x_0$. Означает, что для любой окрестности $U(\alpha_0 x_0)$ существует $ \varepsilon &amp;gt; 0$ и существует &amp;lt;math&amp;gt; U(x_0): | \alpha - \alpha_0 | &amp;lt; \varepsilon, x \in U(x_0) \implies \alpha x \in U(\alpha_0 x_0) &amp;lt;/math&amp;gt; &lt;br /&gt;
* непрерывность сложения векторов: $x + y \to x_0 + y_0$, если $x \to x_0$, $y \to y_0$. Означает, что для любой окрестности $U(x_0 + y_0)$ существуют окрестности $U(x_0), U(y_0): \forall x \in U(x_0) \forall y \in U(y_0) \implies x + y \in U(x_0 + y_0)$.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 22 Теорема Колмогорова о нормируемости ТВП. =&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Колмогоров&lt;br /&gt;
|statement=&lt;br /&gt;
Хаусдорфово ТВП нормируемо тогда и только тогда, когда у нуля есть ограниченная выпуклая окрестность.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 23 Коразмерность ядра линейного функционала. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=linfuncdef&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; ­— линейное множество. Отображение &amp;lt;tex&amp;gt; f\colon X \to \mathbb{R} &amp;lt;/tex&amp;gt; {{---}} '''линейный функционал''', если &lt;br /&gt;
&amp;lt;tex&amp;gt;\forall \alpha, \beta \in \mathbb{R} \  \forall x, y \in X : f(\alpha x + \beta y) = \alpha f(x) + \beta f(y)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Обозначим &amp;lt;tex&amp;gt;X^*&amp;lt;/tex&amp;gt; — совокупность линейных функционалов, определенных на множестве &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \mathrm{Ker}\, f = \{x \mid f(x) = 0 \} &amp;lt;/tex&amp;gt; — '''ядро функционала'''.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=factorsetdef&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; ­— линейное множество, &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; линейное подмножество &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Введем отношение эквивалентности на &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; x_1 \sim x_2 \stackrel{\mathrm{def}}{\iff} x_1 - x_2 \in Y &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; [x] = \{ y \in X \mid y \sim x \} &amp;lt;/tex&amp;gt; — '''классы смежности''' по &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; X /_Y &amp;lt;/tex&amp;gt; — совокупность всех классов смежности — '''фактор-множество''' по &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=codimdef&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{Codim}\, Y \stackrel{\mathrm{def}}{=} \dim X /_Y &amp;lt;/tex&amp;gt; — '''коразмерность''' &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; Y &amp;lt;/tex&amp;gt; — '''гиперплоскость''' в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;\mathrm{Codim}\, Y = 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|about=Коразмерность ядра функционала&lt;br /&gt;
|statement=&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; не является тождественно равным нулю, то &amp;lt;tex&amp;gt;\mathrm{Codim}\, \mathrm{Ker}\, f = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 24 Непрерывный линейный функционал и его норма. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=contfuncdef&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; ­— нормированное пространство. Линейный функционал &amp;lt;tex&amp;gt; f \in X^* &amp;lt;/tex&amp;gt; {{---}} '''непрерывен''' в точке &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;, если &lt;br /&gt;
&amp;lt;tex&amp;gt;x_n \to x \implies f(x_n) \to f(x) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
Обозначение &amp;lt;tex&amp;gt; \overline{V}_1 = \{ x : \| x \| \leq 1 \} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Введем норму в &amp;lt;tex&amp;gt; X^* &amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt; \| f \|  \stackrel{\mathrm{def}}{=} \sup\limits_{\overline{V}_1} {| f(x) |} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|id=cont0&lt;br /&gt;
|statement= Линейный функционал &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; непрерывен &amp;lt;tex&amp;gt; \iff &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; непрерывен в нуле.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 25 Связь между непрерывностью линейного функционала и замкнутостью его ядра. =&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=finitefuncdef&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; ­— '''ограниченный''' функционал, если &amp;lt;tex&amp;gt; \| f \| &amp;lt; \infty &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|id=cont-finite&lt;br /&gt;
|statement= &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; — непрерывен &amp;lt;tex&amp;gt; \iff &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; ­— ограничен.&lt;br /&gt;
}}&lt;br /&gt;
{{&lt;br /&gt;
Теорема&lt;br /&gt;
|about=характеристика ограниченного функционала в терминах ядра&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; — ограничен &amp;lt;tex&amp;gt;\iff  \mathrm{Ker}\, f&amp;lt;/tex&amp;gt; — замкнуто в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 26 Продолжение по непрерывности линейного функционала со всюду плотного линейного подмножества НП. =&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|id=densefunextension&lt;br /&gt;
|statement= Пусть &amp;lt;tex&amp;gt; Y &amp;lt;/tex&amp;gt; — линейное всюду плотное в &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; множество.&lt;br /&gt;
&amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; — линейный непрерывный функционал на &amp;lt;tex&amp;gt; Y &amp;lt;/tex&amp;gt;. Тогда существует единственный &amp;lt;tex&amp;gt; \widetilde f &amp;lt;/tex&amp;gt; — линейный непрерывный функционал на &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; такой, что:&lt;br /&gt;
&lt;br /&gt;
1) &amp;lt;tex&amp;gt; \widetilde f |_Y = f &amp;lt;/tex&amp;gt; — сужение на &amp;lt;tex&amp;gt; Y &amp;lt;/tex&amp;gt; совпадает с &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;.&lt;br /&gt;
2) &amp;lt;tex&amp;gt; \| \widetilde f \|_X = \| f \|_Y &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 27 Теорема Хана-Банаха для НП (сепарабельный случай). =&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=&lt;br /&gt;
Хан, Банах&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; {{---}} [[Метрические_пространства#defdense|сепарабельное]] нормированное пространство, &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; {{---}} линейное подмножество &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;f: Y \to \mathbb R&amp;lt;/tex&amp;gt; {{---}} линейный ограниченный функционал.&lt;br /&gt;
Тогда существует линейный ограниченный функционал &amp;lt;tex&amp;gt;g: X \to \mathbb R&amp;lt;/tex&amp;gt; такой, что &amp;lt;tex&amp;gt;g|_Y = f&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\|g\| = \|f\|&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Два следствия из теоремы Хана-Банаха.&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; {{---}} нормированное пространство. Тогда &amp;lt;tex&amp;gt;\forall x \in X \exists f: X \to R:\ f(x) = \|x\|, \|f\| = 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; {{---}} нормированное пространство, &amp;lt;tex&amp;gt;e_1, e_2, \ldots, e_n&amp;lt;/tex&amp;gt; {{---}} линейно независимый набор в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; существует биортогональная система функционалов &amp;lt;tex&amp;gt;f_1, f_2, \ldots f_n, f_i(e_j) = \delta_{ij}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 28 Теорема Рисса об общем виде линейного непрерывного функционала в &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt;. =&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Рисс&lt;br /&gt;
|about=об общем виде линейного непрерывного функционала в гильбертовом пространстве&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;\forall f \in H^*\; \exists ! y \in H : f(x) = \langle x, y \rangle&amp;lt;/tex&amp;gt;, причем &amp;lt;tex&amp;gt;\|f\| = \|y\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 29 Непрерывный линейный оператор и его норма. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Оператор &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; называется '''линейным''', если &amp;lt;tex&amp;gt;A(\alpha x_1 + \beta x_2) = \alpha A(x_1) + \beta A(x_2)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Оператор &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''непрерывен''' в точке &amp;lt;tex&amp;gt;x_0&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;\lim\limits_{x \to x_0} Ax = Ax_0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Нормой''' оператора &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; называется &amp;lt;tex&amp;gt;\|A\| = \sup\limits_{\|x\| \le 1} \| Ax \|&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Оператор &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; '''ограничен''', если &amp;lt;tex&amp;gt;\|A\| \le \infty&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Линейный оператор непрерывен тогда и только тогда, когда он ограничен.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 30 Продолжение линейного оператора по непрерывности. =&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; {{---}} линейное пространство, &amp;lt;tex&amp;gt;Cl Y = X&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;A: Y \to Z&amp;lt;/tex&amp;gt; {{---}} линейный ограниченный оператор, &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt; {{---}} банахово.&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;\exists! B: X \to Z&amp;lt;/tex&amp;gt;:&lt;br /&gt;
# &amp;lt;tex&amp;gt;B|_Y = A&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\|B\| = \|A\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 31 Полнота пространства &amp;lt;tex&amp;gt;L(X,Y)&amp;lt;/tex&amp;gt;. =&lt;br /&gt;
Обычно пространство линейных ограниченных операторов из &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; обозначают как &amp;lt;tex&amp;gt;L(X, Y)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; {{---}} банахово, тогда &amp;lt;tex&amp;gt;L(X, Y)&amp;lt;/tex&amp;gt; тоже банахово.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 32 Теорема Банаха-Штейнгауза. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Последовательность &amp;lt;tex&amp;gt;A_n&amp;lt;/tex&amp;gt; '''поточечно ограничена''', если &amp;lt;tex&amp;gt;\forall x \in X \sup\limits_{n \in \mathbb N} \|A_n x\| &amp;lt; +\infty&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Последовательность &amp;lt;tex&amp;gt;A_n&amp;lt;/tex&amp;gt; '''равномерно ограничена''', если &amp;lt;tex&amp;gt;\sup\limits_{n \in \mathbb N} \|A_n\| &amp;lt; +\infty&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=&lt;br /&gt;
Банах, Штейнгауз&lt;br /&gt;
|about=&lt;br /&gt;
принцип равномерной ограниченности&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; {{---}} банахово, &amp;lt;tex&amp;gt;A_n \in L(X, Y)&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;A_n&amp;lt;/tex&amp;gt; поточечно ограничена. Тогда &amp;lt;tex&amp;gt;A_n&amp;lt;/tex&amp;gt; равномерно ограничена.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 33 Условие замкнутости множества значений линейного оператора на базе априорной оценки решения операторного уравнения. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Рассмотрим уравнение &amp;lt;tex&amp;gt; Ax = y &amp;lt;/tex&amp;gt; при заданном &amp;lt;tex&amp;gt; y &amp;lt;/tex&amp;gt;. Если для такого уравнения можно написать &amp;lt;tex&amp;gt; \| x \| \le \alpha \| y \| &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; \alpha &amp;lt;/tex&amp;gt; {{---}} константа, то говорят, что это уравнение '''допускает априорную оценку решений'''.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; непрерывен, и уравнение &amp;lt;tex&amp;gt; Ax = y &amp;lt;/tex&amp;gt; допускает априорную оценку решений, то &amp;lt;tex&amp;gt; R(A) = \mathrm{Cl} R(A) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 34 Условие непрерывной обратимости лин. оператора. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Оператор &amp;lt;tex&amp;gt; A : X \to Y &amp;lt;/tex&amp;gt; называется '''непрерывно обратимым''', если существует &amp;lt;tex&amp;gt; A^{-1} : Y \to X &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \| A^{-1} \| &amp;lt; \infty &amp;lt;/tex&amp;gt;, причем &amp;lt;tex&amp;gt;A^{-1}&amp;lt;/tex&amp;gt; должен быть определен на всем &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; A : X \to Y &amp;lt;/tex&amp;gt; {{---}} линейный ограниченный оператор, и &amp;lt;tex&amp;gt;\exists m &amp;gt; 0: m \| x \| \le \| Ax \| &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; непрерывно обратим на &amp;lt;tex&amp;gt;R(A)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 35 Теорема Банаха о непрерывной обратимости &amp;lt;tex&amp;gt;I-C&amp;lt;/tex&amp;gt;. =&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Банах&lt;br /&gt;
|about=о непрерывной обратимости I-C&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; {{---}} B-пространство, оператор &amp;lt;tex&amp;gt; C : X \to X, C \in \mathbb{L}(X) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \| C \| &amp;lt; 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда оператор &amp;lt;tex&amp;gt; I - C &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; I &amp;lt;/tex&amp;gt; {{---}} тождественный оператор, непрерывно обратим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 36 Лемма о множествах &amp;lt;tex&amp;gt;X_n = {||Ax|| &amp;lt; n ||x||}&amp;lt;/tex&amp;gt;. =&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим линейный оператор &amp;lt;tex&amp;gt; A : X \to Y &amp;lt;/tex&amp;gt;. Обозначим &amp;lt;tex&amp;gt; X_n = \{ x \in X: \| Ax \| \le n \| x \| \} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда хотя бы одно &amp;lt;tex&amp;gt; X_n &amp;lt;/tex&amp;gt; ''всюду плотно в &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt;''.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 37 Теорема Банаха об обратном операторе. =&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=Банаха, о гомеоморфизме&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; A : X \to Y &amp;lt;/tex&amp;gt; {{---}} линейный ограниченный оператор, причем осуществляющий биекцию, тогда &amp;lt;tex&amp;gt; A^{-1} &amp;lt;/tex&amp;gt; {{---}} линейный ограниченный оператор.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 38 Теорема о замкнутом графике. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Графиком''' линейного оператора &amp;lt;tex&amp;gt; A: X \to Y &amp;lt;/tex&amp;gt; называется множество &amp;lt;tex&amp;gt; G(A) = \{ (x, Ax) \mid x \in X \}, G(A) \subset X \times Y &amp;lt;/tex&amp;gt;. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=о замкнутом графике&lt;br /&gt;
|statement=&lt;br /&gt;
Линейный &amp;lt;tex&amp;gt;A : X \to Y &amp;lt;/tex&amp;gt; ограничен &amp;lt;tex&amp;gt; \iff &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt; G(A) &amp;lt;/tex&amp;gt; {{---}} замкнут.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 39 Теорема об открытом отображении. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt; F : X \to Y &amp;lt;/tex&amp;gt; {{---}} произвольное отображение. Если для любого открытого &amp;lt;tex&amp;gt; G \subset X &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt; F(G) &amp;lt;/tex&amp;gt; открыто в &amp;lt;tex&amp;gt; Y &amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt; F &amp;lt;/tex&amp;gt; называют '''открытым отображением'''.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=об открытом отображении&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; A : X \to Y &amp;lt;/tex&amp;gt; {{---}} линейный ограниченный оператор. Тогда &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; {{---}} открытое отображение.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 40 Теорема о резольвентном множестве. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Рассмотрим некоторое &amp;lt;tex&amp;gt;\lambda \in \mathbb C&amp;lt;/tex&amp;gt;. Если для него существует и непрерывен оператор &amp;lt;tex&amp;gt;R_\lambda(A) = R_\lambda = (A - \lambda I)^{-1}&amp;lt;/tex&amp;gt; (&amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt; {{---}} единичный оператор), то он называется '''резольвентой'''. Множество таких &amp;lt;tex&amp;gt;\lambda&amp;lt;/tex&amp;gt;, для которых существует &amp;lt;tex&amp;gt;R_\lambda&amp;lt;/tex&amp;gt;, обозначается &amp;lt;tex&amp;gt;\rho(A)&amp;lt;/tex&amp;gt;, и называется '''резольвентным множеством''', дополнение к нему обозначается &amp;lt;tex&amp;gt;\sigma(A)&amp;lt;/tex&amp;gt; и называется '''спектром''' оператора &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|about=замкнутость спектра&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;\rho(A)&amp;lt;/tex&amp;gt; {{---}} открытое множество в &amp;lt;tex&amp;gt;\mathbb C&amp;lt;/tex&amp;gt;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 41 Теорема о спектральном радиусе. =&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;r_\sigma(A) = \inf\limits_{n \in \mathbb N} \sqrt[n]{\|A^n\|}&amp;lt;/tex&amp;gt; {{---}} спектральный радиус оператора.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;r_\sigma(A) = \lim\limits_{n \to \infty} \sqrt[n]{\|A^n\|}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 42 Аналитичность резольвенты. =&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|about=аналитичность резольвенты в резольвентном множестве&lt;br /&gt;
|statement=&amp;lt;tex&amp;gt;R_\lambda&amp;lt;/tex&amp;gt; как функция из комплексного числа в ограниченный оператор, аналитична в &amp;lt;tex&amp;gt;\rho(A)&amp;lt;/tex&amp;gt; и в бесконечно удаленной точке комплексной плоскости.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= 43 Непустота спектра ограниченного оператора. =&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=непустота спектра ограниченного оператора&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;\|A\| &amp;lt; +\infty \implies \sigma(A) \ne \varnothing&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Категория: Функциональный анализ 3 курс]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D0%BA%D0%B0_%D1%87%D0%B8%D1%81%D0%B5%D0%BB_%D0%B2_b-%D0%B8%D1%87%D0%BD%D0%BE%D0%B9_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5_%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_(%D0%94%D0%BB%D0%B8%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D0%BA%D0%B0)&amp;diff=83506</id>
		<title>Арифметика чисел в b-ичной системе счисления (Длинная арифметика)</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D0%BA%D0%B0_%D1%87%D0%B8%D1%81%D0%B5%D0%BB_%D0%B2_b-%D0%B8%D1%87%D0%BD%D0%BE%D0%B9_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5_%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_(%D0%94%D0%BB%D0%B8%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D0%BA%D0%B0)&amp;diff=83506"/>
				<updated>2022-09-01T05:04:03Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Длинная арифметика''' (англ. ''arbitrary-precision arithmetic'', или ''bignum arithmetic'') — это набор программных средств (структуры данных и алгоритмы), которые позволяют работать с числами гораздо больших величин, чем это позволяют стандартные типы данных.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Классическая длинная арифметика''' — длинная арифметика, основная идея которой заключается в том, что число хранится в виде массива его цифр. Цифры могут использоваться из той или иной системы счисления, обычно применяются десятичная система счисления и её степени (десять тысяч, миллиард), двоичная система счисления либо любая другая.&lt;br /&gt;
}}&lt;br /&gt;
==Представление в памяти==&lt;br /&gt;
&lt;br /&gt;
Один из вариантов хранения длинных чисел — массив целых чисел '''int''', где каждый элемент — это одна цифра числа в &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt;-ичной системе счисления.&lt;br /&gt;
Для повышения эффективности каждый элемент вектора может содержать не одну, а несколько цифр (например, работаем в системе счисления по основанию миллиард, тогда каждый элемент вектора содержит &amp;lt;tex&amp;gt;9&amp;lt;/tex&amp;gt; цифр): &lt;br /&gt;
   '''const''' '''int''' base &amp;lt;tex&amp;gt;\,=\,&amp;lt;/tex&amp;gt; 1000 &amp;lt;tex&amp;gt;\cdot&amp;lt;/tex&amp;gt; 1000 &amp;lt;tex&amp;gt;\cdot&amp;lt;/tex&amp;gt; 1000&lt;br /&gt;
&lt;br /&gt;
Цифры будут храниться в массиве в следующем порядке: сначала идут наименее значимые цифры (т.е., например, единицы, десятки, сотни, и т.д.).&lt;br /&gt;
&lt;br /&gt;
Кроме того, все операции реализуются таким образом, что после выполнения любой из них лидирующие нули (т.е. лишние нули в начале числа) отсутствуют (разумеется, в предположении, что перед каждой операцией лидирующие нули также отсутствуют).&lt;br /&gt;
Следует отметить, что в представленной реализации для числа ноль корректно поддерживаются сразу два представления: пустой вектор цифр, и вектор цифр, содержащий единственный элемент — ноль.&lt;br /&gt;
&lt;br /&gt;
==Операции над числами==&lt;br /&gt;
&lt;br /&gt;
Операции над числами производятся с помощью &amp;quot;школьных&amp;quot; алгоритмов сложения, вычитания, умножения, деления столбиком.&lt;br /&gt;
После совершения операций следует не забывать удалять лидирующие нули, чтобы поддерживать предикат о том, что таковые отсутствуют.&lt;br /&gt;
К ним также применимы алгоритмы быстрого умножения: [[Быстрое преобразование Фурье | Быстрое преобразование Фурье]] и [https://ru.wikipedia.org/wiki/%D0%A3%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%9A%D0%B0%D1%80%D0%B0%D1%86%D1%83%D0%B1%D1%8B Алгоритм Карацубы].&lt;br /&gt;
&lt;br /&gt;
Приведённые ниже алгоритмы корректны в силу того, что они являются реализацией &amp;quot;школьных&amp;quot; алгоритмов действий в столбик:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A = abc = 100 \cdot a + 10 \cdot b + c &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;B = de = 10 \cdot d + e &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда сумма &amp;lt;tex&amp;gt;A + B = abc + de = (100 \cdot a + 10 \cdot b + c) + (10 \cdot d + e) = 100 \cdot a + 10 \cdot (b + d) + (c + e) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Разность &amp;lt;tex&amp;gt;A - B = abc - de = (100 \cdot a + 10 \cdot b + c) - (10 \cdot d + e) = 100 \cdot a + 10 \cdot (b - d) + (c - e) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Произведение &amp;lt;tex&amp;gt;A \cdot B = abc \cdot de = (100 \cdot a + 10 \cdot b + c) \cdot (10 \cdot d + e) = 100 \cdot a \cdot 10 \cdot d + 10 \cdot b \cdot 10 \cdot d + c \cdot 10 \cdot d + 100 \cdot a \cdot e + 10 \cdot b \cdot e + c \cdot e = 1000 \cdot a \cdot d + 100 \cdot (a \cdot e + b \cdot d) + 10 \cdot (b \cdot e + c \cdot d) + c \cdot e&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Сложение ===&lt;br /&gt;
Прибавляет к числу &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; число &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; и сохраняет результат в &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
Алгоритм работает за &amp;lt;tex&amp;gt;O(max(n, m))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n, m&amp;lt;/tex&amp;gt; — длины чисел &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Алгоритм не требует дополнительной памяти.&lt;br /&gt;
&lt;br /&gt;
     '''function''' getSum(a: '''vector&amp;lt;int&amp;gt;''', b: '''vector&amp;lt;int&amp;gt;'''): '''vector&amp;lt;int&amp;gt;'''&lt;br /&gt;
         carry = 0&lt;br /&gt;
         i = 0&lt;br /&gt;
         '''while''' i &amp;lt; max(a.size(),b.size()) || carry&lt;br /&gt;
             '''if''' i == a.size()&lt;br /&gt;
                 a.push_back(0)&lt;br /&gt;
             '''if''' i &amp;lt; b.size()&lt;br /&gt;
                 a[i] += carry + b[i]&lt;br /&gt;
             '''else'''&lt;br /&gt;
                 a[i] += carry&lt;br /&gt;
             carry = a[i] &amp;lt;tex&amp;gt;\geqslant&amp;lt;/tex&amp;gt; base&lt;br /&gt;
             '''if''' carry&lt;br /&gt;
                 a[i] -= base&lt;br /&gt;
             i++&lt;br /&gt;
         '''return''' a&lt;br /&gt;
&lt;br /&gt;
=== Вычитание ===&lt;br /&gt;
Отнимает от числа &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; число &amp;lt;tex&amp;gt;b\,(a \geqslant b)&amp;lt;/tex&amp;gt;  и сохраняет результат в &amp;lt;tex&amp;gt; a&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
Алгоритм работает за &amp;lt;tex&amp;gt;O(max(n, m))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n, m&amp;lt;/tex&amp;gt; — длины чисел &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Алгоритм не требует дополнительной памяти.&lt;br /&gt;
     '''function''' getSub(a: '''vector&amp;lt;int&amp;gt;''', b: '''vector&amp;lt;int&amp;gt;'''): '''vector&amp;lt;int&amp;gt;'''&lt;br /&gt;
         carry = 0&lt;br /&gt;
         i = 0&lt;br /&gt;
         '''while''' i &amp;lt; b.size() || carry&lt;br /&gt;
             '''if''' i &amp;lt; b.size()&lt;br /&gt;
                 a[i] -= carry + b[i]&lt;br /&gt;
             '''else'''&lt;br /&gt;
                 a[i] -= carry&lt;br /&gt;
             carry = a[i] &amp;lt; 0&lt;br /&gt;
             '''if''' carry&lt;br /&gt;
                 a[i] += base&lt;br /&gt;
             i++&lt;br /&gt;
         '''while''' a.size() &amp;gt; 1 &amp;amp;&amp;amp; a.back() == 0&lt;br /&gt;
             a.pop_back()&lt;br /&gt;
         &amp;lt;font color=green&amp;gt;//Здесь мы после выполнения вычитания удаляем лидирующие нули, чтобы поддерживать предикат о том, что таковые отсутствуют.&amp;lt;/font&amp;gt;&lt;br /&gt;
         '''return''' a&lt;br /&gt;
&lt;br /&gt;
=== Умножение длинного на короткое ===&lt;br /&gt;
Умножает длинное &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; на короткое &amp;lt;tex&amp;gt;b\, (b &amp;lt; base)&amp;lt;/tex&amp;gt; и сохраняет результат в &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
Алгоритм работает за &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; — длина длинного числа.&lt;br /&gt;
&lt;br /&gt;
Алгоритм требует &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; памяти, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; — длина длинного числа.&lt;br /&gt;
&lt;br /&gt;
     '''function''' getCompLongShort(a: '''vector&amp;lt;int&amp;gt;''', b: '''int'''): '''vector&amp;lt;int&amp;gt;'''&lt;br /&gt;
         carry = 0&lt;br /&gt;
         i = 0&lt;br /&gt;
         '''while''' i &amp;lt; a.size() || carry&lt;br /&gt;
             '''if''' i == a.size()&lt;br /&gt;
                 a.push_back(0)&lt;br /&gt;
             cur = carry + a[i] &amp;lt;tex&amp;gt;\cdot&amp;lt;/tex&amp;gt; b;&lt;br /&gt;
             a[i] = cur '''mod''' base&lt;br /&gt;
             carry = cur / base&lt;br /&gt;
             i++&lt;br /&gt;
         '''return''' a&lt;br /&gt;
&lt;br /&gt;
=== Умножение двух длинных чисел ===&lt;br /&gt;
Умножает &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; и результат сохраняет в &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
Алгоритм работает за &amp;lt;tex&amp;gt;O(n \cdot m)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n, m&amp;lt;/tex&amp;gt; — длины чисел &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Алгоритм требует &amp;lt;tex&amp;gt;O(n \cdot m)&amp;lt;/tex&amp;gt; памяти, где &amp;lt;tex&amp;gt;n, m&amp;lt;/tex&amp;gt; — длины чисел &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
     '''function''' getCompLongLong(a: '''vector&amp;lt;int&amp;gt;''', b: '''vector&amp;lt;int&amp;gt;'''): '''vector&amp;lt;int&amp;gt;'''&lt;br /&gt;
         carry = 0&lt;br /&gt;
         i = 0&lt;br /&gt;
         '''while''' i &amp;lt; a.size()&lt;br /&gt;
             j = 0&lt;br /&gt;
             '''while''' (j &amp;lt; b.size() || carry)&lt;br /&gt;
                 '''if''' j &amp;lt; b.size()&lt;br /&gt;
                     cur = c[i + j] + a[i] &amp;lt;tex&amp;gt;\cdot&amp;lt;/tex&amp;gt; b[j] + carry&lt;br /&gt;
                 '''else'''&lt;br /&gt;
                     cur = c[i + j] + carry&lt;br /&gt;
                 c[i + j] = cur '''mod''' base&lt;br /&gt;
                 carry = cur / base&lt;br /&gt;
                 j++&lt;br /&gt;
             i++&lt;br /&gt;
         '''while''' c.size() &amp;gt; 1 &amp;amp;&amp;amp; c.back() == 0&lt;br /&gt;
             c.pop_back()&lt;br /&gt;
         '''return''' c&lt;br /&gt;
&lt;br /&gt;
=== Деление длинного на короткое  ===&lt;br /&gt;
Делит длинное &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; на короткое &amp;lt;tex&amp;gt;b\, (b &amp;lt; base)&amp;lt;/tex&amp;gt;, частное сохраняет в &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, остаток в &amp;lt;tex&amp;gt;carry&amp;lt;/tex&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
Алгоритм работает за &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; — длина длинного числа.&lt;br /&gt;
&lt;br /&gt;
Алгоритм не требует дополнительной памяти.&lt;br /&gt;
    &lt;br /&gt;
     '''function''' getDivLongShort(a: '''vector&amp;lt;int&amp;gt;''', b: '''int'''): '''vector&amp;lt;int&amp;gt;'''&lt;br /&gt;
         carry = 0&lt;br /&gt;
         i = a.size() - 1&lt;br /&gt;
         '''while''' i &amp;lt;tex&amp;gt;\geqslant&amp;lt;/tex&amp;gt; 0&lt;br /&gt;
             cur = a[i] + carry &amp;lt;tex&amp;gt;\cdot&amp;lt;/tex&amp;gt; base&lt;br /&gt;
             a[i] = cur '''mod''' base&lt;br /&gt;
             carry = cur / base&lt;br /&gt;
             i--&lt;br /&gt;
         '''while''' a.size() &amp;gt; 1 &amp;amp;&amp;amp; a.back() == 0&lt;br /&gt;
             a.pop_back()&lt;br /&gt;
         '''return''' a&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
*[[Системы счисления | Системы счисления]]&lt;br /&gt;
*[[Разложение на множители (факторизация) | Разложение на множители (факторизация)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://e-maxx.ru/algo/big_integer e-maxx: Длинная арифметика]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы алгебры и теории чисел]]&lt;br /&gt;
[[Категория: Теория чисел]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BD%D1%82%D0%BD%D1%8B%D0%B9_%D0%B4%D0%B5%D0%BA&amp;diff=83505</id>
		<title>Персистентный дек</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BD%D1%82%D0%BD%D1%8B%D0%B9_%D0%B4%D0%B5%D0%BA&amp;diff=83505"/>
				<updated>2022-09-01T05:03:57Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Дек''' (англ. ''deque'' {{---}} double ended queue {{---}} очередь с двумя концами) {{---}} структура данных с двусторонним доступом к элементам, т.е. их можно удалять и добавлять как в начало, так и в конец дека.&lt;br /&gt;
&lt;br /&gt;
Кроме дека ещё существует структура данных, называемая ''steque'', которая представляет собой объединение стека и очереди {{---}} элементы можно добавлять только в один конец, а извлекать {{---}} с обоих.&lt;br /&gt;
&lt;br /&gt;
== Эффективная реализация ==&lt;br /&gt;
=== Способ хранения структуры ===&lt;br /&gt;
[[Файл:Tree_deque.png|220px|right]]&lt;br /&gt;
&lt;br /&gt;
Персистентный дек можно визуально представить как [[Список#Односвязный список | односвязный список]], где каждый узел хранит пару {{---}} левый элемент и правый, а также ''ребёнка'' {{---}} ссылку на следующий узел. Только левый и правый элемент каждого узла хранят в два раза больше объектов, чем предыдущий. Это удобно сделать с помощью типа ''пара''. &lt;br /&gt;
&lt;br /&gt;
Тип &amp;lt;tex&amp;gt;\mathrm{Pair}&amp;lt;/tex&amp;gt; хранит пару элементов &amp;lt;tex&amp;gt;\mathrm{first}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\mathrm{last}&amp;lt;/tex&amp;gt; типов &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;code style = &amp;quot;display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
  '''class''' Pair&amp;lt;T&amp;gt;:&lt;br /&gt;
    T first&lt;br /&gt;
    T last&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Сам дек можно инициализировать напрямую, вызвав конструктор &amp;lt;tex&amp;gt;\mathrm{Deque(left, ~child, ~right)}&amp;lt;/tex&amp;gt;. Описание структуры через шаблон &amp;lt;tex&amp;gt;\mathrm{Deque{&amp;lt;}T{&amp;gt;}}&amp;lt;/tex&amp;gt; следующее:&lt;br /&gt;
&amp;lt;code style = &amp;quot;display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
  '''class''' Deque&amp;lt;T&amp;gt;:&lt;br /&gt;
    T left&lt;br /&gt;
    T right&lt;br /&gt;
    Deque&amp;lt;Pair&amp;lt;T&amp;gt;&amp;gt; child&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Наша структура данных персистентна, следовательно операция &amp;lt;tex&amp;gt; \mathrm{pushFront(x, ~D)} &amp;lt;/tex&amp;gt; возвращает новый дек &amp;lt;tex&amp;gt; D' &amp;lt;/tex&amp;gt; c элементом &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;, добавленным в начало &amp;lt;tex&amp;gt; D &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== push ===&lt;br /&gt;
Пустой дек будем обозначать значком &amp;lt;tex&amp;gt; \emptyset &amp;lt;/tex&amp;gt;, а пустую пару {{---}} &amp;lt;tex&amp;gt; \varnothing &amp;lt;/tex&amp;gt;, чтобы было яснее, когда мы обращаемся к деку, а когда к элементу. Когда мы хотим добавить элемент в начало дека или удалить из начала, то прежде всего обращаемся к полю &amp;lt;tex&amp;gt;\mathrm{left}&amp;lt;/tex&amp;gt;. Если же работаем с концом, то обращаемся сперва к полю &amp;lt;tex&amp;gt;\mathrm{right}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  '''Deque&amp;lt;T&amp;gt;''' pushFront(x: '''T''', D: '''Deque&amp;lt;T&amp;gt;'''):&lt;br /&gt;
    '''if''' D == &amp;lt;tex&amp;gt; \emptyset &amp;lt;/tex&amp;gt;&lt;br /&gt;
      &amp;lt;font color=darkgreen&amp;gt;// если дек пустой, то формируем новый дек &amp;lt;/font&amp;gt;&lt;br /&gt;
      '''return''' Deque(x, &amp;lt;tex&amp;gt; \emptyset ,~ \varnothing &amp;lt;/tex&amp;gt;)&lt;br /&gt;
    '''else if''' D.left == &amp;lt;tex&amp;gt; \varnothing &amp;lt;/tex&amp;gt;&lt;br /&gt;
      &amp;lt;font color=darkgreen&amp;gt;// если левый ребенок не существует, то сделаем &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; левым ребёнком &amp;lt;/font&amp;gt;&lt;br /&gt;
      '''return''' Deque(x, D.child, D.right)&lt;br /&gt;
    '''else'''&lt;br /&gt;
      &amp;lt;font color=darkgreen&amp;gt;// иначе объединим левого ребёнка с новым элементом и попытаемся добавить в дек на следующем уровне &amp;lt;/font&amp;gt;&lt;br /&gt;
      '''return''' Deque(&amp;lt;tex&amp;gt; \varnothing &amp;lt;/tex&amp;gt;, pushFront(Pair(x, D.left), D.child), D.right)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pop ===&lt;br /&gt;
Метод &amp;lt;tex&amp;gt; \mathrm{popFront(D)} &amp;lt;/tex&amp;gt; возвращает пару &amp;lt;tex&amp;gt; \left \langle e, ~D' \right \rangle &amp;lt;/tex&amp;gt; из первого элемента и нового дека, полученного из старого изъятием этого элемента.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  '''Pair&amp;lt;T, Deque&amp;lt;T&amp;gt;&amp;gt;''' popFront(D: '''Deque&amp;lt;T&amp;gt;'''):&lt;br /&gt;
    '''if''' D == &amp;lt;tex&amp;gt; \emptyset &amp;lt;/tex&amp;gt;&lt;br /&gt;
      &amp;lt;font color=darkgreen&amp;gt;// изъятие элемента из пустого дека возвращает пару &amp;quot;нулевой элемент {{---}} пустой дек&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
      '''return''' &amp;lt;tex&amp;gt; \mathcal{h} \varnothing ,~ \emptyset \mathcal{i} &amp;lt;/tex&amp;gt;&lt;br /&gt;
    '''else if''' D.left &amp;lt;tex&amp;gt; \neq ~\varnothing&amp;lt;/tex&amp;gt;&lt;br /&gt;
      &amp;lt;font color=darkgreen&amp;gt;// если левый ребёнок не пуст, то возвращаем пару из него и нового дека без левого ребёнка,&lt;br /&gt;
      // но если остался только левый ребёнок, то возвращаем его и пустой дек&amp;lt;/font&amp;gt;&lt;br /&gt;
      '''if''' D.child == &amp;lt;tex&amp;gt; \emptyset &amp;lt;/tex&amp;gt; '''and''' D.right == &amp;lt;tex&amp;gt; \varnothing &amp;lt;/tex&amp;gt;&lt;br /&gt;
        '''return''' &amp;lt;tex&amp;gt; \mathcal{h} &amp;lt;/tex&amp;gt;D.left, &amp;lt;tex&amp;gt; \emptyset \mathcal{i} &amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''return''' &amp;lt;tex&amp;gt; \mathcal{h} &amp;lt;/tex&amp;gt;D.left, Deque(&amp;lt;tex&amp;gt; \varnothing &amp;lt;/tex&amp;gt;, D.child, D.right)&amp;lt;tex&amp;gt; \mathcal{i} &amp;lt;/tex&amp;gt;&lt;br /&gt;
    '''else if''' D.child == &amp;lt;tex&amp;gt; \varnothing&amp;lt;/tex&amp;gt;&lt;br /&gt;
      &amp;lt;font color=darkgreen&amp;gt;// если левый ребёнок оказался пуст, и при этом ссылка на следующий дек отсутствует,&lt;br /&gt;
      // то вернём пару из правого ребёнка и абсолютно пустого дека&amp;lt;/font&amp;gt;&lt;br /&gt;
      '''return''' &amp;lt;tex&amp;gt; \mathcal{h} &amp;lt;/tex&amp;gt;D.right, &amp;lt;tex&amp;gt;\emptyset \mathcal{i} &amp;lt;/tex&amp;gt;&lt;br /&gt;
    '''else'''&lt;br /&gt;
      &amp;lt;font color=darkgreen&amp;gt;/* &lt;br /&gt;
       * если два предыдущих условия оказались не выполнены, то мы рекурсивно вызываем метод &amp;lt;tex&amp;gt;\mathrm{popFront}&amp;lt;/tex&amp;gt;&lt;br /&gt;
       * и возвращённую пару &amp;quot;элемент {{---}} новый дек&amp;quot; сохраняем в переменные &amp;lt;tex&amp;gt;temp&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;newDeque&amp;lt;/tex&amp;gt;.&lt;br /&gt;
       * Рекурсивные вызовы прекратятся, как только левый ребёнок окажется не пустым &lt;br /&gt;
       * или в деке будет отсутствовать ссылка на следующий дек.&lt;br /&gt;
       */&amp;lt;/font&amp;gt;     &lt;br /&gt;
      (temp, newDeque) = popFront(D.child)&lt;br /&gt;
      &amp;lt;font color=darkgreen&amp;gt;/*&lt;br /&gt;
       * здесь &amp;lt;tex&amp;gt;temp&amp;lt;/tex&amp;gt; всегда не пуст; надо вернуть первый элемент пары temp&lt;br /&gt;
       * (в этом блоке temp всегда будет иметь тип &amp;lt;tex&amp;gt;\mathrm{Pair}&amp;lt;/tex&amp;gt;);&lt;br /&gt;
       * в качестве left нового дека надо поставить &amp;lt;tex&amp;gt;temp.last&amp;lt;/tex&amp;gt; (на уровне ниже &amp;lt;tex&amp;gt;temp&amp;lt;/tex&amp;gt; хранил&lt;br /&gt;
       * в два раза больше элементов, поэтому на текущем уровне &amp;lt;tex&amp;gt;temp.last&amp;lt;/tex&amp;gt; будет соответствовать &lt;br /&gt;
       * требуемому количеству элементов); &amp;lt;tex&amp;gt;newDeque&amp;lt;/tex&amp;gt; делаем &amp;lt;tex&amp;gt;child&amp;lt;/tex&amp;gt;'ом&lt;br /&gt;
       * нового дека, а &amp;lt;tex&amp;gt;right&amp;lt;/tex&amp;gt; текущего &amp;lt;tex&amp;gt;right&amp;lt;/tex&amp;gt;'ом нового&lt;br /&gt;
       */&amp;lt;/font&amp;gt;&lt;br /&gt;
      '''return''' &amp;lt;tex&amp;gt; \langle &amp;lt;/tex&amp;gt;temp.first, Deque(temp.last, newDeque, D.right)&amp;lt;tex&amp;gt; \rangle &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Операции добавления в правый конец и извлечение из него делаются симметрично.&lt;br /&gt;
&lt;br /&gt;
=== Асимптотика времени работы ===&lt;br /&gt;
Таким образом, если мы добавляем элементы только в один конец, то на &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt;-ом уровне дека не более &amp;lt;tex&amp;gt; 2^i &amp;lt;/tex&amp;gt; элементов. Пусть глубина текущего дека &amp;lt;tex&amp;gt; d. &amp;lt;/tex&amp;gt; Тогда в нём может находится не более &amp;lt;tex&amp;gt; n = 1 + 2 + 4 + \ldots + 2^d &amp;lt;/tex&amp;gt; объектов, откуда получаем &amp;lt;tex&amp;gt; d = \mathcal{b} \log_2 n \mathcal{c}  &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Чтобы извлечь элемент, придётся спуститься не больше, чем на глубину дерева. Аналогично для добавления. Поэтому обе операции выполняются за &amp;lt;tex&amp;gt; \mathcal{O}(\log n) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим поподробнее операции. В худшем случае элементы будут добавляться только в один конец, а извлекаться из другого.&lt;br /&gt;
&lt;br /&gt;
=== pushFront ===&lt;br /&gt;
&lt;br /&gt;
Изначально у нас пустой дек. Элементы будем добавлять в левый конец дека и нумеровать согласно порядку добавления. Сначала добавим первый элемент. Он встанет на позицию левого ребёнка первого уровня дека. Теперь попытаемся добавить второй элемент. Позиция левого ребёнка занята, значит, мы объединяем новый элемент со старым и ставим сформированную пару на место левого ребёнка второго дека. Процесс добавления можно представить, как прибавление &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; к разряду числа в двоичном представлении: если в разряде &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;, то подряд идущие за ней единицы обнулятся {{---}} элементы объединяются в пары, иначе становятся на место этого разряда.&lt;br /&gt;
&lt;br /&gt;
[[Файл:PushDequeExample.png|700px]]&lt;br /&gt;
&lt;br /&gt;
=== popFront ===&lt;br /&gt;
&lt;br /&gt;
Посмотрим, как работает &amp;lt;tex&amp;gt;\mathrm{popFront}&amp;lt;/tex&amp;gt; на примере дека, симметричного нашему предыдущему (в рисунке надо понять, что элементы хранятся слева направо: &amp;lt;tex&amp;gt;4 ~3 ~2 ~1&amp;lt;/tex&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Запустим первый &amp;lt;tex&amp;gt; \mathrm{popFront} &amp;lt;/tex&amp;gt;. Он будет рекурсивно вызывать сам себя, пока не дойдёт до последней ветки. Тогда в пару &amp;lt;tex&amp;gt; \left \langle temp, ~newDeque \right \rangle &amp;lt;/tex&amp;gt; сохранятся две пары элементов и пустой дек высоты &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;. Так как &amp;lt;tex&amp;gt; temp &amp;lt;/tex&amp;gt; не пуст, то в предыдущий рекурсивный вызов вернётся пара: в &amp;lt;tex&amp;gt;temp&amp;lt;/tex&amp;gt; новый сохранится пара &amp;lt;tex&amp;gt;4 ~3&amp;lt;/tex&amp;gt;, на текущем уровне будет пара &amp;lt;tex&amp;gt;2 ~1&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; child &amp;lt;/tex&amp;gt; будет ссылаться на пустой дек. Потом пара &amp;lt;tex&amp;gt;4 ~3&amp;lt;/tex&amp;gt; передастся выше, &amp;lt;tex&amp;gt;child&amp;lt;/tex&amp;gt; сохраняет ссылку на предыдущий дек, и, наконец, &amp;lt;tex&amp;gt;4&amp;lt;/tex&amp;gt; извлечётся. И так далее. Аналогично добавлению, процесс извлечения элемента можно представить, как вычитание &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; из младшего разряда двоичного числа.&lt;br /&gt;
&lt;br /&gt;
[[Файл:PopDequeExample.png|700px]]&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Список]]&lt;br /&gt;
* [[Стек]]&lt;br /&gt;
* [[Очередь]]&lt;br /&gt;
* [[Персистентный стек]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.13.3451 Purely Functional Deques with Catenation by Robert E. Tarjan]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Амортизационный анализ]]&lt;br /&gt;
[[Категория: Структуры данных]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D1%8F%D0%B7%D1%8C_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B_%D0%9A%D0%B8%D1%80%D1%85%D0%B3%D0%BE%D1%84%D0%B0_%D0%B8_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B_%D0%B8%D0%BD%D1%86%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=83504</id>
		<title>Связь матрицы Кирхгофа и матрицы инцидентности</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D1%8F%D0%B7%D1%8C_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B_%D0%9A%D0%B8%D1%80%D1%85%D0%B3%D0%BE%D1%84%D0%B0_%D0%B8_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B_%D0%B8%D0%BD%D1%86%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=83504"/>
				<updated>2022-09-01T05:03:51Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; — произвольный граф. Превратим каждое его ребро в дугу, придав ребру одно из двух возможных направлений. Полученный [[Основные определения теории графов#Ориентированные графы|орграф]] на том же самом множестве вершин будем называть '''ориентацией''' графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;K&amp;lt;/tex&amp;gt; — [[Матрица Кирхгофа| матрица Кирхгофа]] графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt; — [[Матрица инцидентности графа| матрица инцидентности]] &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; с некоторой ориентацией. Тогда &lt;br /&gt;
 &amp;lt;tex&amp;gt;K = I \cdot I^T.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
При умножении &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й строки исходной матрицы &amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;-й столбец транспонированной матрицы &amp;lt;tex&amp;gt;I^T &amp;lt;/tex&amp;gt; перемножаются &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-я и &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;-я строки исходной матрицы. При умножении &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й строки на саму себя на диагонали полученной матрицы получится сумма квадратов элементов &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й строки, которая равна, очевидно, &amp;lt;tex&amp;gt;\deg(v_i)&amp;lt;/tex&amp;gt;. Пусть теперь &amp;lt;tex&amp;gt;i \ne j&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt; (v_i, v_j) \in E &amp;lt;/tex&amp;gt;,  то существует ровно одно ребро, соединяющее &amp;lt;tex&amp;gt; v_i &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; v_j &amp;lt;/tex&amp;gt;, следовательно результат перемножения &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й и &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;-й строк равен &amp;lt;tex&amp;gt;-1&amp;lt;/tex&amp;gt;, в противном случае он равен &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; в силу отсутствия ребра, инцидентного обеим вершинам. Определенная данными условиями матрица и является матрицей Кирхгофа.&lt;br /&gt;
}}&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Граф&lt;br /&gt;
!Матрица Кирхгофа&lt;br /&gt;
!Матрица инцидентности&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Link_kirhgof_matrix_1.png|200px]]&lt;br /&gt;
|&amp;lt;tex&amp;gt;\left(\begin{array}{rrrrrr}&lt;br /&gt;
 2 &amp;amp; -1 &amp;amp;  0 &amp;amp;  0 &amp;amp; -1 &amp;amp;  0\\&lt;br /&gt;
-1 &amp;amp;  3 &amp;amp; -1 &amp;amp;  0 &amp;amp; -1 &amp;amp;  0\\&lt;br /&gt;
 0 &amp;amp; -1 &amp;amp;  2 &amp;amp; -1 &amp;amp;  0 &amp;amp;  0\\&lt;br /&gt;
 0 &amp;amp;  0 &amp;amp; -1 &amp;amp;  3 &amp;amp; -1 &amp;amp; -1\\&lt;br /&gt;
-1 &amp;amp; -1 &amp;amp;  0 &amp;amp; -1 &amp;amp;  3 &amp;amp;  0\\&lt;br /&gt;
 0 &amp;amp;  0 &amp;amp;  0 &amp;amp; -1 &amp;amp;  0 &amp;amp;  1\\&lt;br /&gt;
\end{array}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|&amp;lt;tex&amp;gt;\begin{pmatrix}&lt;br /&gt;
1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0\\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0\\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0\\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1\\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0\\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1\\&lt;br /&gt;
\end{pmatrix}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
*[[Матрица Кирхгофа]]&lt;br /&gt;
*[[Подсчет числа остовных деревьев с помощью матрицы Кирхгофа]]&lt;br /&gt;
*[[Количество помеченных деревьев]]&lt;br /&gt;
*[[Коды Прюфера]]&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
&lt;br /&gt;
*Асанов М., Баранский В., Расин В. {{---}} Дискретная математика: Графы, матроиды, алгоритмы — Ижевск: ННЦ &amp;quot;Регулярная и хаотическая динамика&amp;quot;, 2001, 288 стр.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;br /&gt;
[[Категория: Свойства остовных деревьев ]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%92%D0%B5%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B5%D0%B2%D0%BA%D0%BB%D0%B8%D0%B4%D0%BE%D0%B2%D0%BE_%D0%B8_%D0%BF%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%B5%D0%B2%D0%BA%D0%BB%D0%B8%D0%B4%D0%BE%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%BE&amp;diff=83503</id>
		<title>Вещественное евклидово и псевдоевклидово пространство</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%92%D0%B5%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B5%D0%B2%D0%BA%D0%BB%D0%B8%D0%B4%D0%BE%D0%B2%D0%BE_%D0%B8_%D0%BF%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%B5%D0%B2%D0%BA%D0%BB%D0%B8%D0%B4%D0%BE%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%BE&amp;diff=83503"/>
				<updated>2022-09-01T05:03:44Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
В этой статье затрагиваются [[Метрические, нормированные и евклидовы пространства#Вещественное псевдоевклидово пространство | вещественные псевдоевклидовы пространства]] и [[Метрические, нормированные и евклидовы пространства#Вещественное евклидово пространство | вещественные евклидовы пространства]].&lt;br /&gt;
&lt;br /&gt;
==Неравенство Коши-Буняковского(Шварца)==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement= &amp;lt;tex&amp;gt;\forall\: x,y\in E:\;|\left\langle x,y\right\rangle _{G}|\leq\Vert x\Vert_{G}\cdot\Vert y\Vert_{G}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof= Рассмотрим &amp;lt;tex&amp;gt;\left\langle \lambda x+y;\lambda x+y\right\rangle =\Vert\lambda x+y\Vert^{2}\geq0&amp;lt;/tex&amp;gt;&lt;br /&gt;
, где &amp;lt;tex&amp;gt;\lambda&amp;lt;/tex&amp;gt; - число&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left\langle \lambda x+y;\lambda x+y\right\rangle = \left\langle \lambda x;\lambda x\right\rangle +\left\langle \lambda x;y\right\rangle +\left\langle y;\lambda x\right\rangle +\left\langle y;y\right\rangle =&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\lambda^{2}\left\langle x,x\right\rangle +\lambda\cdot(\left\langle x;y\right\rangle +\left\langle y;x\right\rangle )+\left\langle y,y\right\rangle =\Vert x\Vert^{2}\cdot\lambda^{2}+2\lambda\left\langle x;y\right\rangle + \Vert y\Vert^{2}\geq0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;D \le 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; D/4=(\left\langle x,y\right\rangle )^{2}-\Vert x\Vert^{2}\cdot\Vert y\Vert^{2}\Rightarrow|\left\langle x,y\right\rangle |\leq\Vert x\Vert\cdot\Vert y\Vert&lt;br /&gt;
 &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
NB: равенство будет только в случае &amp;lt;tex&amp;gt;x=\lambda y&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about= следствие из Коши, неравенство треугольника&lt;br /&gt;
|statement= &amp;lt;tex&amp;gt;\Vert x+y \Vert \leq \Vert x \Vert+\Vert y \Vert&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof= &amp;lt;tex&amp;gt;{\Vert x+y \Vert}^{2} = \left\langle x+y; x+y\right\rangle  = \Vert x\Vert^{2}+2\left\langle x;y\right\rangle +&lt;br /&gt;
\Vert y\Vert^{2} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left\langle x;y\right\rangle \leq \Vert x\Vert\cdot\Vert y\Vert &amp;lt;/tex&amp;gt; (по Коши-Буняковскому)&lt;br /&gt;
&lt;br /&gt;
значит, &amp;lt;tex&amp;gt;{\Vert x+y \Vert}^{2} \le \Vert x\Vert^{2}+2{\Vert x\Vert \cdot \Vert y\Vert} + \Vert y\Vert^{2} \le (\Vert x\Vert+\Vert y\Vert)^{2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
возьмём корень из обоих частей уравнения и получим искомое неравенство&lt;br /&gt;
}}&lt;br /&gt;
==Угол между векторами==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&amp;lt;tex&amp;gt;\varphi=\angle(x,y)=arccos\frac{\left\langle x;y\right\rangle }{\Vert x\Vert\cdot\Vert y\Vert}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
NB: корректность следует напрямую из неравенства Коши-Буняковского:&lt;br /&gt;
&amp;lt;tex&amp;gt;|\left\langle x,y\right\rangle |\leq\Vert x\Vert\cdot\Vert y\Vert&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Расстояние от вектора до подпространства==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; - подпространство &amp;lt;tex&amp;gt;E\:(x \in E)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;dist\{x,L\}=inf_{y\in L}(dist\{x,y\})&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
[[Категория: Алгебра и геометрия 1 курс]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%B2%D1%8B%D0%BF%D1%83%D0%BA%D0%BB%D1%8B%D0%B5_%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B8:_%D0%94%D0%B6%D0%B0%D1%80%D0%B2%D0%B8%D1%81,_%D0%93%D1%80%D1%8D%D1%85%D0%B5%D0%BC,_%D0%AD%D0%BD%D0%B4%D1%80%D1%8E,_%D0%A7%D0%B5%D0%BD,_QuickHull&amp;diff=83502</id>
		<title>Статические выпуклые оболочки: Джарвис, Грэхем, Эндрю, Чен, QuickHull</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%B2%D1%8B%D0%BF%D1%83%D0%BA%D0%BB%D1%8B%D0%B5_%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B8:_%D0%94%D0%B6%D0%B0%D1%80%D0%B2%D0%B8%D1%81,_%D0%93%D1%80%D1%8D%D1%85%D0%B5%D0%BC,_%D0%AD%D0%BD%D0%B4%D1%80%D1%8E,_%D0%A7%D0%B5%D0%BD,_QuickHull&amp;diff=83502"/>
				<updated>2022-09-01T05:03:38Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ready}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Выпуклой оболочкой множества точек называется пересечение всех выпуклых множеств, содержащих все заданные точки.}}&lt;br /&gt;
&lt;br /&gt;
Ниже приводятся основные алгоритмы построения выпуклых оболочек статического множества. Используются обозначения: &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; - размер входных данных, &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; - размер оболочки.&lt;br /&gt;
&lt;br /&gt;
= Алгоритм Джарвиса =&lt;br /&gt;
&lt;br /&gt;
По-другому &amp;quot;Gift wrapping algorithm&amp;quot; (Заворачивание подарка).&lt;br /&gt;
Он заключается в том, что мы ищем выпуклую оболочку последовательно, против часовой стрелки, начиная с определенной точки.&lt;br /&gt;
&lt;br /&gt;
== Описание Алгоритма ==&lt;br /&gt;
[[File:Graham1.png|thumb|250px|Промежуточный шаг алгоритма. Для точки &amp;lt;tex&amp;gt;p_i&amp;lt;/tex&amp;gt; ищем следующую перебором.]] &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
# Возьмем точку &amp;lt;tex&amp;gt;p_0&amp;lt;/tex&amp;gt; нашего множества с самой маленькой у-координатой (если таких несколько, берем самую правую из них). Добавляем ее в ответ.&lt;br /&gt;
# На каждом следующем шаге для последнего добавленного &amp;lt;tex&amp;gt;p_i&amp;lt;/tex&amp;gt; ищем &amp;lt;tex&amp;gt;p_{i + 1}&amp;lt;/tex&amp;gt; среди всех недобавленных точек и &amp;lt;tex&amp;gt;p_0&amp;lt;/tex&amp;gt; {{Acronym|с максимальным полярным углом относительно &amp;lt;tex&amp;gt;p_i&amp;lt;/tex&amp;gt; (Если углы равны, надо сравнивать по расстоянию)|Считать углы не нужно, можно просто подставить в функцию сравнения предикат поворота}}. Добавляем &amp;lt;tex&amp;gt;p_{i + 1}&amp;lt;/tex&amp;gt; в ответ. Если &amp;lt;tex&amp;gt;p_{i + 1} == p_0&amp;lt;/tex&amp;gt; , заканчиваем алгоритм.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректность ==&lt;br /&gt;
&lt;br /&gt;
Точка &amp;lt;tex&amp;gt;p_0&amp;lt;/tex&amp;gt;, очевидно, принадлежит оболочке. На каждом последующем шаге алгоритма мы получаем прямую &amp;lt;tex&amp;gt;p_{i-1}p_i&amp;lt;/tex&amp;gt;, по построению которой все точки множества лежат слева от нее. Значит, выпуклая оболочка состоит из &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt;-ых и только из них.&lt;br /&gt;
&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
&lt;br /&gt;
Inplace-реализация алгоритма. &amp;lt;tex&amp;gt;S[1..n]&amp;lt;/tex&amp;gt; - исходное множество, &amp;lt;tex&amp;gt;n &amp;gt; 2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Jarvis(S)&lt;br /&gt;
    find i such that S[i] has the lowest y-coordinate and highest x-coordinate&lt;br /&gt;
    p0 = S[i]&lt;br /&gt;
    pi = p0&lt;br /&gt;
    k = 0&lt;br /&gt;
    do &lt;br /&gt;
      k++&lt;br /&gt;
      for i = k..n &lt;br /&gt;
        if S[i] has lower angle and higher distance than S[k] in relation to pi&lt;br /&gt;
          swap(S[i], S[k])&lt;br /&gt;
      pi = S[k]&lt;br /&gt;
    while pi != p0&lt;br /&gt;
    return k&lt;br /&gt;
&lt;br /&gt;
== Сложность ==&lt;br /&gt;
&lt;br /&gt;
Добавление каждой точки в ответ занимает &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; времени, всего точек будет &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, поэтому итоговая сложность &amp;lt;tex&amp;gt;O(nk)&amp;lt;/tex&amp;gt;. В худшем случае, когда оболочка состоит из всех точек сложность &amp;lt;tex&amp;gt;O(n^2)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Gift_wrapping_algorithm Английская статья — Wikipedia]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B6%D0%B0%D1%80%D0%B2%D0%B8%D1%81%D0%B0 Русская статья — Wikipedia]&lt;br /&gt;
&lt;br /&gt;
= Алгоритм Грэхема =&lt;br /&gt;
&lt;br /&gt;
Алгоритм заключается в том, что мы ищем точки оболочки последовательно, используя стек. &lt;br /&gt;
&lt;br /&gt;
== Описание Алгоритма ==&lt;br /&gt;
&lt;br /&gt;
[[File:Graham2.png|thumb|400px|Промежуточный шаг алгоритма. Зелеными линиями обозначена текущая выпуклая оболочка, синими - промежуточные соединения точек, красными - те отрезки, которые раньше входили в оболочку, а сейчас нет. На текущем шаге при добавлении точки &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; последовательно убираем из оболочки точки с &amp;lt;tex&amp;gt;i+3&amp;lt;/tex&amp;gt;-ей до &amp;lt;tex&amp;gt;i+1&amp;lt;/tex&amp;gt;-ой]]&lt;br /&gt;
&lt;br /&gt;
# Находим точку &amp;lt;tex&amp;gt;p_0&amp;lt;/tex&amp;gt; нашего множества с самой маленькой у-координатой (если таких несколько, берем самую правую из них), добавляем в ответ.&lt;br /&gt;
# Сортируем все остальные точки {{Acronym|по полярному углу относительно &amp;lt;tex&amp;gt;p_0&amp;lt;/tex&amp;gt;|Сортировка с компаратором 'Предикат поворота'}}.&lt;br /&gt;
# Добавляем в ответ &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; - самую первую из отсортированных точек.&lt;br /&gt;
# Берем следующую по счету точку &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;. Пока &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; и две последних точки в текущей оболочке &amp;lt;tex&amp;gt;p_i&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_{i-1}&amp;lt;/tex&amp;gt; образуют неправый поворот (вектора &amp;lt;tex&amp;gt;p_i t&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_{i-1} p_i&amp;lt;/tex&amp;gt;), удаляем из оболочки &amp;lt;tex&amp;gt;p_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Добавляем в оболочку &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Делаем п.4, пока не закончатся точки.&lt;br /&gt;
&lt;br /&gt;
== Корректность ==&lt;br /&gt;
&lt;br /&gt;
Докажем, что на каждом шаге множество &amp;lt;tex&amp;gt;p_i&amp;lt;/tex&amp;gt;-тых является выпуклой оболочкой всех уже рассмотренных точек. Доказательство проведем по индукции. &lt;br /&gt;
&lt;br /&gt;
* База. Для трех первых точек утверждение, очевидно, выполняется. &lt;br /&gt;
&lt;br /&gt;
* Переход. Пусть для &amp;lt;tex&amp;gt;i-1&amp;lt;/tex&amp;gt; точек оболочки совпадают. Докажем, что и для &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; точек они совпадут.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим истинную оболочку &amp;lt;tex&amp;gt;ch(S \cup {i}) = ch(S) \cup i \setminus P&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; - множество всех точек из &amp;lt;tex&amp;gt;ch(S)&amp;lt;/tex&amp;gt;, видимых из &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;. Так как мы добавляли точки в нашу оболочку против часовой стрелки и так как &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-тая точка лежит в &amp;lt;tex&amp;gt;ch(S \cup i)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; состоит из нескольких подряд идущих последних добавленных в оболочку точек, и именно их мы удаляем на текущем шаге. Поэтому наша оболочка и истинная для &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; точек совпадают.&lt;br /&gt;
&lt;br /&gt;
Тогда по индукции оболочки совпадают и для &amp;lt;tex&amp;gt;i = n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
&lt;br /&gt;
Inplace-реализация алгоритма. &amp;lt;tex&amp;gt;S[1..n]&amp;lt;/tex&amp;gt; - исходное множество, &amp;lt;tex&amp;gt;n &amp;gt; 2&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Graham(S)&lt;br /&gt;
   find i such that S[i] has the lowest y-coordinate and highest x-coordinate&lt;br /&gt;
   swap(S[i], S[1])&lt;br /&gt;
   sort S[2..n] by angle in relation to S[1]&lt;br /&gt;
   k = 2&lt;br /&gt;
   for p = 3..n&lt;br /&gt;
     while S[k - 1], S[k], S[p] has non-right orientation and k &amp;gt; 1&lt;br /&gt;
       k--&lt;br /&gt;
     swap(S[p], S[k + 1])  &lt;br /&gt;
     k++ &lt;br /&gt;
   return k + 1&lt;br /&gt;
&lt;br /&gt;
== Сложность ==&lt;br /&gt;
&lt;br /&gt;
Сортировка точек занимает &amp;lt;tex&amp;gt;O(n \log n)&amp;lt;/tex&amp;gt; времени. При обходе каждая точка добавляется в ответ не более одного раза, поэтому сложность этой части - &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;. Суммарное время — &amp;lt;tex&amp;gt;O(n \log n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Graham_scan Английская статья — Wikipedia]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%93%D1%80%D1%8D%D1%85%D0%B5%D0%BC%D0%B0 Русская статья — Wikipedia]&lt;br /&gt;
&lt;br /&gt;
= Алгоритм Эндрю =&lt;br /&gt;
&lt;br /&gt;
Алгоритм, очень похожий на алгоритм Грехема. Он заключается в том, что мы находим самую левую и самую правую точки, ищем для точек над и под этой прямой выпуклую оболочку Грехемом - {{Acronym|для них начальные точки будут лежать на &amp;lt;tex&amp;gt;\pm inf&amp;lt;/tex&amp;gt;, а сортировка по углу относительно далекой точки аналогична сортировке по координате|в этом легко убедиться, подставив в предикат поворота точку с 'бесконечно' координатой}}; после этого объединяем две оболочки в одну. &lt;br /&gt;
&lt;br /&gt;
== Описание Алгоритма ==&lt;br /&gt;
[[File:andrew1.png|thumb|400px|Промежуточный шаг алгоритма. Зелеными линиями обозначена текущая выпуклая оболочка, синими - промежуточные соединения точек, красными - те отрезки, которые раньше входили в оболочку, а сейчас нет. На текущем шаге при добавлении точки &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; последовательно убираем из оболочки точки с &amp;lt;tex&amp;gt;i+3&amp;lt;/tex&amp;gt;-ей до &amp;lt;tex&amp;gt;i+1&amp;lt;/tex&amp;gt;-ой]]&lt;br /&gt;
# Находим самую левую и самую правую точки множества - &amp;lt;tex&amp;gt;p_0&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Делим множество на две части: точки над и под прямой.&lt;br /&gt;
# Для каждой половины ищем выпуклую оболочку Грехемом с условием, что сортируем не по полярному углу, а по координате.&lt;br /&gt;
# Сливаем получившиеся оболочки. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректность ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
См. доказательство алгоритма Грехема.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
&lt;br /&gt;
Inplace-реализация алгоритма. &amp;lt;tex&amp;gt;S[1..n]&amp;lt;/tex&amp;gt; - исходное множество, &amp;lt;tex&amp;gt;n &amp;gt; 2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Andrew(S)&lt;br /&gt;
   sort S[1..n] by x-coordinate backward(than by y backward)&lt;br /&gt;
   k = 2&lt;br /&gt;
   for p = 3..n&lt;br /&gt;
    while S[k - 1], S[k], S[p] has non-right orientation&lt;br /&gt;
      k--&lt;br /&gt;
    swap(S[p], S[k + 1])&lt;br /&gt;
   k++   &lt;br /&gt;
   sort S[k + 1..n] by x-coordinate (than by y)&lt;br /&gt;
   for p = k + 1..n&lt;br /&gt;
     while S[k - 1], S[k], S[p] has non-right orientation&lt;br /&gt;
       k--&lt;br /&gt;
     swap(S[p], S[k + 1])&lt;br /&gt;
   return k + 1&lt;br /&gt;
&lt;br /&gt;
== Сложность ==&lt;br /&gt;
&lt;br /&gt;
Сортировка точек занимает &amp;lt;tex&amp;gt;O(n \log n)&amp;lt;/tex&amp;gt; времени. При обходе каждая точка добавляется в ответ не более одного раза, поэтому сложность двух обходов - &amp;lt;tex&amp;gt; 2 \cdot O(n)&amp;lt;/tex&amp;gt;. Суммарное время - &amp;lt;tex&amp;gt;O(n \log n)&amp;lt;/tex&amp;gt;. Также можно отметить тот факт, что Эндрю в целом работает быстрее чем Грэхем, так как использует всего &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; поворотов, в то время как Грэхем использует &amp;lt;tex&amp;gt;O(n \log n)&amp;lt;/tex&amp;gt; поворотов.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Graham_scan#Notes Одно предложение о нем]&lt;br /&gt;
* [https://en.wikibooks.org/wiki/Algorithm_Implementation/Geometry/Convex_hull/Monotone_chain Имплементация на 13 языках]&lt;br /&gt;
&lt;br /&gt;
= Алгоритм Чена =&lt;br /&gt;
&lt;br /&gt;
Является комбинацией двух алгоритмов - Джарвиса и Грехема. Недостатком Грэхема является необходимость сортировки всех точек по полярному углу, что занимает достаточно много времени &amp;lt;tex&amp;gt;O(n \log n)&amp;lt;/tex&amp;gt;. Джарвис требует перебора всех точек для каждой из &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; точек оболочки, что в худшем случае занимает &amp;lt;tex&amp;gt;O(n^2)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Описание Алгоритма ==&lt;br /&gt;
&lt;br /&gt;
# Разобьем все множество на произвольные группы по &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; штук в каждой. Будем считать, что &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; нам известно. Тогда всего групп окажется &amp;lt;tex&amp;gt;r = n / m&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Для каждой группы запускаем Грехема.&lt;br /&gt;
# Начиная с самой нижней точки ищем саму выпуклую оболочку Джарвисом, но перебираем не все точки, а по одной из каждой группы.&lt;br /&gt;
&lt;br /&gt;
== Сложность ==&lt;br /&gt;
&lt;br /&gt;
На втором шаге алгоритма в каждой группе оболочка ищется за &amp;lt;tex&amp;gt;O(m \log m)&amp;lt;/tex&amp;gt;, общее время - &amp;lt;tex&amp;gt;O(r m \log m) = O(n \log m)&amp;lt;/tex&amp;gt;. На третьем шаге поиск каждой следующей точки в каждой группе занимает &amp;lt;tex&amp;gt;O(\log m)&amp;lt;/tex&amp;gt;, так как точки уже отсортированы, и мы можем найти нужную бинпоиском. Тогда поиск по всем группам займет &amp;lt;tex dpi=&amp;quot;130&amp;quot;&amp;gt;O(r \log m) = O(\frac{n}{m} \log m)&amp;lt;/tex&amp;gt;. Всего таких шагов будет &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, значит общее время - &amp;lt;tex dpi=&amp;quot;130&amp;quot;&amp;gt;O(\frac{kn}{m} \log m)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Итоговое время - &amp;lt;tex&amp;gt;O(n (1 + \frac{k}{m}) \log m)&amp;lt;/tex&amp;gt;. Несложно видеть, что минимум достигается при &amp;lt;tex&amp;gt;m = k&amp;lt;/tex&amp;gt;. В таком случае сложность равна &amp;lt;tex&amp;gt;O(n \log k)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Поиск &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Как заранее узнать &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;? Воспользуемся следующим методом. Положим &amp;lt;tex&amp;gt;m = 2^{2^t}&amp;lt;/tex&amp;gt;. Начиная с маленьких &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; будем запускать наш алгоритм, причем если на третьем шаге Джарвис уже сделал &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; шагов, то мы выбрали наше &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; слишком маленьким, будем увеличивать, пока не станет &amp;lt;tex&amp;gt;m \ge k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда общее время алгоритма - &amp;lt;tex&amp;gt; \sum_{t=0}^{O(\log\log k)} O\left(n \log(2^{2^t})\right) = O(n) \sum_{t=0}^{O(\log\log k)} O(2^t) = O\left(n \cdot 2^{1+O(\log\log k)}\right) = O(n \log k).&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Chan%27s_algorithm Английская статья — Wikipedia]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%A7%D0%B0%D0%BD%D0%B0 Русская статья — Wikipedia]&lt;br /&gt;
&lt;br /&gt;
= Алгоритм QuickHull =&lt;br /&gt;
&lt;br /&gt;
== Описание Алгоритма ==&lt;br /&gt;
[[File:hull.png|thumb|250px|Промежуточный шаг алгоритма. Для прямой &amp;lt;tex&amp;gt;p_i p_1&amp;lt;/tex&amp;gt; нашли точку &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;. Над прямыми &amp;lt;tex&amp;gt;p_i p&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p p_1&amp;lt;/tex&amp;gt; точек нет, поэтому переходим к следующей прямой &amp;lt;tex&amp;gt;p_0 p_i&amp;lt;/tex&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
# Найдем самую левую точку &amp;lt;tex&amp;gt;p_0&amp;lt;/tex&amp;gt; и самую правую точку &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; (Если таких несколько, выберем среди таких нижнюю и верхнюю соответственно).&lt;br /&gt;
# Возьмем все точки выше прямой &amp;lt;tex&amp;gt;p_0 p_1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Найдем среди этого множества точку &amp;lt;tex&amp;gt;p_i&amp;lt;/tex&amp;gt;, наиболее отдаленную от прямой (если таких несколько, взять самую правую).&lt;br /&gt;
# Рекурсивно повторить шаги 2-3 для прямых &amp;lt;tex&amp;gt;p_0 p_i&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_i p_1&amp;lt;/tex&amp;gt;, пока есть точки.&lt;br /&gt;
# Добавить в ответ точки &amp;lt;tex&amp;gt;p_0 .. p_i .. p_1&amp;lt;/tex&amp;gt;, полученные в п. 3.&lt;br /&gt;
# Повторить пункты 2-5 для &amp;lt;tex&amp;gt;p_1 p_0&amp;lt;/tex&amp;gt; (то есть для &amp;quot;нижней&amp;quot; половины).&lt;br /&gt;
# Ответ - объединение списков из п. 5 для верхней и нижней половины.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректность ==&lt;br /&gt;
 &lt;br /&gt;
[[File:hull1.png|thumb|200px|]]&lt;br /&gt;
&lt;br /&gt;
Очевидно, что выпуклая оболочка всего множества является объединением выпуклых оболочек для верхнего и нижнего множества. Докажем, что алгоритм верно строит оболочку для верхнего множества, для нижнего рассуждения аналогичны.&lt;br /&gt;
Точки &amp;lt;tex&amp;gt;p_0&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; принадлежат оболочке.&lt;br /&gt;
&lt;br /&gt;
* Пусть какая-то точка входит в нашу оболочку, но не должна.&lt;br /&gt;
&lt;br /&gt;
Назовем эту точку &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;. По алгоритму эта точка появилась как самая удаленная от некой прямой &amp;lt;tex&amp;gt;t_1 t_2&amp;lt;/tex&amp;gt;. Так как &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; не входит в оболочку, то существует прямая &amp;lt;tex&amp;gt;t_3 t_4&amp;lt;/tex&amp;gt; из настоящей выпуклой оболочки, что &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; лежит снизу от прямой. Тогда какая-то из &amp;lt;tex&amp;gt;t_3&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;t_4&amp;lt;/tex&amp;gt; удалена от прямой дальше &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, что противоречит алгоритму.&lt;br /&gt;
&lt;br /&gt;
* Наоборот, пусть какой-то точки &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; в нашей оболочке нет, а должна быть.&lt;br /&gt;
&lt;br /&gt;
Пойдем вниз рекурсии в те ветки, где есть &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;. В какой-то момент &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; окажется внутри некоторого треугольника. Но тогда возникает противоречие с тем, что &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; принадлежит выпуклой оболочке.&lt;br /&gt;
&lt;br /&gt;
Таким образом, наша оболочка совпадает с истинной, а значит алгоритм корректен.&lt;br /&gt;
&lt;br /&gt;
== Реализация ==&lt;br /&gt;
&lt;br /&gt;
Заметим, что длина высоты, опущенная из точки &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; на отрезок &amp;lt;tex&amp;gt;ab&amp;lt;/tex&amp;gt;, пропорциональна векторному произведению &amp;lt;tex&amp;gt;[bt \cdot ba]&amp;lt;/tex&amp;gt;, поэтому для сравнения можно использовать именно это. Векторное произведение эквивалентно предикату поворота, поэтому можно так же использовать и его.&lt;br /&gt;
&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
&lt;br /&gt;
Inplace-реализация алгоритма. &amp;lt;tex&amp;gt;S[1..n]&amp;lt;/tex&amp;gt; - исходное множество. &amp;lt;tex&amp;gt;quick\_hull()&amp;lt;/tex&amp;gt; - рекурсивная функция, находящая оболочку подмножества &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;. В реализации в конце каждого подмножества находятся эл-ты, точно не принадлежащие оболочке.&lt;br /&gt;
&lt;br /&gt;
 QuickHull(S)&lt;br /&gt;
   find i such that S[i] has the highest x-coordinate and lowest y-coordinate &lt;br /&gt;
   swap(S[1], S[i])&lt;br /&gt;
   find i such that S[i] has the lowest x-coordinate and lowest y-coordinate&lt;br /&gt;
   swap(S[n], S[i])&lt;br /&gt;
   k = partition1(S) // разбиваем на те эл-ты, которые лежат над прямой и на остальные&lt;br /&gt;
   a = quick_hull(S, 1, k)&lt;br /&gt;
   b = quick_hull(S, k + 1, n);&lt;br /&gt;
   swap(S[a..k], S[k + 1, b])&lt;br /&gt;
   return start + (a - 1) + (b - k - 1) &amp;lt;br/&amp;gt;&lt;br /&gt;
 quick_hull(S, start, end)&lt;br /&gt;
   find i such that S[i], S[start], S[end] has maximum value&lt;br /&gt;
   (a, b) = partition2(S, start, end, S[i]) //свапаем эл-ты S так, чтобы сначала были все эл-ты над прямой S[start]S[i], потом S[i]S[end], потом все остальное&lt;br /&gt;
   c = quick_hull(S, start, a)&lt;br /&gt;
   d = quick_hull(S, a + 1, b)&lt;br /&gt;
   swap(S[c..a], S[a + 1..d])&lt;br /&gt;
   return start + (a - c) + (d - b)&lt;br /&gt;
&lt;br /&gt;
== Сложность ==&lt;br /&gt;
&lt;br /&gt;
Пусть время, необходимое для нахождения оболочки над некой прямой и множеством точек &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; есть &amp;lt;tex&amp;gt;T(S)&amp;lt;/tex&amp;gt;&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;T(S) = O(\|S\|) + T(A \in S) + T(B \in S)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;A, B&amp;lt;/tex&amp;gt; - множества над полученными прямыми. Отсюда видно, что в худшем случае, алгоритм тратит &amp;lt;tex&amp;gt;O(n^2)&amp;lt;/tex&amp;gt;. На рандомных же данных это число равно &amp;lt;tex&amp;gt;O(n \log n)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/QuickHull Английская статья — Wikipedia]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D1%83%D0%BC_%D0%BF%D0%BE_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC%D1%83_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D1%83_%D0%B7%D0%B0_6_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80&amp;diff=83501</id>
		<title>Теоретический минимум по функциональному анализу за 6 семестр</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D1%83%D0%BC_%D0%BF%D0%BE_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC%D1%83_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D1%83_%D0%B7%D0%B0_6_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80&amp;diff=83501"/>
				<updated>2022-09-01T05:03:31Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 1 A* и его ограниченность ==&lt;br /&gt;
Пусть оператор &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; действует из &amp;lt;tex&amp;gt; E &amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt; F &amp;lt;/tex&amp;gt;, и функционал &amp;lt;tex&amp;gt; \varphi &amp;lt;/tex&amp;gt; принадлежит &amp;lt;tex&amp;gt; F^* &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt; f(x) = \varphi (Ax), | f(x) | \le \| \varphi \| \| A \| \| x \| &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получили новый функционал &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;, принадлежащий &amp;lt;tex&amp;gt; E^* &amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt; \varphi \mapsto \varphi A &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \varphi A = A^* (\varphi), A^* : F^* \to E^* &amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt; A^* &amp;lt;/tex&amp;gt; {{---}} '''сопряженный оператор''' к &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; {{---}} линейный ограниченный оператор, то &amp;lt;tex&amp;gt; \| A^* \| = \| A \| &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 2 Ортогональные дополнения &amp;lt;tex&amp;gt; E &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; E^* &amp;lt;/tex&amp;gt; ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; E &amp;lt;/tex&amp;gt; {{---}} НП, &amp;lt;tex&amp;gt; S \subset E^* &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S^{\bot} = \{ x \in E \mid \forall f \in S: f(x) = 0 \} &amp;lt;/tex&amp;gt; {{---}} '''ортогональное дополнение''' &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Аналогично, если &amp;lt;tex&amp;gt; T \subset E &amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt; T^{\bot} = \{ f \in E^* \mid \forall x \in T: f(x) = 0 \} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement= &amp;lt;tex&amp;gt; \{ 0 \} = (E^*)^{\bot}, \{ \mathbf{0} \} = E^{\bot} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 3 Ортогональное дополнение R(A) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement= &amp;lt;tex&amp;gt; A \in \mathcal{L}(E,F) \implies \operatorname{Cl} R(A) = (\operatorname{Ker} A^*)^\perp &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 4 Ортогональное дополнение R(A*) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement= &amp;lt;tex&amp;gt; A \in \mathcal{L}(E,F),~R(A) = \operatorname{Cl} R(A) \implies  R(A^*) = (\operatorname{Ker}A )^\perp &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 5 Арифметика компактных операторов ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Множество называется '''относительно компактным (предкомпактным)''', если его замыкание компактно&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Линейный ограниченный оператор &amp;lt;tex&amp;gt; A : X \to Y &amp;lt;/tex&amp;gt; называется '''компактным''', если &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; переводит любое ограниченное подмножество &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; в относительно компактное множество из &amp;lt;tex&amp;gt; Y &amp;lt;/tex&amp;gt;. &lt;br /&gt;
}}&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement = &lt;br /&gt;
&amp;lt;tex&amp;gt; A \in \mathcal{L} (X,Y), ~ B \in \mathcal{L} (Y,Z) &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; C = B \cdot A &amp;lt;/tex&amp;gt; (произведение, суперпозиция). Тогда:&lt;br /&gt;
&lt;br /&gt;
# Если &amp;lt;tex&amp;gt; B &amp;lt;/tex&amp;gt; ­— ограниченный, &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; ­— компактный, то &amp;lt;tex&amp;gt; C &amp;lt;/tex&amp;gt; ­— компактный.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt; B &amp;lt;/tex&amp;gt; ­— компактный, &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; ­— ограниченный, то &amp;lt;tex&amp;gt; C &amp;lt;/tex&amp;gt; ­— компактный.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 10 (year2012) О компактности А* ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt; C(K) &amp;lt;/tex&amp;gt; - совокупность функций непрерывных на метрическом компакте K с равномерной нормой, т.е. &amp;lt;tex&amp;gt; \| f \| = \max\limits_{x \in K} | f(x) | &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Арцело-Асколи&lt;br /&gt;
|statement=&lt;br /&gt;
\\TODO&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; компактен &amp;lt;tex&amp;gt; \implies A^* &amp;lt;/tex&amp;gt; компактен.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 9 Размерность Ker(I-A) компактного A ==&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; {{---}} компактный оператор. Тогда &amp;lt;tex&amp;gt;\dim\operatorname{Ker}(I-A) &amp;lt; + \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 10 Замкнутость R(I-A)  компактного A ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;T = I - A&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; компактен, тогда &amp;lt;tex&amp;gt; R(T) &amp;lt;/tex&amp;gt; замкнуто.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 11 Лемма о Ker(I-A)^n  компактного A ==&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; M_n = \operatorname{Ker} ((I - A)^n), n \in \mathbb N&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; — компактный оператор.&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt; \exists n_0: M_{n_0} = M_{n_0 + 1} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 12 Условие справедливости  равенства  R(I-A)=E ==&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; — компактный оператор на банаховом &amp;lt;tex&amp;gt; E &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; T = I - A &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt; R(T) = E \iff \operatorname{Ker} T = \{0\} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 13 Альтернатива Фредгольма-Шаудера ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=&lt;br /&gt;
альтернатива Фредгольма-Шаудера&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;A:X \to X&amp;lt;/tex&amp;gt; — компактный оператор и &amp;lt;tex&amp;gt;T = A - \lambda I&amp;lt;/tex&amp;gt;. Тогда возможно только две ситуации:&lt;br /&gt;
# &amp;lt;tex&amp;gt;\operatorname{Ker} T = \{0\}&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt; y = Tx&amp;lt;/tex&amp;gt; разрешимо для любого &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\operatorname{Ker} T \ne \{0\}&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt; y = Tx&amp;lt;/tex&amp;gt; разрешимо только для тех &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;, которые принадлежат &amp;lt;tex&amp;gt;(\operatorname{Ker} T^*)^\perp&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 14 Спектр компактного оператора ==&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt;A - \lambda I&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
# &amp;lt;tex&amp;gt;\operatorname{Ker} (A - \lambda I) \ne \{0\}&amp;lt;/tex&amp;gt;, тогда оператор необратим, и &amp;lt;tex&amp;gt;\lambda&amp;lt;/tex&amp;gt; — собственное число, то есть &amp;lt;tex&amp;gt;\lambda \in \sigma(A)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt;\operatorname{Ker} (A - \lambda I) = \{0\}&amp;lt;/tex&amp;gt;, тогда по альтернативе, оператор непрерывно обратим, то есть &amp;lt;tex&amp;gt;\lambda \in \rho(A)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, спектр состоит из собственных чисел, и, возможно, нуля. Теперь изучим мощность спектра:&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Спектр компактного оператора не более чем счётен и его предельной точкой может быть только 0.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 15 Определение самосопряженного оператора, неравенство для (a+ib)I-A ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Оператор &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt; называется ''самосопряжённым'' (&amp;lt;tex&amp;gt;\mathcal{A} = \mathcal{A}^*&amp;lt;/tex&amp;gt;), если &amp;lt;tex&amp;gt;\forall x, y : \langle \mathcal{A}x, y \rangle = \langle x, \mathcal{A}y \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;tex&amp;gt;\lambda \in \mathbb{C}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\lambda \mathcal{I} - \mathcal{A} = (\mu\mathcal{I} - \mathcal{A}) + i\nu\mathcal{I}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\|(\lambda\mathcal{I}-\mathcal{A})x\| \ge |\nu|\cdot\|x\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 16 Вещественность спектра ограниченного самосопряженного оператора ==&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=Собственные числа самосопряжённого оператора вещественны&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 17 Критерий включения в резольвентное  множество ограниченного самосопряженного оператора ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=Пусть &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt;{{---}} самосопряжённый оператор. Тогда&lt;br /&gt;
&amp;lt;tex&amp;gt;\lambda \in \rho(\mathcal{A}) \iff \exists m &amp;gt; 0 : \forall x \in \mathcal{H} : \|(\lambda\mathcal{I}-\mathcal{A})x\| \ge m\|x\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 18 Критерий включения в спектр  ограниченного самосопряженного оператора ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=Пусть &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt;{{---}} самосопряжённый оператор. Тогда&lt;br /&gt;
&amp;lt;tex&amp;gt;\lambda \in \sigma(\mathcal{A}) \iff \exists x_n : \|x_n\| = 1 : \|(\lambda\mathcal{I}-\mathcal{A})x_n\| \to 0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 19 Локализация спектра с.с. оператора посредством  чисел m- и m+ ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&amp;lt;tex&amp;gt;m_- = \inf\limits_{\|x\| = 1} \langle \mathcal{A}x, x\rangle, m_+ = \sup\limits_{\|x\| = 1} \langle \mathcal{A}x, x \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=Пусть A — самосопряженный оператор&lt;br /&gt;
&lt;br /&gt;
1. &amp;lt;tex&amp;gt;\sigma(\mathcal{A}) \subset [m_-; m_+]&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. &amp;lt;tex&amp;gt;m_+, m_- \in \sigma(\mathcal{A})&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 20 Спектральный радиус ограниченного самосопряженного оператора и его норма ==&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=Если &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt;{{---}} самосопряжённый оператор, то &amp;lt;tex&amp;gt;r_\sigma(\mathcal{A}) = \|\mathcal{A}\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 21 Теорема Гильберта-Шмидта ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Гильберт, Шмидт&lt;br /&gt;
|statement=Если &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt;{{---}} самосопряжённый компактный оператор в гильбертовом пространстве &amp;lt;tex&amp;gt;\mathcal{H}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;M_{\lambda_i}&amp;lt;/tex&amp;gt;{{---}} его (оператора) собственные подпространства, то &amp;lt;tex&amp;gt;\mathcal{H} = M_{\lambda_1} \oplus M_{\lambda_2} \oplus \cdots \oplus M_{\lambda_n} \oplus \cdots &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 22 Разложение резольвенты компактного  самосопряженного оператора. ==&lt;br /&gt;
&amp;lt;tex&amp;gt;R_\lambda(y) = \sum\limits_{n=1}^\infty \frac{\langle y, \varphi_n\rangle}{\lambda-\lambda_n}\varphi_n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Теорема Банаха о сжимающем отображении==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Пусть на замкнутом шаре &amp;lt;tex&amp;gt;\overline{V} \subset X&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; - метрическое пространство, определён оператор &amp;lt;tex&amp;gt;A: \overline{V} \subset X \to X&amp;lt;/tex&amp;gt;. Он называется '''сжатием''' на &amp;lt;tex&amp;gt;\overline{V}&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;\exists\alpha\in(0; 1)&amp;lt;/tex&amp;gt; такой, что для &amp;lt;tex&amp;gt;{\forall}x,y \in M&amp;lt;/tex&amp;gt; выполняется &amp;lt;tex&amp;gt;{\rho(Ax,Ay)\leqslant\alpha{\cdot}\rho(x,y)}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=(''Банаха о неподвижной точке'')&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;T : \overline{V} \to \overline{V}&amp;lt;/tex&amp;gt; и является сжатием, тогда в этом шаре у оператора &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\exists !&amp;lt;/tex&amp;gt; неподвижная точка.&lt;br /&gt;
}}&lt;br /&gt;
[[Теорема Банаха о неподвижной точке]]&lt;br /&gt;
&lt;br /&gt;
==Дифференцирование отображений, неравенство Лагранжа.==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt;T : V_r(x_0) \to Y&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V_r(x_0) \subset X&amp;lt;/tex&amp;gt; и, кроме того, &amp;lt;tex&amp;gt;X, Y&amp;lt;/tex&amp;gt; - нормированные пространства.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;\|\delta x \| &amp;lt; r&amp;lt;/tex&amp;gt;. Тогда, очевидно, &amp;lt;tex&amp;gt;x + \delta x \in V_r(x_0)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Обозначим &amp;lt;tex&amp;gt;\delta T(x_0, \delta x) = T(x_0 + \delta x) - T(x_0)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Def.''' Отображение &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; называется дифференцируемым по Фреше в точке &amp;lt;tex&amp;gt;x_0&amp;lt;/tex&amp;gt;, если существует оператор &amp;lt;tex&amp;gt;A_{x_0} \in L(X,Y)&amp;lt;/tex&amp;gt; такой, что &amp;lt;tex&amp;gt;\delta T(x_0, \delta x) = A_{x_0}(\delta x) + o(\delta x)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;o(\delta x)&amp;lt;/tex&amp;gt; несёт следующий смысл: &amp;lt;tex&amp;gt;\frac{ {\|o(\delta x)\|}_Y } {{\| \delta x \|}_X} \to 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Обычно, в случае дифференцируемого отображения используют следующее обозначение: &amp;lt;tex&amp;gt;T_{x_0}' = A_{x_0}&amp;lt;/tex&amp;gt;. Подчеркнем, что &amp;lt;tex&amp;gt;T_{x_0}': X \to Y&amp;lt;/tex&amp;gt;. Аргументом является &amp;quot;отклонение&amp;quot; некоторой точки &amp;lt;tex&amp;gt;x'&amp;lt;/tex&amp;gt; от &amp;lt;tex&amp;gt;x_0&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;x - x_0&amp;lt;/tex&amp;gt;. А результат применения оператора: &amp;lt;tex&amp;gt;T(x') - T(x_0)&amp;lt;/tex&amp;gt; с точностью до &amp;lt;tex&amp;gt;o(\delta x = x' - x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Lm.''' (''Неравенство Лагранжа'')&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X, Y&amp;lt;/tex&amp;gt; -- нормированные пространства, &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; -- некоторый шар в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; и дан оператор &amp;lt;tex&amp;gt;T : V \to Y&amp;lt;/tex&amp;gt; и на всем этом шаре &amp;lt;tex&amp;gt;\exists T'(x)&amp;lt;/tex&amp;gt;. Тогда для любых &amp;lt;tex&amp;gt;a, b \in V : \|T(b) - T(a)\| \le M {\|b - a\|}_X&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;M = sup_{x \in [a, b]}\|T'(x)\|&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Локальная теорема о неявном отображении==&lt;br /&gt;
&lt;br /&gt;
'''Th.'''(''о неявном отображении'')&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; - шар в &amp;lt;tex&amp;gt; X, V \subset X&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;W \subset Y&amp;lt;/tex&amp;gt; - шар в &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;, и задан оператор &amp;lt;tex&amp;gt;T : {V} \times {W} \rightarrow Y&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;x_0 \in V,\: y_0 \in W,\: T(x_0, y_0) = 0 \in Y&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; \forall x \in V, \forall y \in W \quad \exists T^{'}_y &amp;lt;/tex&amp;gt; - дифференциал Фреше, непрерывный как отображение переменных &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть также &amp;lt;tex&amp;gt;T^{'}_{y}(x_0, y_0)&amp;lt;/tex&amp;gt; - непрерывно обратим.&lt;br /&gt;
&lt;br /&gt;
'''Тогда''' задача о неявном отображении для &amp;lt;tex&amp;gt;T(x, y) = 0&amp;lt;/tex&amp;gt; c начальным решением &amp;lt;tex&amp;gt;T(x_0, y_0) = 0&amp;lt;/tex&amp;gt; разрешима в некоторых окрестностях точек &amp;lt;tex&amp;gt;x_0, y_0&amp;lt;/tex&amp;gt;, а именно: для любого &amp;lt;tex&amp;gt;x' \in V_{\delta_1}(x_0)&amp;lt;/tex&amp;gt; существует единственное &amp;lt;tex&amp;gt;y' \in V_{\delta_2}(y_0) : T(x', y') = 0&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
http://neerc.ifmo.ru/wiki/index.php?title=Локальная_теорема_о_неявном_отображении&lt;br /&gt;
&lt;br /&gt;
== 24 Локальная сходимость метода Ньютона для операторных уравнений ==&lt;br /&gt;
&amp;lt;tex&amp;gt; \mathcal{F}(x) = x - \Gamma(x) \mathcal{T} (x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&amp;lt;tex&amp;gt; \mathcal{F}'(\overline x) = 0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 25 Проекторы Шаудера ==&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall \varepsilon &amp;gt; 0 \exists y_1 \in M, \hdots, y_p \in M &amp;lt;/tex&amp;gt; {{---}} конечная &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-сеть.&lt;br /&gt;
&lt;br /&gt;
Построим следующую функцию: &amp;lt;tex&amp;gt; \forall j = 1, \hdots, p, \forall y \in M: &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \mu_j(y) = \begin{cases} &lt;br /&gt;
0                           &amp;amp; \mbox{if } \| y - y_j \| \ge \varepsilon \\&lt;br /&gt;
\varepsilon - \| y - y_j \| &amp;amp; \mbox{if } \| y - y_j \| &amp;lt; \varepsilon \end{cases} &lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S(y) = \sum\limits_{j=1}^p \mu_j(y) &amp;lt;/tex&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex dpi = 140&amp;gt; P_\varepsilon (y) = \sum\limits_{j=1}^p \frac {\mu_j(y)} {S(y)} y_j &amp;lt;/tex&amp;gt; {{---}} ''проектор Шаудера''.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 26 Теорема Шаудера о неподвижной точке ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Шаудер&lt;br /&gt;
|about=о неподвижной точке&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; M &amp;lt;/tex&amp;gt; {{---}} ограниченное замкнутое выпуклое подмножество B-пространства &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \mathcal{T} &amp;lt;/tex&amp;gt; вполне непрерывно отображает &amp;lt;tex&amp;gt; M &amp;lt;/tex&amp;gt; в себя. &lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt; \exists x^* \in M : x^* = Tx^* &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 6 О компактности A*, сепарабельность R(A) ==&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement = &lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; ­— компактный, тогда &amp;lt;tex&amp;gt; R(A) &amp;lt;/tex&amp;gt; — сепарабельно (то есть, в &amp;lt;tex&amp;gt; R(A) &amp;lt;/tex&amp;gt; существует счетное всюду плотное подмножество).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement = &lt;br /&gt;
&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; — компактен &amp;lt;tex&amp;gt;\implies&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;A^*&amp;lt;/tex&amp;gt; — компактен&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 7 Базис Шаудера, лемма о координатном пространстве ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Базисом Шаудера в банаховом пространстве &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; называется множество его элементов &amp;lt;tex&amp;gt;e_1, e_2 \dots e_n \dots&amp;lt;/tex&amp;gt; такое, что у любого &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; существует единственное разложение &amp;lt;tex&amp;gt;x = \sum\limits_{i = 1}^{\infty} \alpha_i e_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Определим &amp;lt;tex&amp;gt;F = \{(\alpha_1 \dots \alpha_n\dots) \mid \exists x \in X: \sum\limits_{n=1}^\infty \alpha_n e_n \to x \}&amp;lt;/tex&amp;gt; — это линейное пространство. &lt;br /&gt;
&lt;br /&gt;
Так как ряд сходится, &amp;lt;tex&amp;gt;F&amp;lt;/tex&amp;gt; можно превратить в НП, определив норму как &amp;lt;tex&amp;gt;\| \alpha \| = \sup\limits_n \left\| \sum\limits_{i=1}^n \alpha_i e_i\right\|&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
Пространство &amp;lt;tex&amp;gt; F &amp;lt;/tex&amp;gt; относительно этой нормы — банахово.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 8 Почти конечномерность компактного оператора ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=&lt;br /&gt;
почти конечномерность компактного оператора&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — банахово пространство с базисом Шаудера, &amp;lt;tex&amp;gt;A:X \to X&amp;lt;/tex&amp;gt; — компактный, то для всех &amp;lt;tex&amp;gt;\varepsilon &amp;gt; 0&amp;lt;/tex&amp;gt; существует разложение оператора &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в сумму двух компактных операторов: &amp;lt;tex&amp;gt;A = A_1 + A_2&amp;lt;/tex&amp;gt; такое, что:&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;tex&amp;gt;\operatorname{dim}(R(A_1)) &amp;lt; +\infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\|A_2\| &amp;lt; \varepsilon&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
== 23 Локальная сходимость метода простой итерации ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=Локальная теорема о простой итерации&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть известно, что существует &amp;lt;tex&amp;gt; \overline{x}: \mathcal{T}(\overline{x}) = \overline{x} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \| \mathcal{T}(\overline{x})' \| \le q &amp;lt; 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда существует такой шар &amp;lt;tex&amp;gt; V_{\delta} (\overline x) &amp;lt;/tex&amp;gt;, что если &amp;lt;tex&amp;gt; x_0 \in V_{\delta} (\overline x) &amp;lt;/tex&amp;gt;, то:&lt;br /&gt;
* Метод простых итераций корректно определен: &amp;lt;tex&amp;gt; \mathcal{T}x_n \in V_{\delta} (\overline x), n \ge 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* &amp;lt;tex&amp;gt; x_n \to \overline x &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Функциональный анализ 3 курс]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%AD%D0%B4%D0%BC%D0%BE%D0%BD%D0%B4%D1%81%D0%B0-%D0%9A%D0%B0%D1%80%D0%BF%D0%B0&amp;diff=83500</id>
		<title>Алгоритм Эдмондса-Карпа</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%AD%D0%B4%D0%BC%D0%BE%D0%BD%D0%B4%D1%81%D0%B0-%D0%9A%D0%B0%D1%80%D0%BF%D0%B0&amp;diff=83500"/>
				<updated>2022-09-01T05:03:24Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм Эдмондса-Карпа является реализацией метода [[Алгоритм Форда-Фалкерсона для поиска максимального паросочетания|Форда-Фалкерсона]], в которой в качестве дополняющего пути выбирается [[Обход в ширину |кратчайший по рёбрам путь]] в остаточной сети (длины всех рёбер равны &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Описание ===&lt;br /&gt;
&lt;br /&gt;
# Положим все потоки равными нулю. Остаточная сеть изначально совпадает с исходной сетью.&lt;br /&gt;
# В остаточной сети находим кратчайший путь из источника в сток. Если такого пути нет, останавливаемся.&lt;br /&gt;
# Пускаем через найденный путь (он называется '''увеличивающим путём''' или '''увеличивающей цепью''') максимально возможный поток:&lt;br /&gt;
## На найденном пути в остаточной сети ищем ребро с минимальной пропускной способностью &amp;lt;tex&amp;gt;\mathrm{c_{min}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
## Для каждого ребра на найденном пути увеличиваем поток на &amp;lt;tex&amp;gt;\mathrm{c_{min}}&amp;lt;/tex&amp;gt;, а в противоположном ему — уменьшаем на &amp;lt;tex&amp;gt;\mathrm{c_{min}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
## Модифицируем остаточную сеть. Для всех рёбер на найденном пути, а также для противоположных им рёбер, вычисляем новую пропускную способность. Если она стала ненулевой, добавляем ребро к остаточной сети, а если обнулилась, стираем его.&lt;br /&gt;
# Возвращаемся на шаг 2.&lt;br /&gt;
&lt;br /&gt;
===Сложность===&lt;br /&gt;
Сложность алгоритма Эдмондса-Карпа равна &amp;lt;tex&amp;gt;O(VE^2)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
&lt;br /&gt;
 '''function''' EdmondsKarp(G, s, t):&lt;br /&gt;
     '''for''' (для) каждого ребра &amp;lt;tex&amp;gt;(u,v) \in E[G]&amp;lt;/tex&amp;gt;&lt;br /&gt;
         &amp;lt;tex&amp;gt;f[u,v] \leftarrow 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
         &amp;lt;tex&amp;gt;f[v,u] \leftarrow 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''while''' существует ''кратчайший'' путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; в остаточной сети &amp;lt;tex&amp;gt;G_f&amp;lt;/tex&amp;gt;&lt;br /&gt;
         &amp;lt;tex&amp;gt;c_f(p) \leftarrow min\{c_f(u,v) : (u,v) \in p\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''for''' &amp;lt;tex&amp;gt;(u,v) \in p&amp;lt;/tex&amp;gt;&lt;br /&gt;
             &amp;lt;tex&amp;gt;f[u,v] \leftarrow f[u,v] + c_f(p)&amp;lt;/tex&amp;gt;&lt;br /&gt;
             &amp;lt;tex&amp;gt;f[v,u] \leftarrow -f[u,v]&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректность алгоритма Эдмондса-Карпа ==&lt;br /&gt;
&lt;br /&gt;
На каждой итерации цикла &amp;lt;tex&amp;gt;\mathrm {while}&amp;lt;/tex&amp;gt; поток в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; увеличивается вдоль одного из кратчайших путей в &amp;lt;tex&amp;gt;G_f&amp;lt;/tex&amp;gt; из истока &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в сток &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;. Этот процесс повторяется до тех пор пока существует кратчайший &amp;lt;tex&amp;gt;s \leadsto t&amp;lt;/tex&amp;gt; путь в &amp;lt;tex&amp;gt;G_f&amp;lt;/tex&amp;gt;. Если в &amp;lt;tex&amp;gt;G_f&amp;lt;/tex&amp;gt; не существует кратчайшего пути из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, значит, не существует вообще никакого &amp;lt;tex&amp;gt;s \leadsto t&amp;lt;/tex&amp;gt; пути в &amp;lt;tex&amp;gt;G_f&amp;lt;/tex&amp;gt; следовательно по [[Теорема Форда-Фалкерсона|теореме Форда-Фалкерсона]] найденный поток &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; максимальный.&lt;br /&gt;
&lt;br /&gt;
== Оценка быстродействия ==&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=lemma1&lt;br /&gt;
|statement=&lt;br /&gt;
Если в сети &amp;lt;tex&amp;gt;G(V,E)&amp;lt;/tex&amp;gt; с истоком &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; и стоком &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; увеличение потока производится вдоль кратчайших &amp;lt;tex&amp;gt;s \leadsto t&amp;lt;/tex&amp;gt; путей в &amp;lt;tex&amp;gt;G_f&amp;lt;/tex&amp;gt;, то для всех вершин &amp;lt;tex&amp;gt;v \in V\backslash\{s,t\}&amp;lt;/tex&amp;gt; длина кратчайшего пути &amp;lt;tex&amp;gt;\delta_f(s, v)&amp;lt;/tex&amp;gt; в остаточной сети &amp;lt;tex&amp;gt;G_f&amp;lt;/tex&amp;gt; не убывает после каждого увеличения потока.&lt;br /&gt;
|proof=&lt;br /&gt;
Предположим противное, пусть существует вершина &amp;lt;tex&amp;gt;v \in V \backslash\{s,t\}&amp;lt;/tex&amp;gt;, что после какого-то увеличения потока длина кратчайшего пути из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; уменьшилась. Обозначим потоки до и после увеличения соответственно за &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;f'&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; {{---}} вершина, расстояние &amp;lt;tex&amp;gt;\delta'_f(s,v)&amp;lt;/tex&amp;gt; от &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; до которой минимально и уменьшилось с увеличением потока. Имеем &amp;lt;tex&amp;gt;\delta'_f(s,v) &amp;lt; \delta_f(s,v)&amp;lt;/tex&amp;gt;. Рассмотрим путь &amp;lt;tex&amp;gt;p = s \leadsto u \rightarrow v&amp;lt;/tex&amp;gt;, являющийся кратчайшим от &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; к &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;G'_f&amp;lt;/tex&amp;gt;. Тогда верно, что &amp;lt;tex&amp;gt;\delta'_f(s, u) = \delta'_f(s,v) - 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
По выбору &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; и из предыдущего утверждения получаем, что &amp;lt;tex&amp;gt;\delta'_f (s, u) \geqslant\delta_f(s,u)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Предположим &amp;lt;tex&amp;gt;(u, v) \in E_f&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;\delta_f(s,v) \leqslant \delta_f(s, u) + 1 \leqslant \delta'_f(s,u) + 1 = \delta'_f(s, v)&amp;lt;/tex&amp;gt;. Это противоречит &amp;lt;tex&amp;gt;\delta'_f(s,v) &amp;lt; \delta_f(s,v)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;(u,v) \notin E_f&amp;lt;/tex&amp;gt;, но известно, что &amp;lt;tex&amp;gt;(u,v) \in E_f'&amp;lt;/tex&amp;gt;. Появление ребра &amp;lt;tex&amp;gt;(u,v)&amp;lt;/tex&amp;gt; после увеличения потока означает увеличение потока по обратному ребру &amp;lt;tex&amp;gt;(v, u)&amp;lt;/tex&amp;gt;. Увеличение потока производится вдоль кратчайшего пути, поэтому кратчайший путь из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; вдоль которого происходило увеличения выглядит как &amp;lt;tex&amp;gt;s \leadsto v \rightarrow u&amp;lt;/tex&amp;gt;, из чего получаем &amp;lt;tex&amp;gt;\delta_f(s, v) = \delta_f(s, u) - 1 \leqslant \delta'_f(s, u) - 1 = \delta'(s, v) - 2&amp;lt;/tex&amp;gt;. Данное утверждение противоречит &amp;lt;tex&amp;gt;\delta'_f(s,v) &amp;lt; \delta_f(s,v)&amp;lt;/tex&amp;gt;. Итак мы пришли к противоречию с существованием вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, кратчайшее расстояние до которой уменьшилось с увеличением потока.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Опираясь на предшествующую лемму, докажем следующую теорему, которая ограничивает сверху число итераций цикла &amp;lt;tex&amp;gt;\mathrm {while}&amp;lt;/tex&amp;gt;  в алгоритме Эдмондса-Карпа.&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=Пусть для некоторой сети &amp;lt;tex&amp;gt;G(V,E)&amp;lt;/tex&amp;gt; с источником &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; и стоком &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; выполняется алгоритм Эдмондса-Карпа, тогда общее число итераций цикла &amp;lt;tex&amp;gt;\mathrm {while}&amp;lt;/tex&amp;gt;  составляет &amp;lt;tex&amp;gt;O(V E)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим множество рёбер &amp;lt;tex&amp;gt;(u,v)&amp;lt;/tex&amp;gt; остаточной сети &amp;lt;tex&amp;gt;G_f&amp;lt;/tex&amp;gt;, принадлежащих увеличивающему пути &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;, таких что &amp;lt;tex&amp;gt;c_f(p) = c_f(u,v)&amp;lt;/tex&amp;gt;. Назовем данные рёбра критическими. Покажем, что каждое из &amp;lt;tex&amp;gt;|E|&amp;lt;/tex&amp;gt; рёбер может становиться критическим не более, чем &amp;lt;tex&amp;gt;|V| - 1&amp;lt;/tex&amp;gt; раз. Заметим, что после увеличения потока вдоль пути &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; все критические рёбра исчезают из остаточной сети, кроме того по определению остаточной пропускной способности пути хотя бы одно ребро увеличивающего пути {{---}} критическое.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим две вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; принадлежащие &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;, соединенные некоторым ребром из &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt;. Увеличение производится вдоль кратчайших путей, поэтому если ребро &amp;lt;tex&amp;gt;(u,v)&amp;lt;/tex&amp;gt; становиться критическим в первый раз, верно, что &amp;lt;tex&amp;gt;\delta_f(s,v) = \delta_f(s,u) + 1&amp;lt;/tex&amp;gt;. После увеличения потока ребро &amp;lt;tex&amp;gt;(u, v)&amp;lt;/tex&amp;gt; исчезает из сети. Оно не появится в другом увеличивающем пути до тех, пор пока не будет уменьшено по обратному ребру &amp;lt;tex&amp;gt;(v, u)&amp;lt;/tex&amp;gt;. Это может произойти только в том случае, если ребро &amp;lt;tex&amp;gt;(v, u)&amp;lt;/tex&amp;gt; встретится на некотором увеличивающем пути. Пусть в момент перед увеличением поток в сети &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; составлял &amp;lt;tex&amp;gt;f'&amp;lt;/tex&amp;gt;, то поскольку увеличение производиться вдоль кратчайших путей, верно: &amp;lt;tex&amp;gt;\delta'_f(s,u) = \delta'_f(s, v) + 1&amp;lt;/tex&amp;gt;. Согласно [[#lemma1|лемме]] &amp;lt;tex&amp;gt;\delta_f(s,v) \leqslant \delta'_f(s,v)&amp;lt;/tex&amp;gt;, откуда &amp;lt;tex&amp;gt;\delta'_f(s,u) = \delta'(s,v) + 1 \geqslant \delta_f(s,v) + 1 = \delta_f(s,u) + 2&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Итак в промежуток времени между тем, когда ребро &amp;lt;tex&amp;gt;(u,v)&amp;lt;/tex&amp;gt; становится критическим в первый раз, до момента, когда оно становится критическим в следующий раз, расстояние от &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; увеличивается минимум на &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt;. Расстояние &amp;lt;tex&amp;gt;\delta(s,u)&amp;lt;/tex&amp;gt; в начальный момент времени больше либо равно &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;. Среди промежуточных вершин на кратчайшем пути &amp;lt;tex&amp;gt;s \leadsto u&amp;lt;/tex&amp;gt; не могут находиться &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;. Следовательно к тому моменту, когда вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; станет недостижимой из источника расстояние до нее не превысит &amp;lt;tex&amp;gt;|V| - 2&amp;lt;/tex&amp;gt;. Получаем, что ребро &amp;lt;tex&amp;gt;(u, v)&amp;lt;/tex&amp;gt; могло стать критическим не более &amp;lt;tex&amp;gt;\dfrac{(|V| -2)}{2} = \dfrac{|V|}{2} - 1&amp;lt;/tex&amp;gt; раз. Поскольку в графе не более &amp;lt;tex&amp;gt;O(E)&amp;lt;/tex&amp;gt; пар вершин, между которыми могут существовать рёбра в остаточной сети, то общее количество критических рёбер в ходе выполнения алгоритма Эдмондса-Карпа равно &amp;lt;tex&amp;gt;O(V E)&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Так как каждый увеличивающий путь содержит по крайней мере одно критическое ребро, следовательно число кратчайших путей составляет &amp;lt;tex&amp;gt;O(V E)&amp;lt;/tex&amp;gt;. На каждой итерации цикла &amp;lt;tex&amp;gt;\mathrm {while}&amp;lt;/tex&amp;gt;  рассматривается ровно один увеличивающий путь, а поскольку в случае отсутствия такого пути выполнение цикла прерывается, то число итераций цикла &amp;lt;tex&amp;gt;\mathrm {while}&amp;lt;/tex&amp;gt;  также составляет &amp;lt;tex&amp;gt;O(V E)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Если увеличивающий путь находить поиском в ширину, то каждую итерацию цикла &amp;lt;tex&amp;gt;\mathrm {while}&amp;lt;/tex&amp;gt;  можно выполнить за время &amp;lt;tex&amp;gt;O(E)&amp;lt;/tex&amp;gt;. Инициализация в процедуре '''Edmonds Karp''' производится за &amp;lt;tex&amp;gt;O(E)&amp;lt;/tex&amp;gt;, следовательно время работы алгоритма алгоритма Эдмондса-Карпа составляет &amp;lt;tex&amp;gt;O(V E^2)&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
== Пример графа, на котором алгоритм дает плохую асимптотику ==&lt;br /&gt;
[[Файл:MaxFlowWorstCase.png|365px|thumb|right|«Грибок». Схема построения &amp;quot;сложного&amp;quot; для алгоритма Эдмондса-Карпа графа]]&lt;br /&gt;
&lt;br /&gt;
Заметим также, что существует ''сеть  грибок''&amp;lt;ref&amp;gt;[https://www.topcoder.com/community/data-science/data-science-tutorials/maximum-flow-augmenting-path-algorithms-comparison/#! Cтатья на TopCoder.com  ]&amp;lt;/ref&amp;gt; на которой нижняя граница времени работы алгоритмы Эдмондса-Карпа также составляет &amp;lt;tex&amp;gt;\Omega(V E^2)&amp;lt;/tex&amp;gt;. Рассмотрим этот случай более подробно. Норман Заде (англ. ''Norman Zadeh'') описал примеры, которые позволяют добиться асимптотики &amp;lt;tex&amp;gt;\Omega(V^3)&amp;lt;/tex&amp;gt;&amp;lt;ref&amp;gt;Norman Zadeh. Theoretical Efficiency of the Edmonds-Karp Algorithm for Computing Maximal Flows.&amp;lt;/ref&amp;gt;. В нашем примере алгоритм выполнит &amp;lt;tex&amp;gt;\Omega(V^3)&amp;lt;/tex&amp;gt; улучшений пути вне зависимости от выбора этого пути.&lt;br /&gt;
Разделим все вершины (за исключением &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;) на подмножества:&lt;br /&gt;
*&amp;lt;tex&amp;gt;S={s_1,\ldots,s_k}&amp;lt;/tex&amp;gt; — множество вершин, в которые входят рёбра из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; с пропускной способностью &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;,&lt;br /&gt;
*&amp;lt;tex&amp;gt;T={t_1,\ldots,t_k}&amp;lt;/tex&amp;gt; — множество вершин, из которых исходят рёбра в &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; с пропускной способностью &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, &lt;br /&gt;
*&amp;lt;tex&amp;gt;U={u_1,\ldots,u_{2p}}&amp;lt;/tex&amp;gt; — множество вершин, достижимых из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; по рёбрам с бесконечной пропускной способностью (не используя иные рёбра),&lt;br /&gt;
*&amp;lt;tex&amp;gt;V={v_1,\ldots,v_{2p}}&amp;lt;/tex&amp;gt; — множество вершин, из которых можно достигнуть &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; по рёбрам с бесконечной пропускной способностью (не используя иные рёбра).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; содержат &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; вершин, &amp;lt;tex&amp;gt;U&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; содержат &amp;lt;tex&amp;gt;2p&amp;lt;/tex&amp;gt; вершин. Где &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; фиксированные целые числа. Каждое ребро, выделенное жирным(см. рисунок, соединяют множества &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;), имеет единичную пропускную способность; пунктирные рёбра имеют бесконечную пропускную способность; остальные рёбра(в форме дуги) имеют пропускную способность &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
В начале работы алгоритма путь увеличиться &amp;lt;tex&amp;gt;k^2&amp;lt;/tex&amp;gt; раз по пути (&amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;), длина которого равна трем. После этого остаточная сеть будет содержать обратные рёбра из &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, и алгоритм выберет еще &amp;lt;tex&amp;gt;k^2&amp;lt;/tex&amp;gt; путей &amp;lt;tex&amp;gt;(s, u_1, u_2, T, S, v_2, v_1, t)&amp;lt;/tex&amp;gt; длины &amp;lt;tex&amp;gt;7&amp;lt;/tex&amp;gt;, затем путь &amp;lt;tex&amp;gt;(s, u_1, u_2, u_3, u_4, S, T, v_4, v_3, v_2, v_1, t)&amp;lt;/tex&amp;gt; длины &amp;lt;tex&amp;gt;11&amp;lt;/tex&amp;gt; и так далее.&lt;br /&gt;
:Число вершин в сети: &amp;lt;tex&amp;gt;n = 2\cdot k + 4\cdot p + 2&amp;lt;/tex&amp;gt;. &lt;br /&gt;
:Число рёбер: &amp;lt;tex&amp;gt; m = k^2 + 2\cdot p\cdot k + 2\cdot k + 4\cdot p&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Нетрудно заметить, что число удлиняющих путей &amp;lt;tex&amp;gt; a = k^2\cdot (p+1)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Возьмем &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; равным &amp;lt;tex&amp;gt;k - 1&amp;lt;/tex&amp;gt;. В этом случае &amp;lt;tex&amp;gt;n = 6 \cdot k - 2&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;a = k^3&amp;lt;/tex&amp;gt;. Заде приводит более хитрые примеры с такой же асимптотикой, но они зависят от выбора пути.&lt;br /&gt;
&lt;br /&gt;
[[Файл:InGraph.png|300px|thumb|left| Изначальный граф, нулевой поток]]&lt;br /&gt;
[[Файл:SecondStage.png|300px|center|thumb| Граф после &amp;lt;tex&amp;gt;k^2&amp;lt;/tex&amp;gt; поисков пути(в нашем случае &amp;lt;tex&amp;gt;k^2 = 4&amp;lt;/tex&amp;gt;).&amp;lt;br/&amp;gt;Рёбра из между множествами &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; полностью насыщены. Поток равен четырем]]&lt;br /&gt;
[[Файл:ThirdStageEdmunds karp.png|300px|thumb|left| Алгоритм нашел путь через рёбра бесконечной вместимости, совершив еще &amp;lt;tex&amp;gt;k^2 = 4&amp;lt;/tex&amp;gt; шагов. Поток равен восьми]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
*[[Определение сети, потока]]&lt;br /&gt;
*[[Обход в ширину]]&lt;br /&gt;
*[[Алгоритм Форда-Фалкерсона, реализация с помощью поиска в глубину|Алгоритм Форда-Фалкерсона]]&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* ''Кормен, Томас Х., Лейзерсон, Чарльз И., Ривест, Рональд Л., Штайн Клиффорд'' '''Алгоритмы: построение и анализ''', 2-е издание. Пер. с англ. — М.:Издательский дом &amp;quot;Вильямс&amp;quot;, 2010. — 1296 с.: ил. — Парал. тит. англ. — ISBN 978-5-8459-0857-5 (рус.)&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Алгоритм_Эдмондса_—_Карпа Википедия: Алгоритм Эдмондса-Карпа]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Edmonds–Karp_algorithm Википедия: Алгоритм Эдмондса-Карпа (англ.)]&lt;br /&gt;
*[https://www.topcoder.com/community/data-science/data-science-tutorials/maximum-flow-augmenting-path-algorithms-comparison/#! Статья на TopCoder.com]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Задача о максимальном потоке]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B9_%D0%BF%D0%BE_%D0%94%D0%9C_2015_%D0%BE%D1%81%D0%B5%D0%BD%D1%8C&amp;diff=83499</id>
		<title>Список заданий по ДМ 2015 осень</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B9_%D0%BF%D0%BE_%D0%94%D0%9C_2015_%D0%BE%D1%81%D0%B5%D0%BD%D1%8C&amp;diff=83499"/>
				<updated>2022-09-01T05:03:18Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;wikitex&amp;gt;&lt;br /&gt;
= Дискретная математика, 1 семестр =&lt;br /&gt;
&lt;br /&gt;
# Пусть $R$ и $S$ - рефлексивные отношения на $A$. Будет ли рефлексивным их а) объединение? б) пересечение? В этом и следующих заданиях, если ответ отрицательный, при демонстрации контрпримера удобно использовать представление отношения в виде ориентированного графа.&lt;br /&gt;
# Пусть $R$ и $S$ - симметричные отношения на $A$. Будет ли симметричным их а) объединение? б) пересечение?&lt;br /&gt;
# Пусть $R$ и $S$ - транзитивные отношения на $A$. Будет ли транзитивным их а) объединение? б) пересечение?&lt;br /&gt;
# Пусть $R$ и $S$ - антисимметричные отношения на $A$. Будет ли антисимметричным их а) объединение? б) пересечение?&lt;br /&gt;
# Определим $R^{-1}$ следующим образом: если $xRy$, то $yR^{-1}x$. Выполнено ли соотношение $RR^{-1} = I$, где $I$ - отношение равенства? Выполнен ли закон сложения степенией $R^iR^j=R^{i+j}$, если $i$ и $j$ разного знака?&lt;br /&gt;
# Пусть $R$ обладает свойством $X$. Будет ли обладать свойством $X$ отношение $R^{-1}$? Следует проанализировать $X$ - рефлексивность, антирефлексивность, симметричность, антисимметричность, транзитивность&lt;br /&gt;
# Пусть $R$ и $S$ - транзитивные отношения на $A$. Будет ли транзитивным их композиция?&lt;br /&gt;
# Пусть $R$ и $S$ - антисимметричные отношения на A. Будет ли антисимметричным их композиция?&lt;br /&gt;
# Постройте пример рефлексивного, симметричного, но не транзитивного отношения&lt;br /&gt;
# Постройте пример рефлексивного, антисимметричного, но не транзитивного отношения&lt;br /&gt;
# Является ли отношение $R$, такое что $(a, b) R (c, d)$, если $ad = bc$ на ${\mathbb Z}^+ \times {\mathbb N}$ отношением эквивалентности?&lt;br /&gt;
# Может ли отношение частичного порядка быть отношением эквивалентности? Если да, то в каких случаях?&lt;br /&gt;
# Можно ли в определении отношения эквивалентности убрать требование рефлексивности отношения, потому что оно следует из симметричности и транзитивности?&lt;br /&gt;
# Выразите в явном виде &amp;quot;и&amp;quot;, &amp;quot;или&amp;quot; и &amp;quot;не&amp;quot; через стрелку Пирса&lt;br /&gt;
# Выразите в явном виде &amp;quot;и&amp;quot;, &amp;quot;или&amp;quot; и &amp;quot;не&amp;quot; через штрих Шеффера&lt;br /&gt;
# Можно ли &amp;quot;и&amp;quot;, &amp;quot;или&amp;quot; и &amp;quot;не&amp;quot; выразить через функции из множества $\{x\oplus y, x = y\}$?&lt;br /&gt;
# Можно ли &amp;quot;и&amp;quot;, &amp;quot;или&amp;quot; и &amp;quot;не&amp;quot; выразить через функции из множества $\{x\to y, \neg x\}$?&lt;br /&gt;
# Можно ли &amp;quot;и&amp;quot;, &amp;quot;или&amp;quot; и &amp;quot;не&amp;quot; выразить через функции из множества $\{{\mathbf 0}, \langle xyz\rangle, \neg x\}$ ?&lt;br /&gt;
# Можно ли &amp;quot;и&amp;quot;, &amp;quot;или&amp;quot; и &amp;quot;не&amp;quot; выразить через функции из множества $\{x \to y, \langle xyz\rangle, \neg x\}$ ?&lt;br /&gt;
# Можно ли выразить &amp;quot;и&amp;quot; через &amp;quot;или&amp;quot;?&lt;br /&gt;
# Выразите медиану 5 через медиану 3&lt;br /&gt;
# Выразите медиану $2n+1$ через медиану 3&lt;br /&gt;
# Булева функция называется пороговой, если $f(x_1, x_2, \ldots, x_n) = 1$ тогда и только тогда, когда $a_1x_1+a_2x_2+\ldots+a_nx_n \ge b$, где $a_i$ и $b$ - вещественные числа. Докажите, что &amp;quot;и&amp;quot; и &amp;quot;или&amp;quot; - пороговые функции.&lt;br /&gt;
# Приведите пример непороговой функции&lt;br /&gt;
# Рассмотрим булеву функцию $f$. Обозначим как $N(f)$ число наборов аргументов, на которых $f$ равна 1. Например, $N(\vee) = 3$. Обозначим как $\Sigma(f)$ сумму всех наборов аргументов, на которых $f$ равна 1 как векторов. Например, $\Sigma(\vee) = (2, 2)$. Докажите, что если для пороговой функции $f$ и функции $g$ выполнено $N(f) = N(g)$ и $\Sigma(f) = \Sigma(g)$, то $f = g$&lt;br /&gt;
# Постройте двойственную функцию для каждой функции от 2 аргументов.&lt;br /&gt;
# Сколько существует самодвойственных функций от $n$ аргуметов?&lt;br /&gt;
# Будем говорить, что функция существенно зависит от переменной $x_i$, если существует два набора аргументов, различающихся только значением $x_i$, на которых функция принимает различные значения. Сколько существует булевых функций от $n$ аргументов, существенно зависящих от всех аргументов? Достаточно привести рекуррентную формулу.&lt;br /&gt;
# Приведите пример функции, существенно зависящей хотя бы от 3 аргументов, которая лежит во всех 5 классах Поста.&lt;br /&gt;
# Приведите пример функции, существенно зависящей хотя бы от 3 аргументов, которая не лежит ни в одном классе Поста.&lt;br /&gt;
# Докажите, что любую функцию от $n$ переменных можно представить с использованием стрелки Пирса формулой, длиной не больше чем $2^n\cdot poly(n)$, где $poly(n)$ - полином, общий для всех функций&lt;br /&gt;
# Докажите, что любую монотонную функцию можно выразить через &amp;quot;и&amp;quot;, &amp;quot;или&amp;quot;, 0 и 1.&lt;br /&gt;
# Докажите, что любую монотонную самодвойственую функцию можно выразить через медиану&lt;br /&gt;
# Игра &amp;quot;два шага вперед, один назад&amp;quot;. Задана булева функция от $n$ аргументов $f(x_1, \ldots, x_n)$. Играют два игрока: 0 и 1. Игроки делают ходы по очереди. Для хода используется вспомогательное значение $m$, исходно равное 0, кроме того исходно все значения переменных не определены. Ход заключается в следующем. Игрок либо увеличивает $m$ на 2, либо уменьшает на 1. После этого действия значение $m$ должно удовлетворять неравенству $1 \le m \le n$. Затем, если значение $x_m$ не определено, то игрок присваивает переменной $x_m$ значение на свое усмотрение. Если же значение $x_m$ определено, то оно меняется на противоположное. Игра заканчивается, когда все значения определены. Если значение функции $f$ на получившемся наборе переменных равно 1, то выигрывает 1, иначе выигрывает 0. Проанализируйте описанную игру для значений $n$ от 2 до 9 на функции $f(x_1, \ldots, x_n)$, равной 1, если строка $x_1x_2\ldots x_n$ лексикографически строго меньше строки $x_nx_{n-1}\ldots x_1$.&lt;br /&gt;
# Проанализируйте игру &amp;quot;два шага вперед, один назад&amp;quot; для значений $n$ от 2 до 9 на функции $f(x_1, \ldots, x_n)=x_1\oplus x_2\oplus \ldots\oplus x_n$.&lt;br /&gt;
# Проанализируйте игру &amp;quot;два шага вперед, один назад&amp;quot; для значений $n$ от 2 до 9 на функции $f(x_1, \ldots, x_n)$, равной 1, если строка $x_1x_2\ldots x_n$ не содержит двух единиц подряд.&lt;br /&gt;
# Проанализируйте игру &amp;quot;два шага вперед, один назад&amp;quot; для значений $n$ от 2 до 9 на функции $f(x_1, \ldots, x_n)$, равной 1, если строка $x_1x_2\ldots x_n$ представляет собой (возможно дополненную ведущими нулями) двоичную запись простого числа.&lt;br /&gt;
# Говорят, что формула имеет вид 2-КНФ, если она имеет вид $(t_{11}\vee t_{12})\wedge(t_{21}\vee t_{22})\wedge\ldots$, где $t_{ij}$ представляет собой либо переменную, либо ее отрицание (в каждом дизъюнкте ровно два терма). Предложите полиномиальный алгоритм проверки, что формула, заданная в 2-КНФ имеет набор значений переменных, на которых она имеет значение 1.&lt;br /&gt;
# КНФ называется КНФ Хорна, если в каждом дизъюнкте не более одной переменной находится без отрицания. Пример: $x\wedge(x \vee \neg y \vee \neg z) \wedge (\neg x \vee \neg t)$. Предложите полиномиальный алгоритм проверки, что формула, заданная в форме КНФ Хорна имеет набор аргументов, на котором она равна 1.&lt;br /&gt;
# Докажите, что если булеву функцию $f$ можно задать в форме Крома (в виде 2-КНФ), то выполнено следствие: $f(x_1, ..., x_n) = f(y_1, ..., y_n) = f(z_1, ..., z_n) = 1$ $\Rightarrow f(\langle x_1, y_1, z_1\rangle, ..., \langle x_n, y_n, z_n \rangle) = 1$&lt;br /&gt;
# Докажите, что если выполнено следствие: $f(x_1, ..., x_n) = f(y_1, ..., y_n) = f(z_1, ..., z_n) = 1$ $\Rightarrow f(\langle x_1, y_1, z_1\rangle, ..., \langle x_n, y_n, z_n \rangle) = 1$, то булеву функцию $f$ можно задать в форме Крома.&lt;br /&gt;
# Докажите, что если булеву функцию $f$ можно задать в форме Хорна, то выполнено следствие: $f(x_1, ..., x_n) = f(y_1, ..., y_n) = 1 \Rightarrow f(x_1\wedge y_1, ..., x_n \wedge y_n) = 1$&lt;br /&gt;
# Докажите, что если выполнено следствие: $f(x_1, ..., x_n) = f(y_1, ..., y_n) = 1 \Rightarrow f(x_1\wedge y_1, ..., x_n \wedge y_n) = 1$, то булеву функцию $f$ можно задать в форме Хорна&lt;br /&gt;
# Докажите, что $x_0\oplus x_1\oplus\ldots\oplus x_{2m} = \langle \neg x_0,s_1,s_2,\ldots,s_{2m}\rangle$, где $s_j=\langle x_0,x_j,x_{j+1},\ldots,x_{j+m-1},\neg x_{j+m},\neg x_{j+m+1},\ldots,\neg x_{j+2m-1}\rangle$, для удобства $x_{2m+k}$ обозначет то же, что и $x_k$ для $k \ge 1$.&lt;br /&gt;
# Докажите, что биномиальный коэффициент $C_n^k$ нечетен тогда и только тогда, когда в двоичной записи $k$ единицы стоят только на тех позициях, где в двоичной записи $n$ также находятся единицы (иначе говоря, двоичная запись $k$ доминируется двоичной записью $n$ как двоичным вектором).&lt;br /&gt;
# Докажите &amp;quot;метод треугольника&amp;quot; построения полинома Жегалкина по таблице истинности.&lt;br /&gt;
# Булева функция $f(x_1, x_2, \ldots, x_n)$ называется форсируемой, если существует такое назначение $x_i=const$ , что для любых значений других переменных значение функции является константой. Например, $x_1 \wedge x_2$ является форсируемой, поскольку при $x_1 = 0$ значение функции равно 0 для любого значения $x_2$. Для каждой функции от двух переменных определите, является ли она форсируемой.&lt;br /&gt;
# Булева функция называется симметричной, если ее значение не меняется при любой перестановке ее переменных. Сколько существует симметричных функций от $n$ переменных?&lt;br /&gt;
# Постройте схему из функциональных элементов для операции медиана трех над базисом $\{ \vee, \wedge, \neg\}$. Постарайтесь использовать минимальное число элементов.&lt;br /&gt;
# Постройте схему из функциональных элементов для операции $x \oplus y \oplus z$ над базисом $\{ \vee, \wedge, \neg\}$. Постарайтесь использовать минимальное число элементов.&lt;br /&gt;
# Предложите способ построить схему для функции $x_1 \oplus ... \oplus x_n$ над базисом $\{ \vee, \wedge, \neg\}$ с линейным числом элементов и глубиной $O(\log n)$.&lt;br /&gt;
# Докажите, что не существует схем константной глубины для функций $x_1 \vee ... \vee x_n$, $x_1 \wedge ... \wedge x_n$, $x_1 \oplus ... \oplus x_n$.&lt;br /&gt;
# Мультиплексором называется схема, которая имеет $2^n+n$ входов и один выход. Обозначим входы как $x_0, x_1, \ldots, x_{2^n-1}, y_0, y_1, \ldots, y_{n-1}$. На выход подается то же, что подается на вход $x_i$, где $i$ - двоичное число, которое кодируется входами $y_0, \ldots, y_{n-1}$. Постройте схему линейного размера для мультиплексора.&lt;br /&gt;
# Дешифратором называется схема, которая имеет $n+1$ входов и $2^n$ выходов. Обозначим входы как $y_0, y_1, \ldots, y_{n-1}, x$, а выходы как $z_0, z_1, \ldots, z_{2^n-1}$. На все выходы подается 0, а на выход $z_i$ то же, что подается на вход $x$, где $i$ - двоичное число, которое кодируется входами $y_0, \ldots, y_{n-1}$. Постройте схему линейного размера для дешифратора.&lt;br /&gt;
# Докажите, что для функции &amp;quot;большинство из $2n+1$&amp;quot; существует схема из функциональных элементов глубины $O(\log n)$&lt;br /&gt;
# Докажите, что не существует схемы константной глубины для сложения.&lt;br /&gt;
# На одном китайском заводе в матричном умножителе случайно использовали элементы &amp;quot;или&amp;quot; вместо &amp;quot;и&amp;quot;. Можно ли из получившихся значений получить произведение исходных чисел (доступа к входам нет, есть только доступ к $n\times 2n$ выходам матричного псевдоумножителя).&lt;br /&gt;
# Докажите, что любую булеву функцию от $n$ аргументов можно представить схемой из функциональных элементов, содержащей $O(2^n)$ элементов.&lt;br /&gt;
# Контактной схемой называется ориентированный ациклический граф, на каждом ребре которого написана переменная или ее отрицание (ребра в контактных схемах называют ''контактами'', а вершины - ''полюсами''). Зафиксируем некоторые значения переменным. Тогда ''замкнутыми'' называются ребра, на которых записана 1, ребра, на которых записан 0, называются ''разомкнутыми''. Зафиксируем две вершины $u$ и $v$. Тогда контактная схема вычисляет некоторую функцию $f$ между вершинами $u$ и $v$, равную 1 на тех наборах переменных, на которых между $u$ и $v$ есть путь по замкнутым ребрам. Постройте контактные схемы для функций &amp;quot;и&amp;quot;, &amp;quot;или&amp;quot; и &amp;quot;не&amp;quot;.&lt;br /&gt;
# Постройте контактную схему для функции &amp;quot;xor&amp;quot;.&lt;br /&gt;
# Постройте контактную схему для функции медиана трех.&lt;br /&gt;
# Докажите, что любую булеву функцию можно представить контактной схемой.&lt;br /&gt;
# Постройте контактную схему &amp;quot;xor от $n$ переменных&amp;quot;, содержащую $O(n)$ ребер.&lt;br /&gt;
# Постройте контактную схему &amp;quot;большинство из $2n+1$ переменных&amp;quot;, содержащую $O(n)$ ребер.&lt;br /&gt;
# Постройте контактную схему, в которой для каждого из $2^n$ наборов конъюнкций переменных и их отрицаний есть пара вершин, между которыми реализуется эта конъюнкция, используя $O(2^n)$ ребер.&lt;br /&gt;
# Докажите, что любую булеву функцию можно представить контактной схемой, содержащей $O(2^n)$ ребер.&lt;br /&gt;
# Как выглядит дерево Хаффмана для частот символов $1, 2, ..., 2^{n-1}$ (степени двойки) ?&lt;br /&gt;
# Как выглядит дерево Хаффмана для частот символов $1, 1, 2, 3, ..., F_{n-1}$ (числа Фибоначчи)?&lt;br /&gt;
# Докажите, что если размер алфавита - степень двойки и частоты никаких двух символов не отличаются в 2 или более раз, то код Хаффмана не лучше кода постоянной длины&lt;br /&gt;
# Модифицируйте алгоритм Хаффмана, чтобы строить $k$-ичные префиксные коды&lt;br /&gt;
# Укажите, как построить дерево Хаффмана за линейное время, если символы уже отсортированы по частоте&lt;br /&gt;
# Предложите алгоритм построения оптимального кода среди префиксных кодов с длиной кодового слова не более L бит&lt;br /&gt;
# Предложите способ хранения информации об оптимальном префиксном коде для n-символьного алфавита, использующий не более $2n - 1 + n \lceil\log_2(n)\rceil$ бит ($\lceil x\rceil$ - округление $x$ вверх)&lt;br /&gt;
# Можно ли разработать алгоритм, который сжимает любой файл не короче заданной величины $N$ хотя бы на 1 бит?&lt;br /&gt;
# Приведите пример однозначно декодируемого кода оптимальной длины, который не является ни префиксным, ни развернутым префиксным&lt;br /&gt;
# Для каких префиксных кодов существует строка, для которой он является кодом Хаффмана? Предложите алгоритм построения такой строки.&lt;br /&gt;
# Пусть заданы пары $(u_i, v_i)$. Предложите алгоритм проверки, что существует код Хаффмана для некоторой строки, в котором $i$-е кодовое слово содержит $u_i$ нулей и $v_i$ единиц.&lt;br /&gt;
# Докажите, что если в коде Хаффмана для некоторой строки $i$-е кодовое слово содержит $u_i$ нулей и $v_i$ единиц, то для многочлена от двух переменных $f(x, y) = \sum_{i=1}^n x^{u_i}y^{v_i}$ выполнено $f(x, y) - 1 = (x + y - 1) g(x, y)$ для некоторого многочлена $g(x, y)$.&lt;br /&gt;
# Разработайте алгоритм кодирования Move To Front строки длиной $n$ за $O(n \log n)$&lt;br /&gt;
# Докажите, что при оптимальном кодирование с помощью LZ77 не выгодно делать повтор блока, который можно увеличить вправо&lt;br /&gt;
# Верно ли утверждение из предыдущего задания при кодировании с помощью L78?&lt;br /&gt;
# Разработайте алгоритм оптимального кодирования текста с помощью LZ77, если на символ уходит $c$ бит, а на блок повтора $d$ бит&lt;br /&gt;
# Предложите семейство строк $S_1, S_2, \ldots, S_n, \ldots$, где $S_i$ имеет длину $i$, таких, что при их кодировании с помощью LZW длина строки увеличивается. Начальный алфавит $\{0, 1\}$.&lt;br /&gt;
# Разработайте алгоритм обратного преобразования Барроуза-Уиллера&lt;br /&gt;
# Разработайте алгоритм обратного преобразования Барроуза-Уиллера за O(n)&lt;br /&gt;
# Проанализируйте время работы алгоритма арифиметического кодирования&lt;br /&gt;
# Докажите, что для любого $c &amp;gt; 1$ существует распределение частот $p_1, p_2, .., p_n$, что арифметическое кодирование в $c$ раз лучше Хаффмана&lt;br /&gt;
# При арифметическом кодировании можно учитывать, что с учетом уже потраченных символов соотношения символов становятся другими и отрезок надо делить в другой пропорции. Всегда ли кодирование с таким уточнением лучше классического арифметического кодирования?&lt;br /&gt;
# При арифметическом кодировании трудным моментом является деление отрезка в пропорциях, не являющихся степенями двойки. Рассмотрим модификацию арифметического кодирования, когда соотношения между символами приближаются дробями со знаменателями - степенями двойки. Что можно сказать про получившийся алгоритм?&lt;br /&gt;
# Разработайте оптимальный код исправляющий одну ошибку при пересылке 2 битов&lt;br /&gt;
# Разработайте оптимальный код исправляющий одну ошибку при пересылке 3 битов&lt;br /&gt;
# Разработайте код, исправляющий две ошибки, использующий асимптотически не более $2n$ бит для кодирования $2^n$ символьного алфавита (для $n &amp;gt; n_0$)&lt;br /&gt;
# Докажите, что в зеркальном коде Грея $g_i = i \oplus \lfloor i / 2\rfloor$&lt;br /&gt;
# Докажите, что в зеркальном коде Грея при переходе от $g_i$ к $g_{i+1}$ меняется тот же бит, который меняется с 0 на 1 при переходе от $i$ к $i+1$&lt;br /&gt;
# Разработайте код Грея для k-ичных векторов&lt;br /&gt;
# При каких $a_1, a_2, ..., a_n$ существует обход гиперпараллелепипеда $a_1 \times a_2 \times ... \times a_n$, который переходит каждый раз в соседнюю ячейку и бывает в каждой ячейке ровно один раз?&lt;br /&gt;
# При каких $a_1, a_2, ..., a_n$ существует обход гиперпараллелепипеда $a_1 \times a_2 \times ... \times a_n$, который переходит каждый раз в соседнюю ячейку и бывает в каждой ячейке ровно один раз, а в конце возвращается в исходную ячейку?&lt;br /&gt;
# Код &amp;quot;антигрея&amp;quot; - постройте двоичный код, в котором соседние слова отличаются хотя бы в половине бит&lt;br /&gt;
# Троичный код &amp;quot;антигрея&amp;quot; - постройте троичный код, в котором соседние слова отличаются во всех позициях&lt;br /&gt;
# При каких $n$ и $k$ существует двоичный $n$-битный код, в котором соседние кодовые слова отличаются ровно в $k$ позициях?&lt;br /&gt;
# Докажите, что для достаточно больших $n$ существует код Грея, который отличается от любого, полученного из зеркального перестановкой столбцов, отражением и циклическим сдвигом строк&lt;br /&gt;
# Код Грея назвается монотонным, если нет таких слов $g_i$ и $g_j$, что $i &amp;lt; j$, а $g_i$ содержит на 2 или больше единиц больше, чем $g_j$. Докажите, что существует монотонный код Грея&lt;br /&gt;
# Докажите корректность следующего алгоритма построения цепного кода. Начинаем со строки из $n$ нулей. Каждый раз пытаемся жадно приписать 1, если слово из последних $n$ символов уже встречалось раньше, то приписываем 0. Заканчиваем, когда все $2^n$ слов получены.&lt;br /&gt;
# Докажите, что $\sum_{k=0}^n C_n^k = 2^n$&lt;br /&gt;
# Докажите, что $\sum_{k=0}^n (-1)^kC_n^k = 0$&lt;br /&gt;
# Используйте предыдущее задание для альтернативного доказательства формулы включения-исключения: посчитайте для каждого элемента, сколько раз он будет посчитан в правой части формулы.&lt;br /&gt;
# Коды Грея для перестановок. Предложите способ перечисления перестановок, в котором соседние перестановки отличаются обменом двух соседних элементов (элементарной транспозицией).&lt;br /&gt;
# Коды Грея для сочетаний. Предложите способ перечисления сочетаний, в котором соседние сочетания отличаются заменой одного элемента.&lt;br /&gt;
# Коды Грея для размещений. Предложите способ перечисления сочетаний, в котором соседние размещения отличаются заменой одного элемента в одной позиции.&lt;br /&gt;
# Максимумом в перестановке называется элемент, который больше своих соседей (одного, если он первый или последний, обоих иначе). Выведите рекуррентную формулу для числа перестановок $n$ элементами с $k$ максимумами&lt;br /&gt;
# Подъемом в перестановке называется пара соседних элементов, таких что $a_{i-1} &amp;lt; a_i$. Выведите рекуррентную формулу для числа перестановок $n$ элементов с $k$ подъемами&lt;br /&gt;
# Неподвижной точкой в перестановке называется элемент $a_i = i$. Выведите рекуррентную формулу для числа перестановок $n$ элементов с $k$ неподвижными точками&lt;br /&gt;
# Сочетание с повторениями - это способ выбрать из $n$ элементов $k$, причем один элемент можно выбирать несколько раз. Порядок не важен. Чему равно число сочетаний с повторениями из $n$ по $k$?&lt;br /&gt;
# Размещение с повторениями - это способ выбрать из $n$ элементов $k$, причем один элемент можно выбирать несколько раз. Порядок выбора важен. Чему равно число размещений с повторениями из $n$ по $k$?&lt;br /&gt;
# Выведите рекуррентную формулу для числа разбиений числа $n$ на нечетные слагаемые&lt;br /&gt;
# Выведите рекуррентную формулу для числа разбиений числа $n$ на нечетное число слагаемых&lt;br /&gt;
# Выведите рекуррентную формулу для числа разбиений числа $n$ на различные слагаемые&lt;br /&gt;
# Предложите алгоритм получения по перестановке ее таблицы инверсий за $O(n \log n)$.&lt;br /&gt;
# Предложите алгоритм получения перестановке по ее таблице инверсий за $O(n^2)$. Отмечайте это задание только если не решили следующее.&lt;br /&gt;
# Предложите алгоритм получения перестановки по ее таблице инверсий за $O(n \log n)$.&lt;br /&gt;
# Чему равно число перестановок с заданным циклическим классом?&lt;br /&gt;
# Степенью перестановки $\pi$ называется минимальное $k$, такое что $\pi^k=i$, где $i$ - тождественная перестановка. Как связана степень перестановки с ее циклическим классом?&lt;br /&gt;
# Предложите алгоритм поиска перестановки из $n$ элементов с максимальной степенью за $O(n^3)$.&lt;br /&gt;
# Рассмотрим коды Грея для перестановок и коды Грея для их таблиц инверсий. Есть ли между ними связь?&lt;br /&gt;
# Докажите, что числа Стирлинга 1 рода образуют матрицу переходов в линейном пространстве полиномов базиса возрастающих факториальных степеней к базису обычных степеней&lt;br /&gt;
# Докажите, что числа Стирлинга 2 рода образуют матрицу переходов в линейном пространстве полиномов от базиса обычных степеней к базису убывающих факториальных степеней&lt;br /&gt;
# Укажите способ подсчитать число разбиений заданного $n$-элементного множества на $k$ упорядоченных непустых подмножеств&lt;br /&gt;
# Докажите, что число различных триангуляций правильного $n$-угольника равно числу Каталана. В этом и нескольких следующих заданиях номер соответствующего числа Каталана может отличаться от $n$, требуется также установить соответствие между размером задачи и номерами чисел Каталана.&lt;br /&gt;
# Докажите, что число двоичных деревьев с $n$ вершинами равно числу Каталана.&lt;br /&gt;
# Докажите, что число подвешенных деревьев с порядком на детях с $n$ вершинами равно числу Каталана.&lt;br /&gt;
# Будем называть последоватедовательность ''сортируемой стеком'', если ее можно отсортировать, используя в произвольном порядке следующие операции: (а) взять первый элемент входной последовательности и положить в стек (б) взять верхний элемент стека и отправить в конец выходной последовательности. Докажите, что число перестановок $n$ элементов, сортируемых стеком, равно число Каталана. &lt;br /&gt;
# Докажите, что число перестановок $n$ элементов, в которых нет возрастающей последовательности длины 3, равно числу Каталана.&lt;br /&gt;
# Докажите, что число способов расставить числа от 1 до $2n$ в прямоугольник $2 \times n$, чтобы числа в каждой строке и каждом столбце возрастали, равно числу Каталана.&lt;br /&gt;
# Докажите, что число Каталана $C_n = \frac{1}{n+1}C_{2n}^n$.&lt;br /&gt;
# Матрица Ханкеля - матрица $n \times n$, такая что $a[i][j] = C_{i+j-2}$. Докажите, что определитель матрицы Ханкеля равен 1.&lt;br /&gt;
# Укажите способ подсчитать число разбиений числа на слагаемые за $O(n \sqrt{n})$ (докажите и используйте пентагональную теорему Эйлера).&lt;br /&gt;
# Докажите, что минимальное число невозрастающих подпоследовательностей, на которые можно разбить заданную последовательность, равно длине ее наибольшей возрастающей подпоследовательности&lt;br /&gt;
# Докажите, что произведение длины наибольшей возрастающей подпоследовательности и наибольшей убывающей подпоследовательности перестановки не меньше $n$&lt;br /&gt;
# Выведите формулу для числа ожерельев из $n$ бусинок $k$ цветов с точностью до циклического сдивига и отражения.&lt;br /&gt;
# Выведите формулу для числа раскрасок прямоугольника $n \times m$ в $k$ цветов с точностью до отражения относительно горизонтальной и вертикальной оси.&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%94%D0%B8%D0%B0%D0%BC%D0%B5%D1%82%D1%80_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D1%82%D0%BE%D1%87%D0%B5%D0%BA_(%D0%B2%D1%80%D0%B0%D1%89%D0%B0%D1%8E%D1%89%D0%B8%D0%B5%D1%81%D1%8F_%D0%BA%D0%B0%D0%BB%D0%B8%D0%BF%D0%B5%D1%80%D1%8B)&amp;diff=83498</id>
		<title>Диаметр множества точек (вращающиеся калиперы)</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%94%D0%B8%D0%B0%D0%BC%D0%B5%D1%82%D1%80_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D1%82%D0%BE%D1%87%D0%B5%D0%BA_(%D0%B2%D1%80%D0%B0%D1%89%D0%B0%D1%8E%D1%89%D0%B8%D0%B5%D1%81%D1%8F_%D0%BA%D0%B0%D0%BB%D0%B8%D0%BF%D0%B5%D1%80%D1%8B)&amp;diff=83498"/>
				<updated>2022-09-01T05:03:12Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Есть множество точек на плоскости. Нужно найти две самые удалённые из них.&lt;br /&gt;
&lt;br /&gt;
[[Статические выпуклые оболочки: Джарвис, Грэхем, Эндрю, Чен, QuickHull|Найдём выпуклую оболочку]] исходного множества и получим более простую задачу: найти две наиболее удалённые вершины в выпуклом многоугольнике. Сделать это можно за линейное время с помощью метода, который называется '''вращающиеся калиперы''' (англ. ''rotating calipers'').&lt;br /&gt;
&lt;br /&gt;
''Обоснование: Пусть диаметр с одной стороны содержит точку, которая не принадлежит выпуклой оболочке. Тогда продлим диаметр в эту сторону до пересечения с выпуклой оболочкой. Очевидно, он станет длиннее. А потом заметим, что диаметр станет еще больше, если сдвинуть его к одному из концов ребра, в которое мы уперлись. Конец.''&lt;br /&gt;
&lt;br /&gt;
== Постановка задачи ==&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;P = (p_1, p_2, ... ,p_n)&amp;lt;/tex&amp;gt; {{---}} выпуклый многоугольник, в котором порядок обхода вершин направлен против часовой стрелки, и никакие три последовательные точки не лежат на одной прямой. Найти пару чисел &amp;lt;tex&amp;gt;\langle i, j \rangle&amp;lt;/tex&amp;gt;, такие, что &amp;lt;tex&amp;gt;d(p_i, p_j)&amp;lt;/tex&amp;gt; максимально.&lt;br /&gt;
&lt;br /&gt;
== Вращающиеся калиперы ==&lt;br /&gt;
=== Опорные прямые ===&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Прямая &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; называется '''опорной прямой''' (англ. ''line of support'') для многоугольника &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, если его внутренность лежит по одну сторону от &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, при этом &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; проходит хотя бы через одну из вершин &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|border=0 width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; {{---}} две параллельные опорные прямые фигуры &amp;lt;tex&amp;gt;\Phi&amp;lt;/tex&amp;gt;, расстояние между которыми имеет максимальное значение. &amp;lt;tex&amp;gt;A_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A_2&amp;lt;/tex&amp;gt; {{---}} граничные точки фигуры &amp;lt;tex&amp;gt;\Phi&amp;lt;/tex&amp;gt;, принадлежащие соответственно прямым &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt;. Тогда отрезок &amp;lt;tex&amp;gt;A_1A_2&amp;lt;/tex&amp;gt; перпендикулярен обеим прямым &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Предположим, что это не так. Тогда расстояние между прямыми &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; было бы меньше, чем отрезок &amp;lt;tex&amp;gt;A_1A_2&amp;lt;/tex&amp;gt;, и тем более меньше, чем расстояние между двумя опорными прямыми &amp;lt;tex&amp;gt;L'_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L'_2&amp;lt;/tex&amp;gt; фигуры &amp;lt;tex&amp;gt;\Phi&amp;lt;/tex&amp;gt;, перпендикулярными к отрезку &amp;lt;tex&amp;gt;A_1A_2&amp;lt;/tex&amp;gt;, что противоречит условию.&lt;br /&gt;
}}&lt;br /&gt;
|[[Файл:perpendicular.png|250px|thumb|right]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;A_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A_2&amp;lt;/tex&amp;gt; {{---}} какие угодно граничные точки фигуры &amp;lt;tex&amp;gt;\Phi&amp;lt;/tex&amp;gt;, принадлежащие соответственно прямым &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt;, то из перпендикулярности отрезка &amp;lt;tex&amp;gt;A_1A_2&amp;lt;/tex&amp;gt; к прямым &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; следует, что ни одна из прямых &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; не может иметь с фигурой &amp;lt;tex&amp;gt;\Phi&amp;lt;/tex&amp;gt; целый общий отрезок. Другими словами, каждая из этих прямых содержит единственную граничную точку фигуры &amp;lt;tex&amp;gt;\Phi&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Диаметр выпуклого многоугольника равен максимальному расстоянию между параллельными опорными прямыми.&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;\Phi&amp;lt;/tex&amp;gt; {{---}} выпуклая фигура, &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; {{---}} параллельные опорные прямые, расстояние между которыми имеет наибольшее возможное значение &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;A_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A_2&amp;lt;/tex&amp;gt; {{---}} общие точки фигуры &amp;lt;tex&amp;gt;\Phi&amp;lt;/tex&amp;gt; и прямых &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. По предыдущей теореме &amp;lt;tex&amp;gt;A_1A_2&amp;lt;/tex&amp;gt; перпендикулярен к прямым &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt;, следовательно, его длина равна &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;. Докажем, что расстояние между любыми двумя точками фигуры &amp;lt;tex&amp;gt;\Phi&amp;lt;/tex&amp;gt; не преводходит &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;. Действительно, если &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; {{---}} какие-либо две точки фигуры &amp;lt;tex&amp;gt;\Phi&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} опорные прямые, перпендикулярные к отрезку &amp;lt;tex&amp;gt;BC&amp;lt;/tex&amp;gt;, то отрезок &amp;lt;tex&amp;gt;BC&amp;lt;/tex&amp;gt; не превосходит расстояния между прямыми &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, которое в свою очередь не превосходит &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;. Следовательно, длина &amp;lt;tex&amp;gt;BC&amp;lt;/tex&amp;gt; не может быть больше &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
|[[Файл:max_parallel.png|170px|thumb|right]]&lt;br /&gt;
|}&lt;br /&gt;
=== Алгоритм ===&lt;br /&gt;
Заметим, что параллельные опорные прямые можно провести не через любую пару точек.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Точки, через которые можно провести параллельные опорные прямые, будем называть '''противолежащими''' (англ. ''antipodal'').&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Благодаря предыдущей теореме нам нужно рассмотреть только противолежащие точки. Задача в том, чтобы рассмотреть их, не перебирая все пары точек.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
 |Рассмотрим рисунок справа. &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; {{---}} опорные прямые, проходящие через вершины &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;D&amp;lt;/tex&amp;gt; соответственно. Значит, &amp;lt;tex&amp;gt;\langle A,D \rangle&amp;lt;/tex&amp;gt; {{---}} противолежащая пара точек. Если начать вращать прямые против часовой стрелки вокруг данных точек, они будут оставаться опорными прямыми, пока одна из прямых не станет накладываться на сторону многоугольника. В нашем примере, при вращении &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; к позиции &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; коснётся точки &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; раньше, чем &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; коснётся &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, поэтому &amp;lt;tex&amp;gt;\langle A,E \rangle&amp;lt;/tex&amp;gt; становится новой парой противолежащих точек. &lt;br /&gt;
&lt;br /&gt;
Теперь &amp;lt;tex&amp;gt;M'&amp;lt;/tex&amp;gt; будет вращаться вокруг &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;L'&amp;lt;/tex&amp;gt; продолжит вращаться вокруг &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, и следующей парой противолежащих точек станет &amp;lt;tex&amp;gt;\langle B,E \rangle&amp;lt;/tex&amp;gt;. Продолжая таким образом, мы сгенерируем все пары противолежащих точек, так как параллельные линии пройдут под всеми возможными углами. Определение новой пары противолежащих точек требует только одного сравнения углов, которое можно выполнить с помощью предиката поворота.&lt;br /&gt;
 |[[Файл:calipers.png|250px|thumb|right]]&lt;br /&gt;
 |}&lt;br /&gt;
=== Асимптотика ===&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Представленный выше алгоритм генерирует все пары противолежащих точек в многоугольнике &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, состоящем из &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; вершин, за время &amp;lt;tex&amp;gt;O(N)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Данный алгоритм можно реализовать следующим образом: хранить указатели на противолежащие вершины, и на каждой итерации алгоритма увеличивать либо один из данных указателей, либо сразу оба (когда обе прямые проходят через сторону многоугольника), и заканчивать работу, когда опорные прямые сделают полный круг. Таким образом, каждая из вершин будет посещена каждой из прямых не более двух раз.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* ''M.I. Shamos'' Computational geometry, 1978 {{---}} С. 76.&lt;br /&gt;
* ''Яглом И.М., Болтянский В.Г.'' Выпуклые фигуры, 1951 {{---}} С. 20, 144.&lt;br /&gt;
* [https://github.com/Megabyte777/cg/blob/master/include/cg/operations/diameter.h Реализация - Github.com]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Вычислительная геометрия]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B9_%D0%BF%D0%BE_%D0%94%D0%9C_2%D0%BA_2021_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0&amp;diff=83497</id>
		<title>Список заданий по ДМ 2к 2021 весна</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B9_%D0%BF%D0%BE_%D0%94%D0%9C_2%D0%BA_2021_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0&amp;diff=83497"/>
				<updated>2022-09-01T05:03:04Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# Формальный степенной ряд $\exp(t) = e^t$ определен как $e^t=1+\frac{1}{1!}t+\frac{1}{2!}t^2+\frac{1}{3!}t^3+\ldots+\frac{1}{n!}t^n+\ldots$. Логично, что $e^{-t}=1-\frac{1}{1!}t+\frac{1}{2!}t^2-\frac{1}{3!}t^3+\ldots+(-1)^n\frac{1}{n!}t^n+\ldots$. Докажите, используя определение умножения для степенных рядов, что $e^t e^{-t}=1$.&lt;br /&gt;
# Определим $\alpha \choose n$ для любого $\alpha$, как $\frac {\alpha (\alpha - 1) \ldots (\alpha - n + 1)}{n!}$. Найдите простое выражение для ${-n} \choose k$ для натуральных $n$ и $k$.&lt;br /&gt;
# Формальный степенной ряд $\cos(t)$ определен как $\sum_{n=0}^{\infty} (-1)^n \frac {t^{2n}}{(2n)!}$, а $\sin(t)$ определен как $\sum_{n=0}^{\infty} (-1)^n \frac {t^{2n+1}}{(2n+1)!}$. Докажите, что $\sin^2(t) + \cos^2(t) = 1$.&lt;br /&gt;
# Докажите, что $\sin(2t) = 2 \sin(t) \cos(t)$.&lt;br /&gt;
# Пусть $B(t) = b_1 t + b_2 t^2 + b_3 t^3 + \ldots + b_n t^n + \ldots$, причем $b_1 \ne 0$. Пусть формальные степенные ряды $A(t)$ и $C(t)$ таковы, что $A(B(t)) = t$, $B(C(t))=t$. Докажите, что $A(t)=C(t)$. Этот ряд называется обратным к $B(t)$, обозначается как $B^{-1}(t)$.&lt;br /&gt;
# Будем называть нулем степенной ряд $0(t) = 0 + 0t + 0t^2 + \ldots$. Докажите, что если $A(t) \ne 0(t)$, $B(t) \ne 0(t)$, то $A(t)B(t) \ne 0(t)$.&lt;br /&gt;
# Докажите, что $(A(t)B(t))' = A'(t)B(t) + A(t)B'(t)$.&lt;br /&gt;
# Докажите, что $\int(A'(t)B(t) + A(t)B'(t)) = A(t)B(t) - A(0)B(0)$.&lt;br /&gt;
# Найдите производящую функцию для последовательности $0 \cdot 1, 1 \cdot 2, 2 \cdot 3, 3 \cdot 4, \ldots, (n - 1) \cdot n, \ldots$.&lt;br /&gt;
# Найдите производящую функцию для последовательности $1^2, 2^2, 3^2, \ldots, n^2, \ldots$.&lt;br /&gt;
# Последовательность $a_0, a_1, a_2, \ldots, a_k, \ldots$ имеет производящую функцию $A(t)=a_0 + a_1t + a_2t^2 + \ldots$. Найдите производящую функцию последовательности $a_0 + a_1, a_1 + a_2, \ldots, a_k+a_{k+1}, \ldots$&lt;br /&gt;
# Последовательность $a_0, a_1, a_2, \ldots, a_k, \ldots$ имеет производящую функцию $A(t)=a_0 + a_1t + a_2t^2 + \ldots$. Найдите производящую функцию последовательности $a_0, a_0 + a_1, a_0 + a_1 + a_2, \ldots, \sum\limits_{i=0}^ka_i,\ldots$&lt;br /&gt;
# Последовательность $a_0, a_1, a_2, \ldots, a_k, \ldots$ имеет производящую функцию $A(t) = a_0 + a_1t + a_2t^2 + \ldots$. Найдите производящую функцию последовательности $a_0, a_1b, a_2b^2, \ldots, a_kb^k, \ldots$&lt;br /&gt;
# Последовательность $a_0, a_1, a_2, \ldots, a_k, \ldots$ имеет производящую функцию $A(t)=a_0 + a_1t + a_2t^2 + \ldots$. Найдите производящую функцию последовательности $a_0, 0, a_1, 0, a_2, 0, a_3 \ldots$&lt;br /&gt;
# Последовательность $a_0, a_1, a_2, \ldots, a_k, \ldots$ имеет производящую функцию $A(t) = a_0 + a_1t + a_2t^2 + \ldots$. Найдите производящую функцию последовательности $a_0, a_2, a_4, a_6, \ldots$&lt;br /&gt;
# Производящая функция называется рациональной, если она представима в виде отношения двух многочленов. Для производящих функций каждой из следующих последовательностей выясните, является ли она рациональной, если да, приведите ее представление в таком виде. Восстановите рекуррентное соотношение для этих последовательностей. Последовательность $1, -2, 3, -4, 5, \ldots$.&lt;br /&gt;
# Последовательность $0, 1, 8, 27, 64, 125, \ldots, k^3,\ldots$&lt;br /&gt;
# Последовательность $1\cdot 2^0, 2\cdot 2^1, 3\cdot 2^2, \ldots (n + 1)\cdot 2^n, \ldots$&lt;br /&gt;
# Последовательность $1+1, 2+3, 4+9, \ldots, 2^n + 3^n, \ldots$&lt;br /&gt;
# Последовательность $1, 1, 4, 9, 25, \ldots, f_k^2,\ldots$ ($f_i$ --- числа Фибоначчи).&lt;br /&gt;
# Найдите производящую функцию для чисел &amp;quot;трибоначчи&amp;quot; $f_0=f_1=f_2=1$, $f_n = f_{n-1}+f_{n-2}+f_{n-3}$.&lt;br /&gt;
# Найдите производящую функцию для последовательности, заданной рекуррентностью $f_0=f_1=f_2=1$, $f_n = f_{n-1}-2f_{n-3}$.&lt;br /&gt;
# Пользуясь производящей функцией для чисел Фибоначчи, докажите утверждение, что $f_0+f_1+\ldots+f_n=f_{n+2}-1$.&lt;br /&gt;
# Пользуясь производящей функцией для чисел Фибоначчи, докажите утверждение, что $f_0+f_2+\ldots+f_{2n}=f_{2n+1}$.&lt;br /&gt;
# Пользуясь производящей функцией для чисел Фибоначчи, докажите утверждение, что $f_1+f_3+\ldots+f_{2n-1}=f_{2n}-1$.&lt;br /&gt;
# Пользуясь производящей функцией для чисел Фибоначчи, докажите утверждение, что $f_0^2+f_1^2+f_2^2+\ldots+f_n^2=f_nf_{n+1}$.&lt;br /&gt;
# Найдите производящую функцию для количества строк длины $n$ над алфавитом $\{0, 1\}$, не содержащих три нуля подряд.&lt;br /&gt;
# Найдите производящую функцию для количества строк длины $n$ над алфавитом $\{0, 1\}$, не содержащих подстроки 010.&lt;br /&gt;
# Найдите производящую функцию для количества строк длины $n$ над алфавитом $\{0, 1\}$, не содержащих подстроки 011.&lt;br /&gt;
# Обозначим за $a_n$ количество способов разменять $n$ рублей монетами по $1$, $2$ и $5$ рублей (порядок монет важен). Постройте производящую функцию для $a_n$.&lt;br /&gt;
# То же самое, что в предыдущем задании, но порядок монет не важен.&lt;br /&gt;
# Можно заметить, что производящая функция последовательности $a_n = n^m$ будет иметь вид $\frac {P_m(s)}{(1-s)^{m+1}}$. Выведите рекуррентное соотношение для коэффициентов многочленов $P_{m, k}$.&lt;br /&gt;
# Оказывается, что коэффициенты $P_{m,k}$ также являются количеством некоторых комбинаторных объектов. Вскройте архивы домашних заданий по комбинаторике за первый семестр и вспомните, каких.&lt;br /&gt;
# Последовательность задана рекуррентным соотношением $a_0=a_1=1$, $a_n = 6a_{n-1}-8a_{n-2}$. Оцените асимптотическое поведение $a_n$ при $n\to+\infty$.&lt;br /&gt;
# Последовательность задана рекуррентным соотношением $a_0=a_1=1$, $a_n = 6a_{n-2}-a_{n-1}$. Оцените асимптотическое поведение $a_n$ при $n\to+\infty$.&lt;br /&gt;
# Последовательность задана рекуррентным соотношением $a_0=a_1=1$, $a_n = 6a_{n-1}-9a_{n-2}$. Оцените асимптотическое поведение $a_n$ при $n\to+\infty$.&lt;br /&gt;
# Последовательность задана рекуррентным соотношением $a_0=a_1=1$, $a_n = 2a_{n-1}-2a_{n-2}$. Оцените асимптотическое поведение $a_n$ при $n\to+\infty$.&lt;br /&gt;
# Пусть рациональная производящая функция имеет вид $A(t) = \frac {P(t)}{Q(t)}$, где единственный минимальный по модулю корень $Q(t)$ равен $1 / \beta$ и имеет кратность $k$. Тогда $a_n \approx C \beta^n n^{k-1}$. Покажите, что $C = k \frac {(-\beta)^k P(1 / \beta)} {Q^{(k)}(1 / \beta)}$&lt;br /&gt;
# Докажите, что если последовательность $a_n$ допускает представление в виде $a_n = \sum_i p_i(n)q_i^n$, где $p_i(n)$ - полиномы, и все $q_i$ различны, то такое представление единственно с точностью до порядка слагаемых.&lt;br /&gt;
# Из производящей функции чисел Каталана $C(t) = \frac {1 - \sqrt{1-4t}} {2t}$ покажите, что $C_n = \frac {1}{n+1} {2n \choose n}$. &lt;br /&gt;
# Путь Моцкина - путь, начинающийся в точке $(0, 0)$, составленный из векторов $(1, 1)$, $(1, 0)$, $(1, -1)$, не опускающийся ниже оси $OX$ и заканчивающийся в точке $(n, 0)$. Напишите рекуррентное соотношение для числа путей Моцкина, найдите производящую функцию для числа таких путей. Указание: в этом и нескольких следующих заданиях напишите рекуррентное соотношение, похожее на соотношение для чисел Каталана.&lt;br /&gt;
# Рассмотрим множество путей на прямой, начинающихся в 0, состоящих из шагов длины 1 вправо или влево. Будем называть такой путь блужданием. Найдите рекуррентную формулу и производящую функцию для числа блужданий из $n$ шагов, оканчивающихся в 0.&lt;br /&gt;
# Найдите рекуррентную формулу и производящую функцию для числа блужданий из $n$ шагов, оканчивающихся в фиксированной точке $N &amp;gt; 0$.&lt;br /&gt;
# Найдите рекуррентную формулу и производящую функцию для числа блужданий из $n$ шагов, оканчивающихся в фиксированной точке $N &amp;gt; 0$ и не заходящих в отрицательную полупрямую.&lt;br /&gt;
# Произведением Адамара двух производящих функций $A(t)$ и $B(t)$ называется производящая функция для ряда $C(t) = a_0b_0+a_1b_1t+a_2b_2t^2+\ldots+a_nb_nt^n+\ldots$. Докажите, что если $A(t)$ и $B(t)$ являются рациональными, то и $C(t)$ рациональна.&lt;br /&gt;
# Найдите произведение Адамара $\frac{1}{1-t}$ и $\frac{1}{1-2t}$.&lt;br /&gt;
# Найдите произведение Адамара $\frac{1}{1-2t}$ и $\frac{1}{1-3t}$.&lt;br /&gt;
# Найдите произведение Адамара $\frac{1}{1+3t-t^2}$ и $\frac{1}{1-2t}$.&lt;br /&gt;
# Найдите произведение Адамара $\frac{1}{(1-3t)^2}$ и $\frac{1}{(1-2t)^2}$.&lt;br /&gt;
# Найдите произведение Адамара $\frac{t}{1-3t+2t^2}$ и $\frac{2-4t}{1-4t+3t^2}$.&lt;br /&gt;
# Найдите производящую функцию для последовательности гармонических чисел $H_n = 1+1/2+\ldots+1/n$.&lt;br /&gt;
# Пусть $g_n$ задано рекуррентным соотношением: $g_0=1$, для $n&amp;gt;0$ выполнено $g_n=g_{n-1}+2g_{n-2}+\ldots+ng_{0}$. Найдите явную формулу для $g_n$. Найдите производящую функцию для $g_n$.&lt;br /&gt;
# Один эксцентричный коллекционер покрытий при помощи домино $2 \times x$-прямоугольника платит 4 доллара за каждую вертикально расположенную костяшку и 1 доллар — за горизонтальную. Сколько покрытий будут оценены по этому способу ровно в $n$ долларов (для всех возможных $x$)? Найдите производящую функцию для числа таких покрытий.&lt;br /&gt;
# Найдите производящую функцию для замощений прямоугольника $2\times n$ доминошками и единичными клетками.&lt;br /&gt;
# Найдите производящую функцию для замощений прямоугольника $2\times n$ уголками (квадратами $2\times 2$ с вырезанной одной клеткой) и единичными клетками. &lt;br /&gt;
# Найдите производящую функцию для замощений трехмерной колонны $2 \times 2 \times n$ кирпичами $2 \times 1\times 1$. &lt;br /&gt;
# Обозначим как $F_n$ число Фибоначчи с номером $n$ ($F_0 = 1$, $F_1 = 1$, $F_k = F_{k - 1} + F_{k - 2}$). Чему равна сумма $\sum_{\substack{m &amp;gt; 0, \, k_i &amp;gt; 0 \\ k_1+k_2+\ldots+k_m=n}} F_{k_1}F_{k_2}\cdots F_{k_m}?$&lt;br /&gt;
# Неявное задание КО. (а) Пусть $A$, $B$ и $X$ - семейства комбинаторных объектов, причем $B \cap X = \varnothing$, $A = B \cup X$. Пусть производящие функции для $A$ и $B$ - $A(t)$ и $B(t)$, соответственно. Найдите производящую функцию $X(t)$. (б) Пусть $A$, $B$ и $X$ - семейства комбинаторных объектов, причем $A = B \times X$. Пусть производящие функции для $A$ и $B$ - $A(t)$ и $B(t)$, соответственно. Найдите производящую функцию $X(t)$. (в) Пусть $A$ и $X$ - семейства комбинаторных объектов, причем $A = Seq(X)$. Пусть производящая функция для $A$ - $A(t)$. Найдите производящую функцию $X(t)$.&lt;br /&gt;
# Неявное задание КО 2. Пусть $A$ и $X$ - семейства комбинаторных объектов, причем $A = MSet(X)$. Пусть производящая функция для $A$ - $A(t)$. Докажите, что производящая функция для  $X(t)$ равна $\sum\limits_{k\ge 1}\frac{\mu(k)}{k}\log A(t^k)$, где $\mu$ - функция Мёбиуса.&lt;br /&gt;
# Пусть $A$ - семейство комбинаторных объектов. Пусть $M = MSet(A)$, а $P = Set(A)$. Докажите, что $M(t) = P(t)M(t^2)$.&lt;br /&gt;
# Пусть $A$ - семейство комбинаторных объектов с производящей функцией $A(t)$. Пусть $\mathbb{N}$ - множество натуральных чисел, (вес числа $k$ равен $k$). Пусть $T \subset \mathbb{N}$, обозначим как $T(t)$ производящую функцию для множества $T$. Обозначим как $Seq_T(A)$ множество последовательностей элементов из $A$, где длина последовательности лежит в множестве $T$. Обозначим как $Z$ множество из одного элемента веса $1$. Обозначим как $C^T$ множество представлений в виде суммы, где порядок слагаемых важен и слагаемые выбраны из множества $T$. Осознайте, что $C^T = Seq(Seq_T(Z))$. Найдите производяющую функцию для $C^T$.&lt;br /&gt;
# Докажите, что $\frac{1}{1-z}=\prod\limits_{j=0}^\infty(1+z^{2^j})$.&lt;br /&gt;
# Обозначим за $B$ множество всех конечных подмножеств $A$, в которых все элементы имеют различный вес. Выведите производящую функцию $B(t)$.&lt;br /&gt;
# Определим множество &amp;quot;неориентированных последовательностей&amp;quot; $B = USeq(A)$, как множество всех последовательностей элементов из $A$, где последовательность $L$ и $rev(L)$ считаются одинаковыми. Покажите, что $B(t) = \frac 12 \frac {1}{1 - A(t)} + \frac 12 \frac {1 + A(t)}{1 - A(t^2)}$&lt;br /&gt;
# Зафиксируем числа $k$ и $t$. Найдите производящую функцию для числа сочетаний из $n$ по $k$, где любые два выбранных числа отличаются как минимум на $t$. Исследуя ПФ, найдите количество таких сочетаний.&lt;br /&gt;
# Зафиксируем числа $k$ и $t$. Найдите производящую функцию для числа сочетаний из $n$ по $k$, где разница между любыми соседними выбранными числами не больше $t$. Исследуя ПФ, найдите количество таких сочетаний.&lt;br /&gt;
# Обозначим как $W$ множество всех слов над алфавитом $\{a, b\}$. Объясните равенство $W=Seq\{a\}\times Seq(\{b\}\times Seq\{a\})$. Проверьте равенство производящих функций.&lt;br /&gt;
# Обозначим как $W^{e}$ множество слов над алфавитом $\{a, b\}$, где все отрезки подряд идущих букв $a$ имеют четную длину. Представьте $W^{e}$ как конструируемый комбинаторный объект. Найдите производящую функцию для $W^{e}$.&lt;br /&gt;
# Обозначим как $W^{(k)}$ множество слов над алфавитом $\{a, b\}$, не содержащих $k$ букв $a$ подряд. Представьте $W^{(k)}$ как конструируемый комбинаторный объект. Найдите производящую функцию для $W^{(k)}$.&lt;br /&gt;
# Постройте производящую функцию для строк над алфавитом $\{a, b\}$, содержащих заданную строку $s$ длины $k$ как подпоследовательность. Сделайте вывод об асимптотическом количестве таких строк.&lt;br /&gt;
# Постройте производящую функцию для строк над алфавитом $\{a, b\}$, в которых нет более $k$ подряд идущих букв $a$ или $b$.&lt;br /&gt;
# На лекции мы доказали, что если язык регулярный, то производящая функция его слов является рациональной. Докажите или опровергните обратное утверждение: если производящая функция слов языка является рациональной, то язык регулярный.&lt;br /&gt;
# Постройте производящую функцию для строк над алфавитом $\{0, 1\}$, в которых число нулей делится на 3.&lt;br /&gt;
# Постройте производящую функцию для строк над алфавитом $\{0, 1\}$, задающие числа в двоичной системе счисления, которые делятся на 3.&lt;br /&gt;
# Постройте производящую функцию для строк над алфавитом $\{a, b\}$, удовлетворяющих регулярному выражению $(ab|a)^* | (ab|b)^*$ &lt;br /&gt;
# Найдите производящую функцию для строк, содержащих заданный паттерн $p$ как подстроку.&lt;br /&gt;
# Рассмотрим бесконечную случайную строку из $0$ и $1$. Докажите, что матожидание позиции первого вхождения строки $p$ длины $k$ равно $2^k c(\frac 12)$, где $c(z)$ - автокорреляционный многочлен. Указание: можно использовать формулу $EX = \sum\limits_{n=0}^{\infty} P(X &amp;gt; n)$.&lt;br /&gt;
# Обозначим как $P^T$ множество разбиений на слагаемые, где порядок слагаемых не важен, а слагаемые выбраны из множества $T$. Осознайте, что $P^T = MSet(Seq_T(Z))$. Найдите производящую функцию для $P^T$.&lt;br /&gt;
# Постройте производящие функции для разбиений на различные слагаемые и на нечетные слагаемые. Покажите, что они совпадают.&lt;br /&gt;
# Постройте производящую функцию для разбиений на не больше, чем $k$ положительных слагаемых.&lt;br /&gt;
# Индекс Хирша. Докажите, что $\prod\limits_{n=1}^\infty\frac{1}{1-z^n}=\sum\limits_{n\ge 1}\frac{z^{n^2}}{((1-z)\cdots(1-z^n))^2}$.&lt;br /&gt;
# Будем обозначать $Seq_T$, $Cyc_T$, $Set_T$ соответственно последовательности, циклы и множества, размер которых принадлежит множеству $T$. Опишите класс помеченных объектов $Set(Cyc_{&amp;gt; 1}(Z))$. Найдите его экспоненциальную производящую функцию.&lt;br /&gt;
# Для производящей функции из прошлого задания найдите явную формулу и асимптотическое поведение количества объектов веса $n$.&lt;br /&gt;
# Опишите класс помеченных объектов $Set(Cyc_{1, 2}(Z))$. Найдите его экспоненциальную производящую функцию.&lt;br /&gt;
# Сюрьекции на $r$-элементное множество. Осознайте, что $Seq_{=r}(Set_{\ge 1}(Z))$ задаёт сюрьекции на $r$-элементное множество. Найдите экспоненциальную производящую функцию.&lt;br /&gt;
# Разбиения на $r$ множеств. Осознайте, что $Set_{=r}(Set_{\ge 1}(Z))$ задаёт разбиения на $r$ множеств. Найдите экспоненциальную производящую функцию. Что стоит при $z^n$?&lt;br /&gt;
# Числа Белла. Число Белла $b_n$ равно числу разбиений $n$-элементного множества на подмножества (число подмножеств не фиксировано). Докажите, что экспоненциальная производящая функция для чисел Белла равна $e^{e^z-1}$. &lt;br /&gt;
# Гиперболический синус $\mathrm{sh}\,z$ равен $\frac{1}{2}(e^{z}-e^{-z})$. Гиперболический косинус $\mathrm{ch}\,z$ равен $\frac{1}{2}(e^{z}+e^{-z})$. Рассмотрим разбиения $n$-элементного множества на непустые подмножества. Докажите, что для разбиений на нечетное число подмножеств экспоненциальная производящая функция равна $\mathrm{sh}(e^z-1)$.&lt;br /&gt;
# Докажите, что для разбиений на четное число подмножеств экспоненциальная производящая функция равна $\mathrm{ch}(e^z-1)$.&lt;br /&gt;
# Докажите, что для разбиений на произвольное число подмножеств, каждое из которых содержит нечетное число элементов, экспоненциальная производящая функция равна $e^{\mathrm{sh}\,z}$.&lt;br /&gt;
# Докажите, что для разбиений на произвольное число подмножеств, каждое из которых содержит четное число элементов, экспоненциальная производящая функция равна $e^{\mathrm{ch}\,z-1}$. Почему здесь в показателе степени есть $-1$, а в предыдущем задании нет?&lt;br /&gt;
# Обобщите четыре предыдущих задания. Как выглядят экспоненциальные производящие функции для разбиений на (не)четное число подмножеств, каждое из которых содержит (не)четное число элементов? (Необходимо дать четыре ответа для всех комбинаций)&lt;br /&gt;
# Постройте экспоненциальную производящую функцию для перестановок, состоящих из четных циклов&lt;br /&gt;
# Постройте экспоненциальную производящую функцию для перестановок, состоящих из нечетных циклов.&lt;br /&gt;
# Докажите, что для четного $n$ количество перестановок, в которых все циклы четные, и количество перестановок, в которых все циклы нечетные, совпадают.&lt;br /&gt;
# &amp;quot;Произведение с коробочкой&amp;quot;: Обозначим $C = A^{\square} \times B$, как множество упорядоченных пар объектов из $A$ и $B$ со всеми возможными нумерациями, где атом с номером $1$ принадлежит первому элементу пары. Выведите формулу для $c_n$.&lt;br /&gt;
# Докажите, что если $C = A^{\square} \times B$, то $C'(z) = A'(z) \cdot B(z)$.&lt;br /&gt;
# Комбинаторный объект &amp;quot;двоичная куча&amp;quot;. Рассмотрим помеченные двоичные деревья, где каждая вершина имеет двух детей, левого и правого (любое из этих поддеревьев может быть пустым), а также число в родителе вершины меньше числа в самой вершине (так, вершина с номером 1 --- всегда корень). Используя комбинаторную конструкцию &amp;quot;произведение с коробочкой&amp;quot;, составьте и решите уравнение на экспоненциальную производящую функцию для двоичных куч.&lt;br /&gt;
# Обозначим за $G(t)$ экспоненциальную производящую функцию всех помеченных графов. Чему равно $g_n$? Выразите производящую функцию связных помеченных графов, используя $G(t)$.&lt;br /&gt;
# Найдите среднее число слагаемых, равных 1, в случайном упорядоченном разбиении числа $n$ на положительные слагаемые.&lt;br /&gt;
# Найдите среднее число слагаемых, равных $k$, в случайном упорядоченном разбиении числа $n$ на положительные слагаемые.&lt;br /&gt;
# Рассмотрим комбинаторный объект &amp;quot;строки из 0 и 1, без двух 1 подряд&amp;quot;. Представьте его как конструируемый комбинаторный объект, найдите его ПФ от двух переменных ($A_{n, m}$ равно количеству строк из $n$ единиц и $m$ нулей.)&lt;br /&gt;
# Найдите среднее количество нулей в таких строках длины $n$.&lt;br /&gt;
# Рассмотрим производящую функцию для непомеченных деревьев с порядком на детях, заданную уравнением $T(z) = \frac {z} {1 - T(z)}$. Введем производящую функцию $G(z)$, равную сумме $d+1$ по всем таким деревьям (где $d$ - степень корня). Докажите, что $G(z) = \frac {T(z)}{z} - 1$.&lt;br /&gt;
# Найдите точное выражение для средней степени корня в деревьях из прошлого задания. Найдите предел при $n \to \infty$.&lt;br /&gt;
# Используя формулу обращения Лагранжа, найдите количество $k$-ичных деревьев с $n$ вершинами (каждая вершина 0 или $k$ детей).&lt;br /&gt;
# Используя формулу обращения Лагранжа, найдите количество корневых лесов, состоящих из $k$ непомеченных деревьев с порядком на детях.&lt;br /&gt;
# Напишите ЭПФ от двух переменных для числа функций из $n$-элементного множества в $m$-элементное.&lt;br /&gt;
# Напишите ЭПФ от двух переменных для числа инъекций из $n$-элементного множества в $m$-элементное.&lt;br /&gt;
# Напишите ЭПФ от двух переменных для числа сюрьекций из $n$-элементного множества в $m$-элементное.&lt;br /&gt;
# Чему равен коэффициент при $u^mz^n$ в выражении $\ln(1+z)/(1-uz)$?&lt;br /&gt;
# Возрастающе-убывающей перестановкой называется перестановка, которая поочередно возрастает и убывает: $x_1 &amp;lt; x_2 &amp;gt; x_3 &amp;lt; x_4 \ldots$. Обозначим количество возрастающе-убывающих перестановок размера $n$ как $a_n$. Докажите, что экспоненциальной производящей функцией для последовательности $a_n$ является $(1+\sin t)/\cos t$.&lt;br /&gt;
# Производящая функция Ньютона. Для последовательности $g_0, g_1, \ldots, g_n, \ldots$ производящая функция Ньютона определена как $\dot G(z) = \sum_n g_n{z \choose n}$. Пусть выполнено равенство: $\dot H(z) = \dot F(z) \cdot \dot G(z)$. Как связаны последовательности $f_i$, $g_i$ и $h_i$?&lt;br /&gt;
# Найдите ЭПФ для чисел Эйлера I рода&lt;br /&gt;
# Найдите ЭПФ для чисел Эйлера II рода&lt;br /&gt;
# При решении задач этой серии можно при выражении использовать $\zeta(s)$. Обозначим как $\sigma_k(n)$ сумму по всем $d|n$ значений $d^k$. Найдите ПФД для $\sigma_1(n)$&lt;br /&gt;
# Найдите ПФД для $\sigma_k(n)$.&lt;br /&gt;
# Найдите ПФД для последовательности $a_n = \sqrt{n}$.&lt;br /&gt;
# Найдите ПФД для последовательности $a_n$, где $a_n = 1$ если $n$ квадрат целого числа, $a_n = 0$ иначе.&lt;br /&gt;
# Найдите ПФД для последовательности $a_n$, где $a_n = 1$ если $n$ свободно от квадратов, $a_n = 0$ иначе.&lt;br /&gt;
# Зная ПФД для последовательности $a_n$, найдите ПФД для последовательности $a_n \cdot \ln n$.&lt;br /&gt;
# Докажите, что если $f(n)$  - мультипликативная функция, то $g(n) = \sum\limits_{d | n} f(d)$ тоже мультипликативна.&lt;br /&gt;
# Докажите, что свертка Дирихле двух мультипликативных функций мультипликативна.&lt;br /&gt;
# Докажите, что обратная по Дирихле функция к мультипликативной функции мультипликативна.&lt;br /&gt;
# Используя ПФД, докажите, что $\sum\limits_{d | n}\varphi(d) = n$&lt;br /&gt;
# Используя ПФД, докажите, что $\sum\limits_{d | n}\sigma_1(d)\varphi(n/d) = n \sigma_0(n)$.&lt;br /&gt;
# Назовем функцию полностью мультипликативной, если $f(ab) = f(a)f(b)$ для любых $a$ и $b$. Какие значения $f(n)$ достаточно задать, чтобы определить $f$ на всех положительных натуральных числах?&lt;br /&gt;
# Найдите ПФД для функции $\lambda(n) = (-1)^k$, где $k$ - количество простых делителей $n$ (с учетом кратности). Чему равна $\sum\limits_{d | n} \lambda(d)$?&lt;br /&gt;
# Рассмотрим строки из 0 и 1. Скажем, что строка $s$ периодичная, если ее можно представить как $k$ копий одной строки $p$: $s = p^k$. Выведите формулу для количества апериодичных строк для произвольного $n$. Указание: используйте формулу обращения Мебиуса.&lt;br /&gt;
# Найдите ПФД для последовательности $a_n = $ количество упорядоченных разбиений числа $n$ на (не обязательно простые) $k$ множителей, множитель 1 разрешен.&lt;br /&gt;
# Найдите ПФД для последовательности $a_n = $ количество упорядоченных разбиений числа $n$ на $\ge 0$ (не обязательно простых) множителей, множитель 1 запрещен.&lt;br /&gt;
# Найдите ПФД для последовательности $a_n = 2^{\omega(n)}$, где $\omega(n)$ - количество различных простых делителей $n$.&lt;br /&gt;
# Докажите, что объединение перечислимых языков перeчислимо, используя перечислители (не выполняйте сведение к полуразрешителю).&lt;br /&gt;
# Докажите, что пересечение перечислимых языков перeчислимо, используя перечислители.&lt;br /&gt;
# Докажите, что конкатенация перечислимых языков перeчислима.&lt;br /&gt;
# Докажите, что замыкание Клини перечислимого языка перeчислимо.&lt;br /&gt;
# Докажите, что декартово произведение перечислимых языков перeчислимо.&lt;br /&gt;
# Докажите, что проекция перечислимого языка пар на каждую из осей перечислима.&lt;br /&gt;
# Пусть $A \subset \Sigma^*$. Функция $f:A \to \Sigma^*$ называется вычислимой, если существует программа, которая по входу $x \in A$ выдает $f(x)$, а на входах не из $A$ зависает. Приведите пример невычислимой функции.&lt;br /&gt;
# Графиком функции $f$ называется множество пар $(x, f(x))$ для тех $x$, на которых $f$ определена. Докажите, что функция вычислима тогда и только тогда, когда ее график перечислим.&lt;br /&gt;
# Докажите, что образ перечислимого множества под действием вычислимой функции перечислим.&lt;br /&gt;
# Докажите, что прообраз перечислимого множества под действием вычислимой функции перечислим.&lt;br /&gt;
# В этой и последующих задачах вместо разрешимых и перечислимых языков рассматриваются разрешимые и перечислимые множества натуральных чисел. Это на самом деле одно и то же, достаточно установить естественную биекцию между натуральными числами и словами в градуированном лексикографическом порядке. Теорема об униформизации. Пусть $F$ — перечислимое множество пар натуральных чисел. Докажите. что существует вычислимая функция $f$, определённая на тех и только тех $x$, для которых найдётся $y$, при котором $\langle x,y\rangle \in F$, причём значение $f(x)$ является одним из таких $y$&lt;br /&gt;
# Даны два перечислимых множества $X$ и $Y$. Докажите, что найдутся два непересекающихся перечислимых множества $X'$ и $Y'$, таких что $X' \subset X$, $Y' \subset Y$, $X' \cup Y' = X \cup Y$.&lt;br /&gt;
# Докажите, что если перечислимое множество перечислимо в возрастающем порядке, то оно является разрешимым.&lt;br /&gt;
# Докажите, что любое бесконечное перечислимое множество содержит бесконечное разрешимое подмножество.&lt;br /&gt;
# Покажите, что для всякой вычислимой функции $f$ существует вычислимая функция, являющаяся «псевдообратной» к $f$ в следующем смысле: область определения $g$ совпадает с областью значений $f$, и при этом $f(g(f(x))) = f(x)$ для всех $x$, при которых $f(x)$ определено.&lt;br /&gt;
# Докажите, что если $A$ неперечислимо и $A \le_m B$, то $B$ неперечислимо.&lt;br /&gt;
# Пусть $A$ перечислимо и $\mathbb{N} \setminus A \le_m A$. Что можно сказать про $A$?&lt;br /&gt;
# Пусть $A$ перечислимо и $A \le_m \mathbb{N} \setminus A$. Что можно сказать про $A$?&lt;br /&gt;
# Пусть дана функция $f : A \to \mathbb{N}$. Ее продолжением на множество $B \supset A$ называется функция $g:B \to \mathbb{N}$, что если $x\in A$, то $g(x) = f(x)$. Докажите, что существует вычислимая функция $f$, у которой не существует всюду определенного вычислимого продолжения.&lt;br /&gt;
# Два перечислимых множества $A$ и $B$, где $A \cap B = \varnothing$ называются неотделимыми, если не сущестует разрешимых множеств $X$ и $Y$, таких что $A \subset X$, $B \subset Y$, $X \cap Y = \varnothing$. Покажите, что существуют неотделимые множества. Указание: рассмотрите множества пар $\langle p, x\rangle$, где $p$ - программа, возвращающая целое число, для некоторого условия.&lt;br /&gt;
# Обобщите определение неотделимых множеств на счетное семейство множеств. Докажите, что существует счетное семейство неотделимых множеств.&lt;br /&gt;
# Докажите, что множество программ, допускающих заданное конечное множество слов $x_1, \ldots, x_n$, перечислимо, но не разрешимо.&lt;br /&gt;
# Докажите, что множество программ, допускающих бесконечное множество слов не разрешимо.&lt;br /&gt;
# Докажите, что множество программ, зависающих на любом входе, не разрешимо.&lt;br /&gt;
# Докажите, что множество программ, останавливающихся на своём собственном исходном коде, перечислимо, но не разрешимо.&lt;br /&gt;
# Покажите, что следующие три свойства множества $X$ равносильны: (1) $X$ можно представить в виде $A \setminus B,$ где $A$ — перечислимое множество, а $B$ — его перечислимое подмножество; (2) $X$ можно представить в виде $A \setminus B$, где $A$ и $B$ — перечислимые множества; (3) $X$ можно представить в виде симметрической разности двух перечислимых множеств.&lt;br /&gt;
# Покажите, что множество $X$ можно представить в виде $A\setminus (B \setminus C)$, где $A \supset B \supset C$ — перечислимые множества, если и только если его можно представить в виде симметрической разности трёх перечислимых множеств.&lt;br /&gt;
# Покажите, что существует множество, которое можно представить в виде симметрической разности трёх перечислимых множеств, но нельзя представить в виде симметрической разности двух перечислимых множеств&lt;br /&gt;
# Язык ограниченной задачи останова (bounded halting) $BH = \{ (p, t) | p$ завершается на пустом входе за $t$ шагов $\}$. Докажите, что $BH$ разрешим.&lt;br /&gt;
# Докажите, что существует разрешимое множество пар, проекция которого на одну из осей не является разрешимой.&lt;br /&gt;
# Докажите, что существует разрешимое множество пар, проекция которого на каждую из осей не является разрешимой.&lt;br /&gt;
# Некоторое множество $S$ натуральных чисел разрешимо. Разложим все числа из $S$ на простые множители и составим множество $D$ всех простых чисел, встречающихся в этих разложениях. Можно ли утверждать, что множество $D$ перечислимо?&lt;br /&gt;
# Некоторое множество $S$ натуральных чисел разрешимо. Разложим все числа из $S$ на простые множители и составим множество $D$ всех простых чисел, встречающихся в этих разложениях. Можно ли утверждать, что множество $D$ разрешимо?&lt;br /&gt;
# Множество $A \subset \mathbb{N} \times \mathbb{N}$ разрешимо. Можно ли утверждать, что множество «нижних точек» множества $A$, то есть множество $B = \{\langle x,y\rangle | (\langle x,y\rangle \in A)$ и $(\langle x,z\rangle \not\in A$ для всех $z &amp;lt; y)\}$ является разрешимым? &lt;br /&gt;
# В предыдущем задании можно ли утверждать, что $B$ перечислимо, если $A$ перечислимо?&lt;br /&gt;
# Используя теорему о рекурсии, докажите, что язык программ, которые останавливаются на пустом вводе, является неразрешимым. Является ли этот язык перечислимым?&lt;br /&gt;
# Используя теорему о рекурсии, докажите, что язык программ, которые не останавливаются на пустом вводе, является неразрешимым. Является ли этот язык перечислимым?&lt;br /&gt;
# Используя теорему о рекурсии, докажите, что язык программ, которые допускают бесконечное число слов, является неразрешимым.&lt;br /&gt;
# Используя теорему о рекурсии, докажите, что язык программ, которые допускают свой собственный исходный код, является неразрешимым.&lt;br /&gt;
# Докажите, что существуют две различные программы $p$ и $q$, такие что программа $p$ печатает текст программы $q$, а программа $q$ печатает текст программы $p$.&lt;br /&gt;
# Докажите, что существует бесконечная последовательность различных программ $p_i$, такая что $p_1$ печатает пустую строку, а $p_i$ печатает текст программы $p_{i-1}$.&lt;br /&gt;
# Докажите, что существует бесконечная последовательность различных программ $p_i$, такая что $p_i$ печатает текст программы $p_{i+1}$.&lt;br /&gt;
# Докажите, что для любого конечного $n$ существует последовательность программ $p_1, p_2, \ldots, p_n$, что $p_i$ печатает текст $p_{i+1}$, а $p_n$ печатает текст $p_1$.&lt;br /&gt;
# Докажите, что язык программ, для которых не существует более короткой программы, которая на любом входе ведёт себя так же, является неразрешимым.&lt;br /&gt;
# Докажите, что язык программ, для которых не существует программы такой же длины, которая на любом входе ведёт себя так же, является либо конечным, либо неразрешимым.&lt;br /&gt;
# Busy Beaver. Функция $BB(n)$ возвращает длину максимальной строки, которую программа длины $n$ может вывести на пустом входе и завершиться. Докажите, что $BB$ является невычислимой.&lt;br /&gt;
# Докажите, что для любой всюду определенной вычислимой функции $f$ найдется значение $n$, для которого $BB(n) &amp;gt; f(n)$.&lt;br /&gt;
# Докажите, что для любой всюду определенной вычислимой функции $f$ найдется бесконечно много значений $n$, для которых $BB(n) &amp;gt; f(n)$.&lt;br /&gt;
# Колмогоровская сложность. $K(s)$ это длина минимальной программы, которая на пустом входе выводит строку $s$ и завершается. Докажите, что $K$ является невычислимой.&lt;br /&gt;
# Пусть для любой строки $s$ выполнено $K(s) \ge f(s)$, где $f$ — всюду определенная вычислимая функция. Докажите, что найдется константа $C$, такая что $f(s) \le C$ для любой $s$.&lt;br /&gt;
# Специальное задание: выберите нетривиальный язык программирования и напишите на нём программу, которая выводит свой собственный код. Не используйте код из интернета, напишите сами. Языки программирования всех студентов в рамках одной группы должны быть различны.&lt;br /&gt;
# Специальное задание: выберите нетривиальный язык программирования и напишите на нём программы, которые демонстрируют решение одного из заданий 172-175. В рамках одной группы пара (язык программирования - номер задания) должна быть уникальной. Выберите язык программирования, отличный от предыдущего задания.&lt;br /&gt;
# Вещественное число $\alpha$ называется вычислимым, если существует вычислимая функция $a$, которая по любому рациональному $\varepsilon &amp;gt; 0$ даёт рациональное приближение к $\alpha$ с ошибкой не более $\varepsilon$, то есть $|\alpha − a(\varepsilon)| \le \varepsilon$ для любого рационального $\varepsilon &amp;gt; 0$. Докажите, что число $\alpha$ вычислимо тогда и только тогда, когда множество рациональных чисел, меньших $\alpha$, разрешимо.&lt;br /&gt;
# Докажите, что число $\alpha$ вычислимо тогда и только тогда, когда последовательность знаков представляющей его десятичной (или двоичной) дроби вычислима. Последовательность называется вычислимой, если существует программа, которая по номеру $i$ выдает соответствующий элемент последовательности $a_i$.&lt;br /&gt;
# Докажите, что число $\alpha$ вычислимо тогда и только тогда, когда существует вычислимая последовательность рациональных чисел, вычислимо сходящаяся к $\alpha$ (последнее означает, что можно алгоритмически указать $N$ по $\varepsilon$ в стандартном $\varepsilon$-$N$-определении сходимости.)&lt;br /&gt;
# Покажите, что сумма, произведение, разность и частное вычислимых вещественных чисел вычислимы. &lt;br /&gt;
# Покажите, что корень многочлена с вычислимыми коэффициентами вычислим.&lt;br /&gt;
# Сформулируйте и докажите утверждение о том, что предел вычислимо сходящейся последовательности вычислимых вещественных чисел вычислим.&lt;br /&gt;
# Вещественное число $\alpha$ называют перечислимым снизу, если множество всех рациональных чисел, меньших $\alpha$, перечислимо. (Перечислимость сверху определяется аналогично.) Докажите, что число $\alpha$ перечислимо снизу тогда и только тогда, когда оно является пределом некоторой вычислимой возрастающей последовательности рациональных чисел.&lt;br /&gt;
# Докажите, что действительное число вычислимо тогда и только тогда, когда оно перечислимо снизу и сверху.&lt;br /&gt;
# Докажите, что множество функций-приближений для рациональных вычислимых чисел $\alpha$ является неразрешимым. Указание: вспомните теорему о рекурсии.&lt;br /&gt;
# Покажите, что существуют перечислимые снизу, но не вычислимые числа. Указание: рассмотрим сумму ряда $\sum 2^{-k}$ по $k$ из какого-либо множества $P$.&lt;br /&gt;
# Приведите пример невычислимого предела сходящейся (но не вычислимо) последовательности вычислимых чисел&lt;br /&gt;
# Приведите пример невычислимого предела вычислимо сходящейся (но не вычислимой) последовательности вычислимых чисел&lt;br /&gt;
# Множество $A$ назвается эффективно бесконечным, если существует всюду определенная вычислимая функция $f$, которая по числу $n$ выводит $n$ различных элементов множества $A$. Докажите, что если множество $A$ содержит бесконечное перечислимое подмножество, то оно эффективно бесконечно.&lt;br /&gt;
# Докажите, что если множество $A$ эффективно бесконечно, то оно содержит бесконечное перечислимое подмножество.&lt;br /&gt;
# Обозначим как $L(p)$ множество слов, которые допускается программой $p$. Множество $A$ назвается эффективно неперечислимым, если существует всюду определенная вычислимая функция $f$, которая по программе $p$ указывает слово $x$, такое что $x \in L(p) \oplus A$. Докажите, что дополнение к диагонали универсального множества $\overline D$, где $D = \left\{p | \langle p, p\rangle \in U\right\}$, является эффективно неперечислимым. &lt;br /&gt;
# Докажите, что дополнение к универсальному множеству $\overline U$ является эффективно неперечислимым.&lt;br /&gt;
# Докажите, что любое эффективно неперечислимое множество является эффективно бесконечным.&lt;br /&gt;
# Множество называется иммунным, если оно бесконечно, но не содержит бесконечных перечислимых подмножеств. Перечислимое множество называется простым, если дополнение к нему иммунно. Докажите, что существует простое множество.&lt;br /&gt;
# Докажите, что множество является иммунным тогда и только тогда, когда оно не содержит бесконечных разрешимых подмножеств.&lt;br /&gt;
# Докажите, что машина Тьюринга без возможности записи на ленту, эквивалентна по вычислительной мощности конечному автомату.&lt;br /&gt;
# Отберем у машины Тьюринга возможность перемещаться налево, но разрешим новую команду RESET, которая перемещает головку на первый символ входного слова. Докажите, что такая модификация не меняет вычислительной мощности машины Тьюринга.&lt;br /&gt;
# Пусть машине Тьюринга разрешено производить запись в каждую ячейку ленты только два раза: если значение в этой ячейке менялось уже дважды, запрещается записывать туда другой символ. Докажите, что такая модификация не меняет вычислительной мощности машины Тьюринга.&lt;br /&gt;
# Пусть машине Тьюринга разрешено производить запись в каждую ячейку ленты только один раз: если значение в этой ячейке уже менялось, запрещается записывать туда другой символ. Докажите, что такая модификация не меняет вычислительной мощности машины Тьюринга.&lt;br /&gt;
# Докажите, что счётчиковые машины с одним счётчиком распознают больше языков, чем конечные автоматы.&lt;br /&gt;
# Докажите, что счётчиковые машины с одним счётчиком распознают меньше языков, чем автоматы с одним стеком, даже детерминированные.&lt;br /&gt;
# Модифицируем счётчиковую машину: разрешим счётчикам хранить как положительные, так и отрицательные значения (сравнивать можно по прежнему только с нулём). Докажите, что получившаяся модель эквивалентна по вычислительной мощности обычной счётчиковой машине с тем же числом счётчиков.&lt;br /&gt;
# Модифицируем счётчиковую машину: разрешим на переходе сравнивать значение в счётчике не только с 0, но и с любым другим целым числом (общее число переходов должно быть конечно). Докажите, что получившаяся модель эквивалентна по вычислительной мощности обычной счётчиковой машине с тем же числом счётчиков.&lt;br /&gt;
# Модифицируем счётчиковую машину: пусть зафиксировано число $b$ и разрешим счётчикам хранить только числа от $0$ до $b$. Какие языки распознают такие машины для различного числа счётчиков?&lt;br /&gt;
# Стековая машина с бесконечным числом стеков. Пусть у стековой машины бесконечное число стеков и специальный счётчик, который показывает, какой стек сейчас анализируется. Функция переходов: $delta: Q \times (\Sigma \cup \varepsilon) \times \Pi \to {\cal P}_{&amp;lt;+\infty}\left( Q \times \Pi^* \times \{-1, 0, +1\}\right)$, где последний компонент результата функции указывает, что происходит с номером текущего стека. Докажите, что такая машина эквивалентна машине с двумя стеками.&lt;br /&gt;
# Рассмотрим два множества $A$ и $B$. Назовём их вычислимо изоморфными, если существует всюду определенная вычислимая биекция $\varphi : \mathbb{N} \to \mathbb{N}$, такая что $x \in A$ тогда и только тогда, когда $\varphi(x) \in B$. Приведите пример различных бесконечных вычислимо изоморфных множеств.&lt;br /&gt;
# Докажите или опровергните, что любые два бесконечных разрешимых множества, дополнения к которым также бесконечны, являются вычислимо изоморфными.&lt;br /&gt;
# Докажите или опровергните, что любые два бесконечных перечислимых множества, дополнения к которым также бесконечны, являются вычислимо изоморфными.&lt;br /&gt;
# Докажите или опровергните, что любые два бесконечных перечислимых не разрешимых множества, дополнения к которым также бесконечны, являются вычислимо изоморфными.&lt;br /&gt;
# Существует ли множество натуральных чисел $A$, к которому m-сводится любое множество натуральных чисел?&lt;br /&gt;
# Множество называется m-полным, если к нему m-сводится любое перечислимое множество. Докажите, что универсальное множество является $m$-полным.&lt;br /&gt;
# Докажите, что диагональ универсального множества (множество $\{u | (u, u) \in U\}$ является m-полным.&lt;br /&gt;
# Специальное задание. Автоматы Вольфрама. Рассмотрим клеточный автомат с двумя состояниями и $d = 1$. Пусть $n = 1$ и исходно нулевая клетка в состоянии $1$, а остальные клетки в состоянии $0$. Переходы автомата можно задать восемью битами: новым состоянием клетки для всех 8 возможных состояний клеткии её соседей. Можно нарисовать состояние всех клеток после каждого шага в виде двумерного изображения (см, например, https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%BE_110 для правила 110). Выберите наиболее интересные по вашему мнению правила переходов. За эту задачу нельзя получить баллы, только насладиться интересными картинками.&lt;br /&gt;
# Специальное задание. Игра &amp;quot;Жизнь&amp;quot; Конвея. Рассмотрим бесконечное клетчатое поле, каждая клетка может быть белой или черной. За один ход клетки перекрашиваются по следующему правилу: если у белой клетки ровно три из восьми черных соседа, она становится черной, иначе остаётся белой. Если у черной клетки 2 или 3 из 8 соседей черные, она остаётся черной, иначе она становится белой. Найдите в интернете симулятор игры жизнь и примеры интересных конфигураций. Поэкспериментируйте с ними. За эту задачу нельзя получить баллы, только насладиться интересными картинками.&lt;br /&gt;
# Специальное задание. Язык FRACTRAN. Рассмотрим &amp;quot;программу&amp;quot;, состоящую из $n$ дробей $\frac {a_i}{b_i}$. На каждом шаге есть текущее число $N$, находится минимальное $i$, что $\frac {N a_i}{b_i}$ - целое число, и $N$ умножается на $\frac {a_i}{b_i}$. Оказывается, такой язык Тьюринг-полон. Посмотрите на примеры программ и подумайте над тем, как просимулировать на нем что-то из того, что мы изучали на лекциях. За эту задачу нельзя получить баллы, только удивиться странному формализму.&lt;br /&gt;
# Рассмотрим список слов $A = \{\alpha_1, \alpha_2, \ldots, \alpha_n\}$ над алфавитом $\Sigma$. Введем $n$ новых различных символов $d_1, d_2, \ldots, d_n$. Рассмотрим алфавит $\Sigma' = \Sigma \cup \{d_1, d_2, \ldots, d_n\}$. Рассмотрим КС-грамматику с одним нетерминалом $S$, алфавитом $\Sigma'$ и $n + 1$ правилом: $S \to \alpha_1 S d_1$,  $S \to \alpha_2 S d_2, \ldots, S \to \alpha_n S d_n$, $S \to \varepsilon$. Язык, порождаемый этой грамматикой, называется языком списка $A$ и обозначается как $L_A$. Опишите все слова языка $L_A$. &lt;br /&gt;
# Докажите, что для любого списка $A$ дополнение до его языка списка $\overline{L_A}$ является КС-языком. Указание: постройте МП-автомат для $\overline{L_A}$.&lt;br /&gt;
# Докажите, что проблема проверки пустоты пересечения двух КС-грамматик неразрешима.&lt;br /&gt;
# Докажите, что проблема проверки эквивалентности двух КС-грамматик неразрешима.&lt;br /&gt;
# Докажите, что проблема проверки, что язык заданной КС-грамматики совпадает с языком заданного регулярного выражения, неразрешима.&lt;br /&gt;
# Докажите, что проблема проверки того, что любое слово можно породить в заданной КС-грамматике, неразрешима.&lt;br /&gt;
# Докажите, что проблема проверки того, что язык одной заданной КС-грамматики входит в язык другой заданной КС-грамматики, неразрешима.&lt;br /&gt;
# Докажите, что проблема проверки того, что язык заданного регулярного выражения входит в язык заданной КС-грамматики, неразрешима.&lt;br /&gt;
# Докажите, что проблема проверки того, что язык заданной КС-грамматики содержит палиндром, неразрешима.&lt;br /&gt;
# Пусть задано два списка $A$ и $B$. Докажите, что $\overline{L_A} \cup \overline{L_B}$ является регулярным тогда и только тогда, когда он совпадает с $\Sigma'^*$. Следовательно проблема проверки того, что КС-грамматика порождает регулярный язык, неразрешима.&lt;br /&gt;
# Докажите, что проблема проверки того, что дополнение языка заданной КС-грамматики является КС-языком, неразрешима.&lt;br /&gt;
# Односторонние исчисления. Рассмотрим конечный набор правил $P$ вида $\alpha \rightarrow \beta$. Будем говорить, что из слова $x$ выводится $y$ с помощью $P$, если можно получить $x$ из $y$, выполнив ноль или более раз замену подстроки $x$, совпадающей с $\alpha$ для некоторого правила на $\beta$ для этого правила. Докажите, что множество троек $(P, x, y)$, где из $x$ выводится $y$ с помощью $P$ неразрешимо.&lt;br /&gt;
# Двусторонние исчисления. Рассмотрим конечный алфавит $\Sigma$ и набор правил вида $\alpha \leftrightarrow \beta$. Будем говорить, что слова $x$ и $y$ эквивалентны с точностью до $P$, если можно получить $x$ из $y$, выполнив ноль или более раз замену подстроки $x$, совпадающей с $\alpha$ для некоторого правила на $\beta$ для этого правила или $\beta$ для некоторого правила на $\alpha$ для этого правила. Докажите, что множество троек $(P, x, y)$, где $x$ эквивалентен $y$ с точность до $P$ неразрешимо.&lt;br /&gt;
# Докажите, существует конкретное множество правил одностороннего исчисления $P$, что для него множество пар $(x, y)$, где из $x$ выводится $y$ с помощью $P$ неразрешимо.&lt;br /&gt;
# Докажите, существует конкретное множество правил двустороннего исчисления $P$, что для него множество пар $(x, y)$, где $x$ эквивалентно $y$ с точностью до $P$ неразрешимо. (Это задание можно переформулировать в терминах полугрупп так: докажите, что существует полугруппа с конечным множеством образующих и конечным множеством соотношений, что проверка равенства слов в этой полугруппе неразрешима)&lt;br /&gt;
# Предыдущее задание можно обобщить на группы: докажите, что существует группа с конечным множеством образующих и конечным множеством соотношений, что проверка равенства слов в этой группе неразрешима. Отличие от предыдущего задания: вместе с каждым символом $c$ существует также символ $c^{-1}$ и соотношения $cc^{-1}\leftrightarrow\varepsilon$, $c^{-1}c\leftrightarrow\varepsilon$.&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B0_%D0%B2_%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D1%83_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0&amp;diff=83496</id>
		<title>Использование обхода в глубину для поиска цикла</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B0_%D0%B2_%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D1%83_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0&amp;diff=83496"/>
				<updated>2022-09-01T05:02:58Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Задача&lt;br /&gt;
|definition = Дан граф, требуется проверить наличие [[Основные определения теории графов|цикла]] в этом графе.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
Будем решать задачу с помощью [[Обход в глубину, цвета вершин|поиска в глубину]].&lt;br /&gt;
&lt;br /&gt;
В случае &amp;lt;b&amp;gt;ориентированного графа&amp;lt;/b&amp;gt; произведём серию обходов. То есть из каждой вершины, в которую мы ещё ни разу не приходили, запустим поиск в глубину, который при входе в вершину будет красить её в серый цвет, а при выходе из нее {{---}} в чёрный. И, если алгоритм пытается пойти в серую вершину, то это означает, что цикл найден.&lt;br /&gt;
&lt;br /&gt;
В случае &amp;lt;b&amp;gt;неориентированного графа&amp;lt;/b&amp;gt;, одно ребро не должно встречаться в [[Основные определения теории графов#def_no_graph_path|цикле]] дважды по определению. Поэтому необходимо дополнительно проверять, что текущее рассматриваемое из вершины ребро не является тем ребром, по которому мы пришли в эту вершину.&lt;br /&gt;
&lt;br /&gt;
Заметим, что, если в графе есть вершины с петлями, то алгоритм будет работать корректно, так как при запуске поиска в глубину из такой вершины, найдется ребро, ведущее в нее же, а значит эта петля и будет являться циклом.&lt;br /&gt;
&lt;br /&gt;
Для восстановления самого цикла достаточно при запуске поиска в глубину из очередной вершины добавлять эту вершину в [[Стек|стек]]. Когда поиск в глубину нашел вершину, которая лежит на цикле, будем последовательно вынимать вершины из стека, пока не встретим найденную еще раз. Все вынутые вершины будут лежать на искомом цикле.&lt;br /&gt;
&lt;br /&gt;
Асимптотика поиска цикла совпадает с асимптотикой поиска в глубину {{---}} &amp;lt;tex&amp;gt;O(|V| + |E|)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл: Dfs_cycle.png|thumb|200px|right| Момент нахождения цикла: &amp;lt;font color=blue&amp;gt;синие&amp;lt;/font&amp;gt; ребра {{---}} уже пройденные, &amp;lt;font color=red&amp;gt;красное&amp;lt;/font&amp;gt; ребро ведет в серую, уже пройденную, вершину.]]&lt;br /&gt;
&lt;br /&gt;
== Доказательство ==&lt;br /&gt;
&lt;br /&gt;
Пусть дан граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Запустим &amp;lt;tex&amp;gt;\mathrm{dfs}(G)&amp;lt;/tex&amp;gt;. Рассмотрим выполнение процедуры поиска в глубину от некоторой вершины &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt;. Так как все серые вершины лежат в стеке рекурсии, то для них вершина &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; достижима, так как между соседними вершинами в стеке есть ребро. Тогда, если из рассматриваемой вершины &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; существует ребро в серую вершину &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt;, то это значит, что из вершины &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt; существует путь в &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; и из вершины &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; существует путь в &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt; состоящий из одного ребра. И так как оба эти пути не пересекаются, то цикл существует.&lt;br /&gt;
&lt;br /&gt;
Докажем, что если в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; существует цикл, то &amp;lt;tex&amp;gt;\mathrm{dfs}(G)&amp;lt;/tex&amp;gt; его всегда найдет. Пусть &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; {{---}} первая вершина принадлежащая циклу, рассмотренная поиском в глубину. Тогда существует вершина &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt;, принадлежащая циклу и имеющая ребро в вершину &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt;. Так как из вершины &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; в вершину &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt; существует белый путь (они лежат на одном цикле), то по [[Лемма о белых путях|лемме о белых путях]] во время выполнения процедуры поиска в глубину от вершины &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt;, вершина &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; будет серой. Так как из &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt; есть ребро в &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt;, то это ребро в серую вершину. Следовательно &amp;lt;tex&amp;gt;\mathrm{dfs}(G)&amp;lt;/tex&amp;gt; нашел цикл.&lt;br /&gt;
&lt;br /&gt;
== Реализация для случая ориентированного графа ==&lt;br /&gt;
 &amp;lt;font color=darkgreen&amp;gt;// color {{---}} массив цветов, изначально все вершины белые &amp;lt;/font&amp;gt; &lt;br /&gt;
 '''func''' dfs(v: '''vertex'''):            &amp;lt;font color=darkgreen&amp;gt; // v {{---}} вершина, в которой мы сейчас находимся &amp;lt;/font&amp;gt;&lt;br /&gt;
     color[v] = &amp;lt;i&amp;gt;grey&amp;lt;/i&amp;gt;             &lt;br /&gt;
     '''for''' (u: vu &amp;lt;tex&amp;gt;\in&amp;lt;/tex&amp;gt; E)&lt;br /&gt;
         '''if''' (color[u] == &amp;lt;i&amp;gt;white&amp;lt;/i&amp;gt;)&lt;br /&gt;
             dfs(u)&lt;br /&gt;
         '''if''' (color[u] == &amp;lt;i&amp;gt;grey&amp;lt;/i&amp;gt;)&lt;br /&gt;
             print()             &amp;lt;font color=darkgreen&amp;gt; // вывод ответа &amp;lt;/font&amp;gt;   &lt;br /&gt;
     color[v] = &amp;lt;i&amp;gt;black&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Использование обхода в глубину для проверки связности]]&lt;br /&gt;
* [[Использование обхода в глубину для топологической сортировки]]&lt;br /&gt;
* [[Использование обхода в глубину для поиска компонент сильной связности]]&lt;br /&gt;
* [[Использование обхода в глубину для поиска точек сочленения]]&lt;br /&gt;
* [[Использование обхода в глубину для поиска мостов]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://e-maxx.ru/algo/finding_cycle MAXimal :: algo {{---}} «Проверка графа на ацикличность и нахождение цикла»]&lt;br /&gt;
* [http://shujkova.ru/sites/default/files/algorithm2.pdf Прикладные задачи алгоритма DFS]&lt;br /&gt;
* ''Кормен Т., Лейзерсон Ч., Ривест Р.'' Алгоритмы: построение и анализ.[http://wmate.ru/ebooks/?dl=380&amp;amp;mirror=1] — 2-е изд. — М.: Издательский дом «Вильямс», 2007. — С. 1296.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Обход в глубину]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B8%D0%BD%D1%82%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&amp;diff=83495</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B8%D0%BD%D1%82%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&amp;diff=83495"/>
				<updated>2022-09-01T05:02:53Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в бизнес-приложениях (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных бизнес-процессов сложно или дорого, но при этом известны требования к таким бизнес-процессам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся бизнес-процессов. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
Преимущества использования синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам [[Обучение с частичным привлечением учителя|частичного обучения]] и [[Обучение с частичным привлечением учителя#Самообучение (Self Training)|самообучения]]. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Синтетические данные активно используются при обучении алгоритмов управления [[wikipedia:Self-driving car|автономным транспортом]]. Эти алгоритмы решают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные. В самом деле, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Также с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], решающих задачи [[Сегментация изображений|семантической сегментации]], [[Компьютерное зрение#Идентификация|поиска]] и [[Компьютерное зрение#Распознавание объектов|локализации]] объектов. В данном случае подходят наборы, в которых искомые объекты определённым образом наносятся на фоновое изображение. В частности, таким объектом может быть текст — тогда с помощью полученного набора может быть решена задача [[Распознавание текста на изображении|распознавания текста на изображении]].&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используются и для создания алгоритмов [[Реидентификация|реидентификации]]&amp;lt;sup&amp;gt;[на 25.01.21 не создан]&amp;lt;/sup&amp;gt; — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. В этом случае реальные данные собрать довольно сложно, потому что требуется найти много фотографий одних и тех же людей в разных позах, с разных ракурсов и в разной одежде.&lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;, разработанный по методологии SCRUM в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их, с помощью библиотеки PIL&amp;lt;ref name=&amp;quot;PIL&amp;quot;&amp;gt;Pillow — Pillow (PIL Fork) 8.1.0 Documentation — https://pillow.readthedocs.io/en/stable/ — Retrieved January 25, 2021&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты бизнес-процессов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры (см. рисунок 3).&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются в алгоритмах [[Компьютерное зрение|компьютерного зрения]], в частности для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;Aubry M., Maturana D., Efros A., Russell B., Sivic J. Seeing 3d chairs:  exemplar part-based 2d-3d alignment using a large dataset of cad models — InCVPR, 2014&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;Butler D. J., Wulff J., Stanley G. B., Black M.J. Anaturalistic open source movie for optical flow evaluation // ECCV, Part IV — Springer-Verlag, 2012 — с. 611–625&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов реидентификации. Он представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1100px|Рисунок 7. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;Wood, E., Baltrusaitis, T., Morency, L., Robinson, P., Bulling, A. Learning an appearance-based gaze estimator from one million synthesised images // Proceedings of the Ninth Biennial ACM Symposium on Eye Tracking Research &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
В 2016 году по методологии SCRUM была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса (см. рисунок 8). Это позволяет решать задачу '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии.&lt;br /&gt;
&lt;br /&gt;
Программист бизнес-приложений получает в два раза больше программистов других приложений, поэтому он должен знать и эти алгоритмы.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[https://www.nvidia.com/content/dam/en-zz/Solutions/deep-learning/resources/accelerating-ai-with-synthetic-data-ebook/accelerating-ai-with-synthetic-data-nvidia_web.pdf El Emam, K. Accelerating AI with Synthetic Data] — Beijing, Boston, Farnham, Sebastopol, Tokyo: O'Reilly Media, Inc., 2020.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA DRIVE ===&lt;br /&gt;
&lt;br /&gt;
Для обучения автономного транспорта компания NVIDIA разработала по методологии SCRUM платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров. В обучении используется два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81_%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%B8_%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5_%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%84%D0%BE%D1%80%D0%BC%D1%8B&amp;diff=83494</id>
		<title>Процесс нормализации и другие нормальные формы</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81_%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%B8_%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5_%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%84%D0%BE%D1%80%D0%BC%D1%8B&amp;diff=83494"/>
				<updated>2022-09-01T05:02:47Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Иерархия нормальных форм ==&lt;br /&gt;
*[[Нормальные_формы:_первая_и_вторая#Первая_нормальная_форма|1НФ]] - необходимо проверить отношение на наличие повторяющихся групп атрибутов и не атомарных атрибутов.&lt;br /&gt;
*[[Нормальные_формы:_первая_и_вторая#Вторая_нормальная_форма|2НФ]] - находим все функциональные зависимости, у которых левая часть является подключом и декомпозируем по ним.&lt;br /&gt;
*[[Нормальные формы:_третья_и_Бойса-Кодда#Третья_нормальная_форма|3 НФ]] - находим транзитивные нормальные зависимости и декомпозируем по ним.&lt;br /&gt;
*[[Нормальные формы:_третья_и_Бойса-Кодда#Третья_нормальная_форма|НФБК]] - декомпозируем, если все еще есть функциональные зависимости, у которых в левой части не надключ. При этом могут пропасть некоторые функциональные зависимости. Лучшая нормальная форма, которую можем получить на базе ФЗ.&lt;br /&gt;
*[[Многозначные_зависимости_и_четвертая_нормальная_форма|4НФ]] - находим множественные зависимости. При наличии нетривиальных МЗ декомпозируем. Лучшая нормальная форма для декомпозиции на два отношения.&lt;br /&gt;
*[[Зависимости_соединения_и_пятая_нормальная_форма#Пятая_нормальная_форма_(Проекционно-соединительная)| 5НФ]] - находим зависимости соединения. Если находим, то снова декомпозируем. Лучшая нормальная форма для декомпозиции.&lt;br /&gt;
&lt;br /&gt;
== Теоремы Дейта-Фейгина ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement='''Теорема Дейта-Фейгина 1.''' Если отношение находится в 3НФ и все ключи простые, то отношение находится в 5НФ.&lt;br /&gt;
|proof=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement='''Теорема Дейта-Фейгина 2.''' Если отношение находится в НФБК и существует простой ключ, то отношение находится в 4НФ.&lt;br /&gt;
|proof=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Процесс нормализации ==&lt;br /&gt;
*1НФ&lt;br /&gt;
*НФБК. Если приведение к НФБК разрушает полезные нам функциональные зависимости, то останавливаемся на 3НФ.&lt;br /&gt;
*4 НФ&lt;br /&gt;
*5 НФ, если находим нетривиальные зависимости соединения&lt;br /&gt;
&lt;br /&gt;
Обычно при грамотном построении [[Модель_сущность-связь|модели сущность-связь]] полученное отношение будет находиться как минимум в 3НФ.&lt;br /&gt;
&lt;br /&gt;
== Набор операций ==&lt;br /&gt;
1. Проекция - разбиение на части&lt;br /&gt;
&lt;br /&gt;
2. Соединения - склейка частей&lt;br /&gt;
&lt;br /&gt;
Можно задать другой набор операций и определить свои нормальные формы. Например, разбить множество строк на разные куски и объединять соответствующие множества.&lt;br /&gt;
&lt;br /&gt;
== Доменно-ключевая нормальная форма ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
В '''доменно-ключевой нормальной форме''' все ограничения являются следствием ограничения доменов и ключей. Где ограничение домена – тип атрибута, ограничение ключа – множество атрибутов, являющихся ключом.}}&lt;br /&gt;
Формально, ДКНФ - это та форма, к которой хотим в итоге привести отношение, так как база данных умеет эффективно проверять ограничения ключей, а также ограничения доменов - что мы не можем записать значения несоответствующего типа атрибута.&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=Доменно-ключевая нормальная форма является более строгой, чем пятая нормальная форма. (Фейгин)&lt;br /&gt;
|proof=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=ДКНФ не достижима инкрементально. &lt;br /&gt;
|proof=&lt;br /&gt;
}}&lt;br /&gt;
С одной стороны, именно эта нормальная форма используется на практике, так как нас интересует именно ограничение доменов и ключей, но мы пользуемся тем, что ситуации, когда отношение находится в 5НФ и не находится в ДКНФ, вырожденные, хотя и существуют в теории.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Базы данных]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB_%D0%9B%D0%B5%D0%B6%D0%B0%D0%BD%D0%B4%D1%80%D0%B0,_%D0%BA%D1%80%D0%B8%D1%82%D0%B5%D1%80%D0%B8%D0%B9_%D0%AD%D0%B9%D0%BB%D0%B5%D1%80%D0%B0&amp;diff=83493</id>
		<title>Символ Лежандра, критерий Эйлера</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB_%D0%9B%D0%B5%D0%B6%D0%B0%D0%BD%D0%B4%D1%80%D0%B0,_%D0%BA%D1%80%D0%B8%D1%82%D0%B5%D1%80%D0%B8%D0%B9_%D0%AD%D0%B9%D0%BB%D0%B5%D1%80%D0%B0&amp;diff=83493"/>
				<updated>2022-09-01T05:02:42Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{В разработке}}&lt;br /&gt;
==Символ Лежандра, критерий Эйлера==&lt;br /&gt;
{{Определение &lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;\left(\cfrac{a}{p}\right)&amp;lt;/tex&amp;gt; — называется символом Лежандра, если &amp;lt;tex&amp;gt;\left(\cfrac{a}{p}\right)=1&amp;lt;/tex&amp;gt;, когда &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; — квадратичный вычет по модулю &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;, и &amp;lt;tex&amp;gt;\left(\cfrac{a}{p}\right)=-1&amp;lt;/tex&amp;gt;, когда &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; — квадратичный невычет по модулю &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;p\in\mathbb{P}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|id=euler&lt;br /&gt;
|about=Критерий Эйлера&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p&amp;gt;2 \text{; }p \in \mathbb{P}&amp;lt;/tex&amp;gt;. Число &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, взаимнопростое с &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;, является квадратичным вычетом по модулю &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; тогда и только тогда, когда &amp;lt;tex&amp;gt;a^{\frac{p-1}{2}}\equiv 1(mod\text{ }p)&amp;lt;/tex&amp;gt;, и является квадратичным невычетом по модулю &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; тогда и только тогда, когда &amp;lt;tex&amp;gt;a^{\frac{p-1}{2}}\equiv -1(mod\text{ }p)&amp;lt;/tex&amp;gt;. То есть &amp;lt;tex&amp;gt;\left(\cfrac{a}{p}\right)\equiv a^{\frac{p-1}{2}}(mod\text{ }p)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим три утверждения:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(1) &amp;lt;tex&amp;gt;x^2\equiv a (mod~ p)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(2) &amp;lt;tex&amp;gt;a^{\frac{p-1}{2}}\equiv 1 (mod~p)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(3) &amp;lt;tex&amp;gt;a^{\frac{p-1}{2}}\equiv -1 (mod~p)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Сначала докажем, что &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; одновременно удовлетворяет только одному сравнению (2) или (3).&lt;br /&gt;
&amp;lt;tex&amp;gt;a^{\phi (p)}=1(mod ~ p)&amp;lt;/tex&amp;gt;, отсюда &amp;lt;tex&amp;gt;0=a^{\phi(p)}-1 (mod ~p)=a^{p-1}-1 (mod ~p)= (a^{\frac{p-1}{2}}-1)\cdot(a^{\frac{p-1}{2}}+1) (mod ~ p)&amp;lt;/tex&amp;gt;, значит хотя бы один из сомножителей должен делиться на &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;. Но они не могут делиться на &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; одновременно, так как их разность равна &amp;lt;tex&amp;gt;\pm 2&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;p&amp;gt;2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Теперь возведем обе части сравнения (1) в степень &amp;lt;tex&amp;gt;\frac{p-1}{2}&amp;lt;/tex&amp;gt;. Получим &amp;lt;tex&amp;gt;x^{p-1}=a^{\frac{p-1}{2}} (mod ~p)&amp;lt;/tex&amp;gt;. Но &amp;lt;tex&amp;gt;x^{p-1}=1(mod ~p)&amp;lt;/tex&amp;gt;, значит если &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; удовлетворяет сравнению (1), то выполняется и сравнение (2). Рассмотрим последовательность чисел &amp;lt;tex&amp;gt;1,~2,~\dots ,~ p-1&amp;lt;/tex&amp;gt;, или, что то же самое, &amp;lt;tex&amp;gt;1,~2,~\dots,~\frac{p-1}{2},~ \frac{p+1}{2}-1,~\dots,~p-1&amp;lt;/tex&amp;gt;. Очевидно, что &amp;lt;tex&amp;gt;1^2\equiv (p-1)^2,~ 2^2\equiv (p-2)^2,~\dots (\frac{p-1}{2})^2 \equiv (\frac{p+1}{2})^2&amp;lt;/tex&amp;gt; по модулю &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;. Значит существует только &amp;lt;tex&amp;gt;\frac{p-1}{2}&amp;lt;/tex&amp;gt; различных квадратов чисел по модулю &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;. Обозначим их &amp;lt;tex&amp;gt;a_1,~a_2,~\dots,~a_{\frac{p-1}{2}}&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; равно любому &amp;lt;tex&amp;gt;a_i&amp;lt;/tex&amp;gt;, то сравнение (1) имеет решение, следовательно сравнение (2) так же выполняется для всех &amp;lt;tex&amp;gt;a_i&amp;lt;/tex&amp;gt;. Но сравнение (2) не может иметь более &amp;lt;tex&amp;gt;\frac{p-1}{2}&amp;lt;/tex&amp;gt; различных решений, следовательно оно имеет ровно столько решений. Отсюда же следует, что и сравнение (3) имеет ровно &amp;lt;tex&amp;gt;\frac{p-1}{2}&amp;lt;/tex&amp;gt; различных решений, и при &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, равном любому из этих решений, сравнение (1) решений не имеет.&lt;br /&gt;
}}&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|id=prop1&lt;br /&gt;
|statement=Произведение двух квадратичных вычетов будет вычетом, двух невычетов — вычетом, вычета и невычета — невычетом.&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt;\left(\cfrac{a\cdot b}{p}\right)=(a\cdot b)^{\frac{p-1}{2}}=a^{\frac{p-1}{2}}\cdot b^{\frac{p-1}{2}}=\left(\cfrac{a}{p}\right)\cdot \left(\cfrac{b}{p}\right)&amp;lt;/tex&amp;gt;. Зная, что &amp;lt;tex&amp;gt;1\cdot 1=1,~(-1)\cdot(-1)=1, ~ 1 \cdot (-1)=-1&amp;lt;/tex&amp;gt;, получаем требуемое.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория чисел]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A6%D0%B8%D0%BA%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%BE_%D0%B3%D1%80%D0%B0%D1%84%D0%B0&amp;diff=83492</id>
		<title>Циклическое пространство графа</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A6%D0%B8%D0%BA%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%BE_%D0%B3%D1%80%D0%B0%D1%84%D0%B0&amp;diff=83492"/>
				<updated>2022-09-01T05:02:36Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Циклическое пространство графа ==&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; m = |E(G)| &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; n = |V(G)| &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; {{---}} количество компонент связности &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; B^t &amp;lt;/tex&amp;gt; {{---}} линейное пространство, элементами которого являются &amp;lt;tex&amp;gt; t &amp;lt;/tex&amp;gt;-мерные двоичные вектора и их сложение определено, как сложение по модулю &amp;lt;tex&amp;gt; 2 &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition = &lt;br /&gt;
'''Циклическое пространство графа''' (англ. ''cyclic graph space'') {{---}} &amp;lt;tex&amp;gt;  C = \operatorname {Ker}(I) &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; I : B^m \rightarrow B^n &amp;lt;/tex&amp;gt; {{---}} линейный оператор, сопоставленный матрице инцидентности &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition = &lt;br /&gt;
'''Обобщенный цикл графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;''' (англ. ''generalized graph cycle'') {{---}} элемент линейного пространства &amp;lt;tex&amp;gt;C &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id = lemma1&lt;br /&gt;
|statement=&lt;br /&gt;
Пространство &amp;lt;tex&amp;gt; C &amp;lt;/tex&amp;gt; изоморфно &amp;lt;tex&amp;gt; T &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; T &amp;lt;/tex&amp;gt;{{---}} пространство, элементами которого являются наборы [[Основные_определения_теории_графов#def_graph_edge_1 | ребер]], из которых можно составить несколько простых реберно непересекающихся [[Основные_определения_теории_графов#def_graph_cycle_1 | циклов]].&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt; x \in  C &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим граф &amp;lt;tex&amp;gt; G_1(V_1,E_1) &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;  E_1 &amp;lt;/tex&amp;gt; {{---}} множество ребер, таких, что на соответствующих местах вектора &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; стоят единицы, а &amp;lt;tex&amp;gt; V_1 = V(G) &amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
В силу определения обобщенного цикла: &amp;lt;tex&amp;gt; \forall v  : v \in V_1 ~ deg(v) \equiv 0\mod~2 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Покажем по индукции, что &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; можно декомпозировать  на несколько реберно непересекающихся простых циклов. Ведем индукцию по числу ребер.&lt;br /&gt;
База индукции &amp;lt;tex&amp;gt; |E_1(G)|=0 &amp;lt;/tex&amp;gt; очевидно выполняется.    &lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt; G_1 &amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;   \forall v  : v \in V_1 ~ deg(v) \equiv 0\mod~2 \Rightarrow |E_1(G)| &amp;gt; |V(G)| - 1 \Rightarrow  &amp;lt;/tex&amp;gt; существует цикл, добавим его в декомпозицию, удалим ребра, принадлежащие ему. В силу того, что четность степеней вершин не изменилась, по предположению индукции декомпозируем оставшийся граф.&lt;br /&gt;
&lt;br /&gt;
Отсюда следует, что каждому обобщенному циклу соответствуют ребра, которые образуют набор реберно непересекающихся простых циклов. &lt;br /&gt;
&lt;br /&gt;
Если рассмотреть набор реберно непересекающихся простых циклов некоторого графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; и взять все ребра, принадлежащие этим циклам, то им можно сопоставить обобщенный цикл, поставив &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt; в соответствующие места &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;, во все остальные &amp;lt;tex&amp;gt; 0 &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement = Если &amp;lt;tex&amp;gt;\textbf{C}&amp;lt;/tex&amp;gt; {{---}} обобщенный цикл, соответствующий простому циклу &amp;lt;tex&amp;gt;C'&amp;lt;/tex&amp;gt; графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;I(\textbf{C}) = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=Пусть &amp;lt;tex&amp;gt;\textbf{C}&amp;lt;/tex&amp;gt; {{---}} обобщенный цикл из условия, а &amp;lt;tex&amp;gt;C'&amp;lt;/tex&amp;gt; {{---}} соответствующий ему простой цикл. &lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;I(\textbf{C}) = \bigoplus\limits_{e \in C'}c(e)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;c(e)&amp;lt;/tex&amp;gt;{{---}} столбец в [[Матрица_инцидентности_графа | матрице инцидентности графа]] &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, соответствующий ребру &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt;. Так как каждая вершина в &amp;lt;tex&amp;gt;C'&amp;lt;/tex&amp;gt; имеет степень &amp;lt;tex&amp;gt; 2 &amp;lt;/tex&amp;gt;, то для любого &amp;lt;tex&amp;gt;i \in \overline{0, |VG| - 1}&amp;lt;/tex&amp;gt; верно &amp;lt;tex&amp;gt;|\{e \in C': c(e)_i = 1\}| = 2&amp;lt;/tex&amp;gt;, а значит &amp;lt;tex&amp;gt;I(\textbf{C})_i = 1 \oplus 1 = 0&amp;lt;/tex&amp;gt;. Таким образом &amp;lt;tex&amp;gt;I(\textbf{C}) = 0&amp;lt;/tex&amp;gt;. }}&lt;br /&gt;
&lt;br /&gt;
В силу линейности оператора &amp;lt;tex&amp;gt; I &amp;lt;/tex&amp;gt;  и того, что &amp;lt;tex&amp;gt;I( &amp;lt;/tex&amp;gt; простой цикл &amp;lt;tex&amp;gt; )=0 &amp;lt;/tex&amp;gt;, получаем что &amp;lt;tex&amp;gt; Ix=0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Размерность линейного пространства обобщенных циклов ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt; \operatorname {dim}(C) = m - n + k &amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt; \operatorname {dim}(C)=\operatorname {dim}(\operatorname {Ker}(I))=m-\operatorname {Rang}(A) &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; \operatorname {Rang}(A) &amp;lt;/tex&amp;gt; {{---}} максимальное количество ЛНЗ столбцов &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt;. Если рассмотреть простой цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, то сумма столбцов соответствующих этим ребрам равна &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;, т. к. значение оператора &amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt; на  соответствующем обобщенном цикле в точности равно сумме этих столбцов. Значит, эти столбцы ЛЗ. Отсюда следует, что если любому множеству ребер, содержащих цикл, в соответствие сопоставить набор столбцов из &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt;, то он будет ЛЗ&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=Если подмножество ребер из &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; не содержит цикл, то набор соответствующих столбцов из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; ЛНЗ. &lt;br /&gt;
|proof=&lt;br /&gt;
Пусть он ЛЗ, значит существует равная нулю линейная комбинация столбцов, где не все коэффициенты равны нулю. Возьмем столбцы, коэффициенты при которых не нулевые, тогда их линейная комбинация образует &amp;lt;tex&amp;gt;x \in C&amp;lt;/tex&amp;gt;, а значит соответствующие столбцам ребра разбиваются на простые циклы и исходное множество ребер содержало цикл. Противоречие. }}&lt;br /&gt;
&lt;br /&gt;
Максимальное число ребер, которые мы можем выделить из G и которые не содержат цикл равно &amp;lt;tex&amp;gt; n - k &amp;lt;/tex&amp;gt; (в каждой компоненте связности выделим остовное дерево). &lt;br /&gt;
Итого: &amp;lt;tex&amp;gt; \operatorname {dim}(C)=m - n + k &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
Циклическое пространство графа позволяет доказать некоторые теоремы из теории графов, а также описать условия существования отдельных подвидов графа. В частности, благодаря введенному понятию, можно доказать необходимое и достаточное условие планарности графа&amp;lt;ref&amp;gt;[http://logic.pdmi.ras.ru/~dvk/211/graphs_dk.pdf  Карпов В.Д. Теория графов - с.281 - Применения циклического пространства графа]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
*[[Линейный_оператор|Линейный оператор]]&lt;br /&gt;
&lt;br /&gt;
*[[Ядро_и_образ_линейного_оператора|Ядро и образ линейного оператора]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
*Харари Ф. Теория графов / пер. с англ. — изд. 4-е — М.: Книжный дом «ЛИБРОКОМ», 2009. — с.54. — ISBN 978-5-397-00622-4&lt;br /&gt;
&lt;br /&gt;
*Карпов В.Д. Теория графов - с.281&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Основные определения теории графов]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=R2Cmax&amp;diff=83491</id>
		<title>R2Cmax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=R2Cmax&amp;diff=83491"/>
				<updated>2022-09-01T05:02:29Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex dpi=200&amp;gt;R2 \mid\mid C_{max} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Задача&lt;br /&gt;
|definition=Дано два разных неоднородных станка, которые работают параллельно. Есть &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; работ, время выполнения которых на первом &lt;br /&gt;
и втором станке различное. Нужно минимизировать время завершения всех работ.}}&lt;br /&gt;
&lt;br /&gt;
Задача &amp;lt;tex&amp;gt;R2 \mid \mid C_{max}&amp;lt;/tex&amp;gt; является [[Классы_NP_и_Σ₁#def1|&amp;lt;tex&amp;gt;\mathrm{NP}&amp;lt;/tex&amp;gt;-полной задачей]]&amp;lt;ref&amp;gt; J.K. Lenstra, A.H.G. Rinnooy Kan, and P. Brucker. Complexity of machine scheduling problems. Annals of Discrete Mathematics, 1:343–362, 1977.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Неэффективное решение==&lt;br /&gt;
Переберём все битовые маски длины &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;. Для каждой маски вычислим завершение последней работы. Работы будем выполнять следующим образом, если на &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;&amp;amp;nbsp;-й позиции стоит &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;&amp;amp;nbsp;-ая работа будет выполняться на первом станке, иначе на втором. Среди всех масок выберем ту, у которой &amp;lt;tex&amp;gt;C_{max}&amp;lt;/tex&amp;gt; минимальный.&lt;br /&gt;
&lt;br /&gt;
Время работы алгоритма &amp;lt;tex&amp;gt;O(n \cdot 2^n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Эффективное решение==&lt;br /&gt;
Применим для решения данной задачи [[Динамическое программирование|динамическое программирование]].&lt;br /&gt;
&lt;br /&gt;
Будем  считать массив &amp;lt;tex&amp;gt;dp[i][j]&amp;lt;/tex&amp;gt;, в котором будем хранить минимально время выполнения работ на втором станке, где &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; означает, что мы рассмотрели &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; работ, а &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; {{---}} с каким временем выполнения работ на первом станке. Тогда &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; не превосходит суммы выполнения работ на первом станке. Назовем эту сумму &amp;lt;tex&amp;gt;maxTime&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Изначальное значение &amp;lt;tex&amp;gt;dp[0][0] = 0&amp;lt;/tex&amp;gt;, а всё остальную таблицу проинициализируем бесконечностью.&lt;br /&gt;
&lt;br /&gt;
Допустим мы посчитали динамику для &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; работ. Теперь надо пересчитать её для &amp;lt;tex&amp;gt;(i + 1)&amp;lt;/tex&amp;gt;-ой работы. Переберём время выполнения работ на первом станке и посчитаем какое минимально время выполнения мы можем получить на втором станке при фиксированном времени на первом. Так как &amp;lt;tex&amp;gt;(i + 1)&amp;lt;/tex&amp;gt;-ю работу мы можем выполнить либо на первом станке, либо на втором, то &amp;lt;tex&amp;gt; dp[i + 1][j]&amp;lt;/tex&amp;gt; надо прорелаксировать значением &amp;lt;tex&amp;gt;dp[i][j - p_1[i + 1]] &amp;lt;/tex&amp;gt;, что соответсвует выполнению работы на первом станке, и значением &amp;lt;tex&amp;gt; dp[i][j]+p_2[i + 1]&amp;lt;/tex&amp;gt; (выполнение на втором станке).&lt;br /&gt;
&lt;br /&gt;
Таким образом: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;dp[i + 1][j] = \min(dp[i][j] + p_2[i + 1], dp[i][j - p_1[i + 1]])&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда ответом на задачу будет &amp;lt;tex&amp;gt;\min\limits_{j}(\max(j, dp[n][j]))&amp;lt;/tex&amp;gt;. Другими словами мы перебираем время работы на первом станке и смотрим сколько ещё потребуется работать на втором станке. Время выполнения всех работ {{---}} это максимум из этих двух величин. И в конце из всех времен выбираем минимальное.&lt;br /&gt;
&lt;br /&gt;
Также можно заметить, что во время каждой итерации алгоритма используется только два столбца массива &amp;lt;tex&amp;gt; dp &amp;lt;/tex&amp;gt;. Это позволяет уменьшить использование памяти с &amp;lt;tex&amp;gt;O(n \cdot maxTime)&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt; O(maxTime)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Доказательство корректности алгоритма==&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Расписание, построенное данным алгоритмом, является корректным и оптимальным.&lt;br /&gt;
|proof=&lt;br /&gt;
Корректность расписания, составленного алгоритмом очевидна. Надо доказать его оптимальность.&lt;br /&gt;
&lt;br /&gt;
Пусть расписание, составленное этим алгоритмом &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; не оптимальное и в конце работы алгоритма минимум достигается в &amp;lt;tex&amp;gt;\max(time, d[n][time])&amp;lt;/tex&amp;gt;. Рассмотрим оптимальное решение &amp;lt;tex&amp;gt;O&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим произвольную работу, выполненную на первом станке в оптимальном расписании, но на втором в расписании, составленном алгоритмом. Пусть у этой работы номер &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;. Если её выполнить на первом станке, то время окончания всех работ будет &amp;lt;tex&amp;gt;\max(time + p_{1}[i], d[n][time + p_{1}[i]])&amp;lt;/tex&amp;gt;. Однако &amp;lt;tex&amp;gt;\max(time, d[n][time]) \leqslant \max(time + p_{1}[i], d[n][time + p_{1}[i]])&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Рассмотрим произвольную работу, выполненную в оптимальном расписании на втором станке, но на первом в расписании, составленном алгоритмом. Пусть номер этой работы &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;. Если выполнять эту работу на втором станке, то время выполнения всех работ будет &amp;lt;tex&amp;gt;\max(time - p_{1}[j], d[n][time - p_{1}[j]])&amp;lt;/tex&amp;gt;. Но &amp;lt;tex&amp;gt; \max(time, d[n][time]) \leqslant \max(time - p_{1}[j], d[n][time - p_{1}[j]]) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
В итоге если превратить решение &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; в решение &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; эквивалентное &amp;lt;tex&amp;gt;O&amp;lt;/tex&amp;gt;, то ответ &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; не будет превосходить ответ &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt;. Тогда расписание &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; оптимальное. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Псевдокод==&lt;br /&gt;
 &amp;lt;font color=green&amp;gt;// Функция принимает количество работ n, список времён выполнения работ на первом станке p1 и времён выполнения на втором станке p2.&amp;lt;br&amp;gt;// Функция возвращает минимальное время выполнения всех работ на двух станках.&amp;lt;/font&amp;gt;&lt;br /&gt;
 '''function''' getCmax(p1 : '''int'''[n], p2 : '''int'''[n]): '''int'''&lt;br /&gt;
    '''int''' maxTime = 0&lt;br /&gt;
    '''for''' i = 0 .. n - 1&lt;br /&gt;
       maxTime += p1[i]&lt;br /&gt;
    '''int'''[][] dp&lt;br /&gt;
    fill(dp, &amp;lt;tex&amp;gt;\infty&amp;lt;/tex&amp;gt;)&lt;br /&gt;
    dp[0][0] = 0&lt;br /&gt;
    '''for''' i = 0 .. n - 1&lt;br /&gt;
       '''for''' j = 0 .. maxTime&lt;br /&gt;
          dp[i + 1][j] = min(dp[i][j - p1[i + 1]], dp[i][j] + p2[i + 1])&lt;br /&gt;
    '''int''' answer = &amp;lt;tex&amp;gt;\infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
    '''for''' j = 0 .. maxTime&lt;br /&gt;
       answer = min(answer, max(j, dp[n][j]))&lt;br /&gt;
    '''return''' answer&lt;br /&gt;
==Время работы==&lt;br /&gt;
Время работы &amp;lt;tex&amp;gt;O(n \cdot maxTime)&amp;lt;/tex&amp;gt; {{---}} псевдополиномиальный алгоритм. Кроме того, если время выполнения работ, будет вещественные числа, то придется приводить их до целых, либо считать приблежённое значения.&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
* [[F2Cmax|&amp;lt;tex&amp;gt;F2\mid\mid C_{max}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[O2Cmax|&amp;lt;tex&amp;gt;O2\mid\mid C_{max}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
* J.K. Lenstra, A.H.G. Rinnooy Kan, and P. Brucker. Complexity of machine scheduling problems. Annals of Discrete Mathematics, стр. 358–360, 1977.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Теория расписаний]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BE%D1%82%D0%BC%D0%B5%D0%BD%D1%8B_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%81%D1%80%D0%B5%D0%B4%D0%BD%D0%B5%D0%B3%D0%BE_%D0%B2%D0%B5%D1%81%D0%B0&amp;diff=83490</id>
		<title>Алгоритм отмены цикла минимального среднего веса</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BE%D1%82%D0%BC%D0%B5%D0%BD%D1%8B_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%81%D1%80%D0%B5%D0%B4%D0%BD%D0%B5%D0%B3%D0%BE_%D0%B2%D0%B5%D1%81%D0%B0&amp;diff=83490"/>
				<updated>2022-09-01T05:02:23Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
В статье описывается один из сильно полиномиальных алгоритмов решения [[Поток минимальной стоимости #Задача о потоке минимальной стоимости|задачи о поиске потока минимальной стоимости]].&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
Приведенный алгоритм основан на идее [[Поток минимальной стоимости #Метод устранения отрицательных циклов в остаточной сети|алгоритма Клейна отмены цикла отрицательного веса]]. Выбор цикла минимального среднего веса вместо случайного делает алгоритм сильно полиномиальным.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Сильно полиномиальными''' (англ. ''strongly polynomial'') в контексте данной задачи называются алгоритмы, чья сложность полиномиально зависит от &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt;.}}&lt;br /&gt;
===Описание===&lt;br /&gt;
Обозначим как &amp;lt;tex&amp;gt;c_{f}(C)&amp;lt;/tex&amp;gt; остаточную [[Определение сети, потока|пропускную способность]] цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; при протекании в сети потока &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Cтоимость цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; обозначим за &amp;lt;tex&amp;gt;p(C)&amp;lt;/tex&amp;gt;, а длину (число входящих в него ребер) {{---}} за &amp;lt;tex&amp;gt;\texttt{len}(C)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Средним весом''' (англ. ''mean weight'') цикла будем называть отношение его стоимости к его длине &amp;lt;tex&amp;gt;\mu (C)=\dfrac{p(C)}{\texttt{len}(C)}&amp;lt;/tex&amp;gt;}}&lt;br /&gt;
Данный алгоритм заключается в последовательной отмене циклов минимального среднего веса в [[Дополняющая сеть, дополняющий путь|остаточной сети]] посредством их насыщения. Алгоритм работает до тех пор, пока минимальный средний вес циклов не окажется положительным, что будет означать, что поток минимальной стоимости найден. &lt;br /&gt;
&lt;br /&gt;
Более формально:&lt;br /&gt;
* '''Шаг &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;'''. Рассмотрим некоторый поток &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. &lt;br /&gt;
* '''Шаг &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt;'''. Найдем цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, обладающий наименьшим средним весом. Если &amp;lt;tex&amp;gt;\mu (C) \geqslant 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} поток минимальной стоимости и алгоритм завершается.&lt;br /&gt;
* '''Шаг &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt;'''. Отменим цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, пустив по нему максимально возможный поток: &amp;lt;tex&amp;gt;f = f + c_{f}(C)\cdot f_{C}&amp;lt;/tex&amp;gt;. Перейдем к '''шагу &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;'''.&lt;br /&gt;
&lt;br /&gt;
===Сложность===&lt;br /&gt;
Для сетей с целочисленными стоимостями на ребрах &amp;lt;tex&amp;gt;O(VE\cdot VE\log{CV})&amp;lt;/tex&amp;gt;, с вещественными {{---}} &amp;lt;tex&amp;gt;O(VE\cdot VE^{2}\log{V})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
В обоих случаях &amp;lt;tex&amp;gt;O(VE)&amp;lt;/tex&amp;gt; времени тратится на поиск цикла минимального среднего веса.&lt;br /&gt;
&lt;br /&gt;
===Псевдокод===&lt;br /&gt;
  '''Edge[]''' findMin('''Graph''' G)&lt;br /&gt;
      '''while''' f&lt;br /&gt;
          &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// найдём M(C) {{---}} вес минимального цикла&amp;lt;/font&amp;gt;&lt;br /&gt;
          C = c : M(c) = &amp;lt;tex&amp;gt;\min\limits_c&amp;lt;/tex&amp;gt; M(c)  &lt;br /&gt;
          '''if''' M(C) &amp;lt;tex&amp;gt;\geqslant&amp;lt;/tex&amp;gt; 0&lt;br /&gt;
              &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// Если величина M(C) положительна, то мы нашли f {{---}} поток минимальной стоимости, на этом алгоритм завершается&amp;lt;/font&amp;gt;&lt;br /&gt;
              '''return''' f                             &lt;br /&gt;
          '''else'''&lt;br /&gt;
              &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// в противном случае отменяем цикл&amp;lt;/font&amp;gt;&lt;br /&gt;
              f += c_f * f(C)&lt;br /&gt;
&lt;br /&gt;
===Корректность===&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} поток минимальной стоимости. Введём на нашей сети функцию [[Алгоритм Джонсона|потенциалов]] &amp;lt;tex&amp;gt;\varphi&amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Приведённой стоимостью''' (англ. ''reduced cost'') ребра назовем следующую величину: &amp;lt;tex&amp;gt;p_{\varphi}(uv)=\varphi(u) + p(uv) - \varphi(v)&amp;lt;/tex&amp;gt;.}}&lt;br /&gt;
Иными словами, приведённая стоимость {{---}} это сколько нужно потратить денег, чтобы перевезти единицу жидкости из &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; (её нужно купить в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, перевезти из &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; и продать в &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=lemma1&lt;br /&gt;
|about=&amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;&lt;br /&gt;
|statement=Если &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} поток минимальной стоимости, то &amp;lt;tex&amp;gt;\exists \varphi&amp;lt;/tex&amp;gt; такое, что &amp;lt;tex&amp;gt;\forall uv: \; c_{f}(uv) &amp;gt; 0 \implies p_{\varphi}(uv) \geqslant 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
:Рассмотрим остаточную сеть {{---}} граф &amp;lt;tex&amp;gt;G_{f}&amp;lt;/tex&amp;gt;. В нем нет отрицательных циклов, так как &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} поток минимальной стоимости&amp;lt;ref&amp;gt;[[Лемма об эквивалентности свойства потока быть минимальной стоимости и отсутствии отрицательных циклов в остаточной сети]]&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
:Добавим вершину &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и проведем из нее ребро стоимости &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; во все вершины графа &amp;lt;tex&amp;gt;G_{f}&amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt;\varphi(u)&amp;lt;/tex&amp;gt; выберем стоимость минимального пути из &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:Рассмотрим теперь некоторое ребро &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt;. Понятно, что &amp;lt;tex&amp;gt;\varphi(v) \leqslant \varphi(u) + p(uv)&amp;lt;/tex&amp;gt;. (Здесь сравниваются минимальный путь &amp;lt;tex&amp;gt;a \rightsquigarrow v&amp;lt;/tex&amp;gt; и путь &amp;lt;tex&amp;gt;a \rightsquigarrow u \rightarrow v&amp;lt;/tex&amp;gt;). Перенеся &amp;lt;tex&amp;gt;\varphi(v)&amp;lt;/tex&amp;gt; в другую часть неравенства, получаем &amp;lt;tex&amp;gt;0 \leqslant \varphi(u) + p(uv) - \varphi(v)&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;0 \leqslant p_{\varphi}(uv)&amp;lt;/tex&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Будем говорить, что поток &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} '''&amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-оптимальный''' (англ. ''&amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-optimal''), если &amp;lt;tex&amp;gt;\exists \varphi&amp;lt;/tex&amp;gt; такая, что &amp;lt;tex&amp;gt;\forall uv: c_{f}(uv) &amp;gt; 0 \implies p_{\varphi}(uv) \geqslant -\varepsilon&amp;lt;/tex&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=lemma2&lt;br /&gt;
|about=&amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt;&lt;br /&gt;
|statement=Если стоимости целочисленны и поток &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-оптимальный, где &amp;lt;tex&amp;gt;\varepsilon &amp;lt; \dfrac{1}{V}&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} поток минимальной стоимости.&lt;br /&gt;
|proof= &lt;br /&gt;
:Рассмотрим цикл в остаточной сети &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;. Заметим, что &amp;lt;tex&amp;gt;p(C)=p_{\varphi}(C)&amp;lt;/tex&amp;gt; (для доказательства этого факта достаточно расписать &amp;lt;tex&amp;gt;p_{\varphi}(C)&amp;lt;/tex&amp;gt; по определению).&lt;br /&gt;
&lt;br /&gt;
:Возьмем &amp;lt;tex&amp;gt;\varphi&amp;lt;/tex&amp;gt; такое, что стоимости всех ребер в &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; не меньше &amp;lt;tex&amp;gt;-\varepsilon&amp;lt;/tex&amp;gt;. Тогда стоимость всего цикла &amp;lt;tex&amp;gt;p_{\varphi}(C)\geqslant -V\cdot \varepsilon&amp;lt;/tex&amp;gt; (в цикле не больше &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; ребер). Таким образом, &amp;lt;tex&amp;gt;p_{\varphi}(C) &amp;gt; -1&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;p(C) &amp;gt; -1&amp;lt;/tex&amp;gt;. Но исходные пропускные способности были целочисленными, поэтому &amp;lt;tex&amp;gt;p(C) \geqslant 0&amp;lt;/tex&amp;gt;, а это означает, что в остаточной сети нет отрицательных циклов, и, соответственно, &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} поток минимальной стоимости.}}&lt;br /&gt;
&lt;br /&gt;
Обозначим за &amp;lt;tex&amp;gt;\mu^{*}&amp;lt;/tex&amp;gt; минимальную величину среди средних весов циклов для потока &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;, а за &amp;lt;tex&amp;gt;\varepsilon^{*}&amp;lt;/tex&amp;gt; минимальное &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; такое, что поток &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-оптимальный.&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=lemma3&lt;br /&gt;
|about=&amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt;&lt;br /&gt;
|statement=Если &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} поток не минимальной стоимости, то &amp;lt;tex&amp;gt;\varepsilon^{*}=-\mu^{*}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
:Пусть &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; {{---}} цикл минимального среднего веса в остаточной сети.&lt;br /&gt;
*Покажем, что &amp;lt;tex&amp;gt;\mu^{*} \geqslant -\varepsilon^{*}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
:Поскольку поток &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;\varepsilon^{*}&amp;lt;/tex&amp;gt;-оптимальным, верно следующее: &amp;lt;tex&amp;gt;p(C) = p_{\varphi}(C) \geqslant -\texttt{len}(C) \cdot \varepsilon^{*}&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;\dfrac{p(C)}{\texttt{len}(C)} \geqslant -\varepsilon^{*} &amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\mu(C)=\mu^{*} \geqslant -\varepsilon^{*}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Теперь покажем, что &amp;lt;tex&amp;gt;\mu^{*} \leqslant -\varepsilon^{*}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
:Пусть &amp;lt;tex&amp;gt;p'(uv)=p(uv)-\mu^{*}&amp;lt;/tex&amp;gt; для любого &amp;lt;tex&amp;gt;uv \in E_{f}&amp;lt;/tex&amp;gt;. Логичным будет также обозначить для некоторого цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; за &amp;lt;tex&amp;gt;\mu'(C)&amp;lt;/tex&amp;gt; величину &amp;lt;tex&amp;gt;\dfrac{p'(C)}{\texttt{len}(C)}&amp;lt;/tex&amp;gt;. Таким образом, для любого цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\mu'(C)=\mu(C)-\mu^{*}\geqslant 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
:Далее проведем рассуждения, аналогичные доказательству [[#lemma1|леммы &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;]].&lt;br /&gt;
:Добавим вершину &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и проведем из нее ребро стоимости &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; во все вершины графа &amp;lt;tex&amp;gt;G_{f}&amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt;\varphi(u)&amp;lt;/tex&amp;gt; выберем стоимость (считая стоимостью функцию &amp;lt;tex&amp;gt;p'&amp;lt;/tex&amp;gt;) минимального пути из &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. &lt;br /&gt;
:Таким образом, &amp;lt;tex&amp;gt;\varphi(v) \leqslant \varphi(u) + p'(uv) = \varphi(u) + p(uv) - \mu^{*}&amp;lt;/tex&amp;gt;. Отсюда получаем, что &amp;lt;tex&amp;gt;p_{\varphi}(uv) \geqslant \mu^{*}&amp;lt;/tex&amp;gt; для любого ребра &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt; из остаточной сети &amp;lt;tex&amp;gt;E_{f}&amp;lt;/tex&amp;gt;, что означает, что &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;(-\mu^{*})&amp;lt;/tex&amp;gt;-оптимальный, и, по определению &amp;lt;tex&amp;gt;\varepsilon^{*}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\varepsilon^{*} \leqslant -\mu^{*}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=lemma4&lt;br /&gt;
|about=&amp;lt;tex&amp;gt;4&amp;lt;/tex&amp;gt;&lt;br /&gt;
|statement=Отмена цикла минимального среднего веса не увеличивает &amp;lt;tex&amp;gt;\varepsilon^{*}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
:Пусть &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; {{---}} цикл минимального среднего веса, который мы хотим отменить на текущем шаге нашего алгоритма. Перед тем, как мы отменим этот цикл, любое ребро в остаточной сети, в том числе, любое входящее в цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; ребро &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt; удовлетворяет свойству &amp;lt;tex&amp;gt;\varepsilon^{*}&amp;lt;/tex&amp;gt;-оптимальности: &amp;lt;tex&amp;gt;p_{\varphi}(uv) \geqslant -\varepsilon^{*}&amp;lt;/tex&amp;gt;. &lt;br /&gt;
:По [[#lemma3|лемме &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt;]], &amp;lt;tex&amp;gt;\varepsilon^{*}=-\mu^{*}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;p_{\varphi}(uv) \geqslant \mu^{*}&amp;lt;/tex&amp;gt;. Но поскольку &amp;lt;tex&amp;gt;\mu^{*}&amp;lt;/tex&amp;gt; {{---}} средний вес цикла, то &amp;lt;tex&amp;gt;p_{\varphi}(uv) = \mu^{*} = -\varepsilon^{*}&amp;lt;/tex&amp;gt;. &lt;br /&gt;
:По [[Поток минимальной стоимости #Свойства стоимости|свойству антисимметричности потока]], после отмены цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, в остаточной сети появятся ребра стоимости &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;. Таким образом, свойство &amp;lt;tex&amp;gt;p_{\varphi}(uv) \geqslant -\varepsilon&amp;lt;/tex&amp;gt; все еще выполняется.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Допустимым графом''' (англ. ''admissible graph'') будем называть такой подграф остаточной сети, что он включает только ребра отрицательной приведенной стоимости. &amp;lt;tex&amp;gt;H=\{uv \in E_{f}\;|\; p_{\varphi}(uv) &amp;lt; 0\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=lemma5&lt;br /&gt;
|about=&amp;lt;tex&amp;gt;5&amp;lt;/tex&amp;gt;&lt;br /&gt;
|statement=Пусть &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} некоторый поток, а &amp;lt;tex&amp;gt;f'&amp;lt;/tex&amp;gt; {{---}} поток после &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; отмен циклов минимального среднего веса. Тогда &amp;lt;tex&amp;gt;\varepsilon'^{*} \leqslant \left(1-\dfrac{1}{V}\right)\varepsilon^{*}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;\varepsilon'^{*}&amp;lt;/tex&amp;gt; {{---}} минимальное &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; такое, что поток &amp;lt;tex&amp;gt;f'&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-оптимальный.&lt;br /&gt;
|proof=&lt;br /&gt;
:Изначально любое ребро &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt; удовлетворяет свойству &amp;lt;tex&amp;gt;p_{\varphi}(uv) \geqslant -\varepsilon^{*}&amp;lt;/tex&amp;gt;. Отмена цикла добавляет в остаточную сеть &amp;lt;tex&amp;gt;G_{f}&amp;lt;/tex&amp;gt; только ребра положительной приведенной стоимости (см. [[#lemma4|лемму &amp;lt;tex&amp;gt;4&amp;lt;/tex&amp;gt;]]) и удаляет из сети &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; как минимум одно ребро. Рассмотрим два случая:&lt;br /&gt;
:#Ни один из отмененных циклов не содержал ребер, обладающих неотрицательной приведенной стоимостью. Тогда каждая отмена цикла уменьшает размер допустимого графа &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; и после &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; отмен граф &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; пуст, что означает, что &amp;lt;tex&amp;gt;f'&amp;lt;/tex&amp;gt; {{---}} оптимальный поток, то есть &amp;lt;tex&amp;gt;\varepsilon'^{*}=0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
:#Некоторые из отмененных циклов содержали ребра неотрицательной приведенной стоимости. Пусть впервые такое случилось на &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ой итерации, и, соответственно, &amp;lt;tex&amp;gt;C_{i}&amp;lt;/tex&amp;gt; {{---}} первый из таких циклов. Для &amp;lt;tex&amp;gt;C_{i}&amp;lt;/tex&amp;gt; имеем, что каждое его ребро обладает приведенной стоимостью как минимум &amp;lt;tex&amp;gt;-\varepsilon_{i}^{*}&amp;lt;/tex&amp;gt; (при этом &amp;lt;tex&amp;gt;\varepsilon'^{*} \leqslant \varepsilon_{i}^{*} \leqslant \varepsilon^{*}&amp;lt;/tex&amp;gt; по [[#lemma4|лемме &amp;lt;tex&amp;gt;4&amp;lt;/tex&amp;gt;]]), хотя бы одно из ребер &amp;lt;tex&amp;gt;C_{i}&amp;lt;/tex&amp;gt; обладает неотрицательной приведенной стоимостью и количество ребер в &amp;lt;tex&amp;gt;C_{i}&amp;lt;/tex&amp;gt; не превышает &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;. Тогда средний вес этого цикла &amp;lt;tex&amp;gt;\mu(C_{i}) = \mu_{i}^{*} \geqslant -\left(1-\dfrac{1}{V}\right)\varepsilon_{i}^{*} \geqslant - \left(1-\dfrac{1}{V}\right)\varepsilon^{*}&amp;lt;/tex&amp;gt;, и &amp;lt;tex&amp;gt;\varepsilon'^{*} \leqslant \varepsilon_{i}^{*} = -\mu_{i}^{*} \leqslant \left(1-\dfrac{1}{V}\right)\varepsilon^{*}&amp;lt;/tex&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''&amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-фиксированным''' (англ. ''&amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-fixed'') будем называть ребро, поток через которое неизменен для любых &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-оптимальных потоков в сети.}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|id=theorem1&lt;br /&gt;
|statement=Пусть поток &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-оптимальным с функцией потенциалов &amp;lt;tex&amp;gt;\varphi&amp;lt;/tex&amp;gt;. Также пусть для некоторого ребра &amp;lt;tex&amp;gt;uv \; \left|p_{\varphi}(uv)\right| \geqslant 2V\varepsilon&amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-фиксировано.&lt;br /&gt;
|proof=&lt;br /&gt;
:По свойству антисимметричности, достаточно будет доказать теорему для случая &amp;lt;tex&amp;gt;p_{\varphi}(uv) \geqslant 2V\varepsilon&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:Рассмотрим такой поток &amp;lt;tex&amp;gt;f'&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;f'(uv) \neq f(uv)&amp;lt;/tex&amp;gt;. Поскольку &amp;lt;tex&amp;gt;p_{\varphi}(uv) \geqslant 2V\varepsilon &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;, поток по ребру &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt; должен быть как можно меньше, то есть &amp;lt;tex&amp;gt;f(uv) = -c(uv)&amp;lt;/tex&amp;gt;, и тогда раз &amp;lt;tex&amp;gt;f'(uv) \neq f(uv)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;f'(uv) &amp;gt; f(uv)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:Покажем теперь, что &amp;lt;tex&amp;gt;f'&amp;lt;/tex&amp;gt; не &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-оптимальный.&lt;br /&gt;
:Обозначим за &amp;lt;tex&amp;gt;G_{&amp;gt;}&amp;lt;/tex&amp;gt; подграф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; такой, что &amp;lt;tex&amp;gt;G_{&amp;gt;}=(V, \{uv \in E \;|\; f'(uv) &amp;gt; f(uv) \})&amp;lt;/tex&amp;gt;. Рассмотрим некоторое ребро &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;G_{&amp;gt;}&amp;lt;/tex&amp;gt;. Поскольку &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;f'&amp;lt;/tex&amp;gt; являются циркуляциями, в &amp;lt;tex&amp;gt;G_{&amp;gt;}&amp;lt;/tex&amp;gt; должен содержаться простой цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, проходящий через &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt;. Поскольку все ребра в &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; {{---}} остаточные, стоимость &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; не меньше &amp;lt;tex&amp;gt;p_{\varphi}(uv) - (\texttt{len}(C)-1)\varepsilon \geqslant 2V\varepsilon - (V-1)\varepsilon &amp;gt; V\varepsilon&amp;lt;/tex&amp;gt;.&lt;br /&gt;
:Теперь рассмотрим цикл &amp;lt;tex&amp;gt;\overline{C}&amp;lt;/tex&amp;gt;, который получен из &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; разворотом всех его ребер. Заметим, что &amp;lt;tex&amp;gt;\overline{C}&amp;lt;/tex&amp;gt; является циклом в &amp;lt;tex&amp;gt;G_{&amp;lt;}=(V,\{uv \in E \;|\; f'(uv) &amp;lt; f(uv)\})&amp;lt;/tex&amp;gt; и, соответственно, циклом в &amp;lt;tex&amp;gt;G_{f}&amp;lt;/tex&amp;gt;. По свойству антисимметричности, стоимость &amp;lt;tex&amp;gt;\overline{C}&amp;lt;/tex&amp;gt; меньше, чем &amp;lt;tex&amp;gt;-V\varepsilon&amp;lt;/tex&amp;gt; и, таким образом, &amp;lt;tex&amp;gt;\mu(\overline{C}) &amp;lt; -\varepsilon&amp;lt;/tex&amp;gt;. Откуда по [[#lemma3|лемме &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt;]] имеем, что &amp;lt;tex&amp;gt;f'&amp;lt;/tex&amp;gt; не &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-оптимален.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|about=доказательство оценки времени работы алгоритма в случае вещественных стоимостей&lt;br /&gt;
|statement=Пусть &amp;lt;tex&amp;gt;k=VE(\lceil \log V + 1 \rceil)&amp;lt;/tex&amp;gt;. Разобьем работу алгоритма на группы по &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; последовательных итераций. Утверждается, что каждая группа фиксирует поток на независимом ребре &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt;, то есть итерации из другой группы не меняют величину &amp;lt;tex&amp;gt;f(uv)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
:Оценка времени работы следует непосредственно из этого утверждения. &lt;br /&gt;
:Чтобы доказать его, рассмотрим некоторую группу итераций. Пусть &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} поток до первой итерации, а &amp;lt;tex&amp;gt;f'&amp;lt;/tex&amp;gt; {{---}} после последней итерации этой группы. Обозначим за &amp;lt;tex&amp;gt;\varepsilon'^{*}&amp;lt;/tex&amp;gt; минимальное &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; такое, что поток &amp;lt;tex&amp;gt;f'&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-оптимальный, а за &amp;lt;tex&amp;gt;\varphi'&amp;lt;/tex&amp;gt; {{---}} функцию потенциалов такую, что &amp;lt;tex&amp;gt;f'&amp;lt;/tex&amp;gt; удовлетворяет свойству &amp;lt;tex&amp;gt;\varepsilon'^{*}&amp;lt;/tex&amp;gt;-оптимальности. Выбор &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; и [[#lemma5|лемма &amp;lt;tex&amp;gt;5&amp;lt;/tex&amp;gt;]] дают нам следующее неравенство: &amp;lt;tex&amp;gt;\varepsilon'^{*} \leqslant \varepsilon^{*} \left(1-\dfrac{1}{V} \right)^{V(\log V + 1)} \leqslant \dfrac{\varepsilon^{*}}{2V}&amp;lt;/tex&amp;gt;. &lt;br /&gt;
:Рассмотрим цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, отмененный на первой итерации рассматриваемой группы. Поскольку средний вес цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; равен &amp;lt;tex&amp;gt;-\varepsilon^{*}&amp;lt;/tex&amp;gt; (см. [[#lemma3|лемму &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt;]]), некоторое ребро &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt; цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; должно иметь приведенную стоимость &amp;lt;tex&amp;gt;p_{\varphi'}(uv) \leqslant -\varepsilon^{*} \leqslant -2V\varepsilon'^{*}&amp;lt;/tex&amp;gt;. Таким образом, поток на ребре &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt; не изменится при итерациях, происходящих после этой группы. Таким образом, по [[#theorem1|теореме]] каждая группа фиксирует поток на независимом ребре.}}&lt;br /&gt;
&lt;br /&gt;
==Алгоритм поиска цикла минимального среднего веса==&lt;br /&gt;
===Наивный способ===&lt;br /&gt;
Устроим [[Вещественный двоичный поиск |двоичный поиск]].&lt;br /&gt;
Установим нижнюю и верхнюю границы величины среднего веса цикла &amp;lt;tex&amp;gt;l&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;r&amp;lt;/tex&amp;gt; соответственно, вычислим серединное значение &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; и отнимем полученную величину &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; от всех ребер сети. Если теперь в нашей сети есть отрицательный цикл (этот факт можно проверить при помощи [[Алгоритм Форда-Беллмана #Нахождение отрицательного цикла|алгоритма Форда-Беллмана]]), значит существует цикл с меньшим средним весом, чем &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;. Тогда продолжим поиск среди значений в диапазоне от &amp;lt;tex&amp;gt;l&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;, иначе {{---}} от &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;r&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда, если &amp;lt;tex&amp;gt;C_{max}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;C_{min}&amp;lt;/tex&amp;gt; {{---}} максимальная и минимальная возможные величины среднего веса цикла соответственно, такой алгоритм для вещественных значений весов ребер будет работать за &amp;lt;tex&amp;gt;O\left(\log \dfrac{C_{max}-C_{min}}{\varepsilon} \cdot EV\right)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; {{---}} точность выбора среднего веса цикла.&lt;br /&gt;
При этом для целочисленных значений на ребрах точность выбора величины среднего веса цикла не может превысить &amp;lt;tex&amp;gt;\dfrac{1}{V}&amp;lt;/tex&amp;gt;, что дает нам оценку &amp;lt;tex&amp;gt;O\left(\log (V(C_{max}-C_{min})) \cdot EV\right)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Псевдокод====&lt;br /&gt;
&lt;br /&gt;
  '''func''' findMinCycleBinarySearch('''int''' l, '''int''' r)&lt;br /&gt;
      &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// находим среднюю величину &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
      m = (l + r) / 2&lt;br /&gt;
      &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// вычитаем её из веса каждого ребра в сети&amp;lt;/font&amp;gt;&lt;br /&gt;
      '''for''' e '''in''' edges&lt;br /&gt;
          e.weight -= m&lt;br /&gt;
      '''while''' l &amp;gt; r - 1&lt;br /&gt;
      &amp;lt;!-----&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// добавляем мнимую вершину &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; и проводим рёбра нулевого веса в каждую вершину графа&amp;lt;/font&amp;gt;---------&amp;gt;&lt;br /&gt;
          '''if''' &amp;lt;tex&amp;gt;\exists&amp;lt;/tex&amp;gt;C : M(C) &amp;lt; 0 &amp;lt;!--- cho-t xz za4em C: mb exists? eee ugadala)0))---&amp;gt;&lt;br /&gt;
              &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// если есть отрицательный цикл, то веса циклов находятся в диапазоне &amp;lt;tex&amp;gt;[l;m]&amp;lt;/tex&amp;gt;&lt;br /&gt;
              // рассмотрим этот промежуток&amp;lt;/font&amp;gt;&lt;br /&gt;
              findMinCycleBinarySearch (l, m)&lt;br /&gt;
          '''else'''&lt;br /&gt;
              &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// иначе запускаем двоичный поиск на отрезке &amp;lt;tex&amp;gt;[m;r]&amp;lt;/tex&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
              findMinCycleBinarySearch (m, r)&lt;br /&gt;
&lt;br /&gt;
===Продвинутый алгоритм===&lt;br /&gt;
Добавим к нашему графу вершину &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; и рёбра из неё во все остальные вершины.&lt;br /&gt;
Запустим [[алгоритм Форда-Беллмана]] и попросим его построить нам квадратную матрицу со следующим условием: &amp;lt;tex&amp;gt;d[i][u]&amp;lt;/tex&amp;gt; {{---}} длина минимального пути от &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; ровно из &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; ребер.&lt;br /&gt;
Тогда длина оптимального цикла &amp;lt;tex&amp;gt;\mu^{*}&amp;lt;/tex&amp;gt; минимального среднего веса вычисляется как &amp;lt;tex&amp;gt;\min\limits_{u} {\max\limits_{k} {\dfrac{d[n][u]-d[k][u]}{n-k}}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Достаточно будет доказать это правило для &amp;lt;tex&amp;gt;\mu^{*}=0&amp;lt;/tex&amp;gt;, так как для других &amp;lt;tex&amp;gt;\mu^{*}&amp;lt;/tex&amp;gt; можно просто отнять эту величину от всех ребер и получить снова случай с &amp;lt;tex&amp;gt;\mu^{*}=0&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Чтобы найти цикл после построения матрицы &amp;lt;tex&amp;gt;d[k][u]&amp;lt;/tex&amp;gt;, запомним, при каких &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; достигается оптимальное значение &amp;lt;tex&amp;gt;\mu^{*}&amp;lt;/tex&amp;gt;, и, используя &amp;lt;tex&amp;gt;d[n][u]&amp;lt;/tex&amp;gt;, поднимемся по указателям предков. Как только мы попадем в уже посещенную вершину {{---}} мы нашли цикл минимального среднего веса.&lt;br /&gt;
&lt;br /&gt;
Этот алгоритм работает за &amp;lt;tex&amp;gt;O(VE)&amp;lt;/tex&amp;gt; &amp;lt;ref&amp;gt;[[Алгоритм Форда-Беллмана #Сложность| Сложность алгоритма Форда-Беллмана]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Псевдокод====&lt;br /&gt;
  '''func''' findMinCycle('''Graph''' G)&lt;br /&gt;
      &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// вводим мнимую вершину &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;, от которой проведём рёбра нулевого веса в каждую вершину графа&amp;lt;/font&amp;gt;&lt;br /&gt;
      '''Node''' s&lt;br /&gt;
      '''Edge[]''' e&lt;br /&gt;
      insert(s)   &lt;br /&gt;
      i = 0                                      &lt;br /&gt;
      '''for''' u '''in''' G&lt;br /&gt;
          e[i].begin = s&lt;br /&gt;
          e[i].end = u&lt;br /&gt;
          e[i].weight = 0&lt;br /&gt;
          i++&lt;br /&gt;
      &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// строим матрицу кратчайших расстояний, запустив алгоритм Форда-Беллмана из вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
      fordBellman(s)&lt;br /&gt;
      &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; {{---}} длина оптимального цикла&amp;lt;/font&amp;gt;&lt;br /&gt;
      m = &amp;lt;tex&amp;gt;\min\limits_{u} {\max\limits_{k} }&amp;lt;/tex&amp;gt;((d[n][u] - d[k][u]) / (n - k))&lt;br /&gt;
      &amp;lt;!-----&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// запомнив значения &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, дающих оптимальный результат, найдём цикл&amp;lt;/font&amp;gt;---------&amp;gt;&lt;br /&gt;
      &amp;lt;!----чуть не забыла про отступы, дура тупая-----&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
* [[Использование потенциалов Джонсона при поиске потока минимальной стоимости]]&lt;br /&gt;
* [[Сведение задачи о назначениях к задаче о потоке минимальной стоимости]]&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
* [https://youtu.be/bykbw7HovSo?t=4287 Лекция 14 | Дополнительные главы алгоритмов | Андрей Станкевич | CSC | Лекториум]&lt;br /&gt;
* [http://sirius.cs.put.poznan.pl/~inf84789/acm/p873-goldberg.pdf A.V.Goldberg and R.E.Tarjan {{---}} Finding Minimum-Cost Circulations by Cancelling Negative Cycles (Journal of the Association for Computing Machinery. Vol. 36, No. 4. October 1989. pp. 873-886.)]&lt;br /&gt;
*[https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-854j-advanced-algorithms-fall-2008/lecture-notes/lec4.pdf Lecture by M.X.Goemans on Goldberg-Tarjan Min-Cost Circulation Algorithm]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория:Задача о потоке минимальной стоимости]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BC%D0%B5%D0%B6%D0%BD%D1%8B%D0%B5_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B&amp;diff=83489</id>
		<title>Смежные классы</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BC%D0%B5%D0%B6%D0%BD%D1%8B%D0%B5_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B&amp;diff=83489"/>
				<updated>2022-09-01T05:02:16Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Смежные классы ==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Левым смежным классом [[группа|группы]] &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по множеству &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; назовем множество вида &amp;lt;tex&amp;gt;aH=\lbrace a\cdot x\vert x\in H\rbrace\subseteq G&amp;lt;/tex&amp;gt;&lt;br /&gt;
Аналогично определяется и правый смежный класс &amp;lt;tex&amp;gt;Ha&amp;lt;/tex&amp;gt;. Для определенности далее рассматриваем только левые смежные классы, все результаты непосредственно переносятся и на правые.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|id=th10&lt;br /&gt;
|statement= &lt;br /&gt;
Левые смежные классы &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по [[Подгруппа|подгруппе]] &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; либо не пересекаются, либо совпадают.&lt;br /&gt;
|proof=&lt;br /&gt;
Достаточно доказать, что если классы пересекаются, то они совпадают. Рассмотрим два класса &amp;lt;tex&amp;gt;aH&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;bH&amp;lt;/tex&amp;gt; с общим элементом &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt;. Докажем, что &amp;lt;tex&amp;gt;aH\subseteq bH&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;g=a\cdot h,\,h\in H&amp;lt;/tex&amp;gt; принадлежит &amp;lt;tex&amp;gt;aH&amp;lt;/tex&amp;gt;. Известно: &amp;lt;tex&amp;gt;c=a\cdot h_a=b\cdot h_b,\,h_a,h_b\in H\, \Rightarrow a=b\cdot h_b\cdot h_a^{-1}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;g=a\cdot h=b\cdot h_b\cdot h_a^{-1}\cdot h \in bH&amp;lt;/tex&amp;gt;, поскольку &amp;lt;tex&amp;gt;h_b\cdot h_a^{-1}\cdot h\in H&amp;lt;/tex&amp;gt;. Значит, &amp;lt;tex&amp;gt;aH\subseteq bH&amp;lt;/tex&amp;gt;. Аналогично &amp;lt;tex&amp;gt;bH\subseteq aH&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория групп]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%9C%D0%B0%D1%80%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D1%85_%D1%86%D0%B5%D0%BF%D0%B5%D0%B9&amp;diff=83488</id>
		<title>Примеры использования Марковских цепей</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%9C%D0%B0%D1%80%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D1%85_%D1%86%D0%B5%D0%BF%D0%B5%D0%B9&amp;diff=83488"/>
				<updated>2022-09-01T05:02:10Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Обозначения ==&lt;br /&gt;
&lt;br /&gt;
Предположим, что проводится серия экспериментов с возможными исходами &amp;lt;tex&amp;gt;s_1,s_2,s_3,\ldots s_n&amp;lt;/tex&amp;gt;. Назовём эти исходы '''состояниями'''. &lt;br /&gt;
*&amp;lt;tex&amp;gt;p_i^{(0)}  &amp;lt;/tex&amp;gt; — вероятность того, что мы начинаем в состоянии &amp;lt;tex&amp;gt;s_i&amp;lt;/tex&amp;gt;;&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{ij} &amp;lt;/tex&amp;gt; —    вероятность того, что в результате эксперимента состояние было изменено от состояния &amp;lt;tex&amp;gt;s_i&amp;lt;/tex&amp;gt; к состоянию &amp;lt;tex&amp;gt;s_j&amp;lt;/tex&amp;gt;; &lt;br /&gt;
Если &amp;lt;tex&amp;gt;p_i^{(1)}&amp;lt;/tex&amp;gt; вероятность того, что исходом эксперимента будет состояние &amp;lt;tex&amp;gt;s_i&amp;lt;/tex&amp;gt;. Тогда&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_i^{(1)} = p_1^{(0)}p_{1i} + p_2^{(0)}p_{2i} + p_3^{(0)}p_{3i} + \ldots +p_n^{(0)}p_{ni}&amp;lt;/tex&amp;gt; . &amp;lt;tex&amp;gt; (*) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Это означает, что вероятность исхода в состоянии &amp;lt;tex&amp;gt;s_i&amp;lt;/tex&amp;gt; равна сумме вероятностей начать эксперимент в некотором другом состоянии и окончить в &amp;lt;tex&amp;gt;s_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Также заметим, что:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{j1}+p_{j2}+p_{j3}+ \ldots +p_{jn} = 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
*Матрица &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; называется матрицей перехода. В общем случае она имеет вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\begin{bmatrix}&lt;br /&gt;
p_{11} &amp;amp; p_{12} &amp;amp; p_{13} &amp;amp; \ldots &amp;amp; p_{1n} \\&lt;br /&gt;
p_{21} &amp;amp; p_{22} &amp;amp; p_{23} &amp;amp; \ldots &amp;amp; p_{2n} \\&lt;br /&gt;
p_{31} &amp;amp; p_{32} &amp;amp; p_{33} &amp;amp; \ldots &amp;amp; p_{3n} \\&lt;br /&gt;
p_{41} &amp;amp; p_{42} &amp;amp; p_{43} &amp;amp; \ldots &amp;amp; p_{4n} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp; \vdots \\&lt;br /&gt;
&lt;br /&gt;
p_{n1} &amp;amp; p_{n2} &amp;amp; p_{n3} &amp;amp; \ldots &amp;amp; p_{nn} \\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\end{bmatrix}&lt;br /&gt;
&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пусть  &lt;br /&gt;
&amp;lt;tex&amp;gt; p^{(0)}=&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;(p_1^{(0)},p_2^{(0)},p_3^{(0)},\ldots ,p_n^{(0)})&amp;lt;/tex&amp;gt; и &lt;br /&gt;
&amp;lt;tex&amp;gt; p^{(1)}=&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;(p_1^{(1)},p_2^{(1)},p_3^{(1)},\ldots,p_n^{(1)}),&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда &lt;br /&gt;
&amp;lt;tex&amp;gt; (p_1^{(1)},p_2^{(1)},p_3^{(1)} \ldots ,p_n^{(1)})=&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;(p_1^{(0)},p_2^{(0)},p_3^{(0)} \ldots ,p_n^{(0)})&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\begin{bmatrix}&lt;br /&gt;
p_{11} &amp;amp; p_{12} &amp;amp; p_{13} &amp;amp; \ldots &amp;amp; p_{1n} \\&lt;br /&gt;
p_{21} &amp;amp; p_{22} &amp;amp; p_{23} &amp;amp; \ldots &amp;amp; p_{2n} \\&lt;br /&gt;
p_{31} &amp;amp; p_{32} &amp;amp; p_{33} &amp;amp; \ldots &amp;amp; p_{3n} \\&lt;br /&gt;
p_{41} &amp;amp; p_{42} &amp;amp; p_{43} &amp;amp; \ldots &amp;amp; p_{4n} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp;  \vdots\\&lt;br /&gt;
p_{n1} &amp;amp; p_{n2} &amp;amp; p_{n3} &amp;amp; \ldots &amp;amp; p_{nn} \\&lt;br /&gt;
\end{bmatrix}&lt;br /&gt;
&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Использование матриц приводит к более компактной записи условий. По своей сути, перемножение строки &amp;lt;tex&amp;gt; p_i^{(0)} &amp;lt;/tex&amp;gt; с матрицей &amp;lt;tex&amp;gt; T &amp;lt;/tex&amp;gt; эквивалентно уравнению &amp;lt;tex&amp;gt;  (*)  &amp;lt;/tex&amp;gt;, рассмотренному ранее.&lt;br /&gt;
&lt;br /&gt;
== Прогноз погоды ==&lt;br /&gt;
=== Условие ===&lt;br /&gt;
Погода классифицируется в прогнозах как ясная, умеренно пасмурная и пасмурная. &lt;br /&gt;
&lt;br /&gt;
#Если погода ясная, то вероятность, что она будет ясной на следующий день, составляет &amp;lt;tex&amp;gt;0.5&amp;lt;/tex&amp;gt;; вероятность, что она будет умеренно пасмурной, равна &amp;lt;tex&amp;gt;0.4&amp;lt;/tex&amp;gt;; а вероятность пасмурной погоды на следующий день составляет &amp;lt;tex&amp;gt;0.1&amp;lt;/tex&amp;gt;. &lt;br /&gt;
#Если погода умеренно пасмурная, то вероятность, что на следующий день она будет ясной, равна &amp;lt;tex&amp;gt;0.3&amp;lt;/tex&amp;gt;; вероятность, что погода останется умеренно пасмурной, равна &amp;lt;tex&amp;gt;0.5&amp;lt;/tex&amp;gt;; а вероятность пасмурной погоды на следующий день составляет &amp;lt;tex&amp;gt;0.2&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Если же погода пасмурная, то вероятность, что она будет ясной на следующий день составляет &amp;lt;tex&amp;gt;0.2&amp;lt;/tex&amp;gt;; вероятность что она станет умеренно пасмурной, равна &amp;lt;tex&amp;gt;0.4&amp;lt;/tex&amp;gt;; вероятность что на следующий день она останется пасмурной, равна &amp;lt;tex&amp;gt;0.4&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вопрос 1 : Если вероятность ясной погоды в воскресенье равна &amp;lt;tex&amp;gt;0.6&amp;lt;/tex&amp;gt;, а вероятность умеренно пасмурной — &amp;lt;tex&amp;gt;0.4&amp;lt;/tex&amp;gt;, то какова вероятность, что погода в понедельник будет ясной?&lt;br /&gt;
&lt;br /&gt;
Вопрос 2 : Какова вероятность, что во вторник погода будет умеренно пасмурной?&lt;br /&gt;
&lt;br /&gt;
=== Решение ===&lt;br /&gt;
&lt;br /&gt;
Если порядок, в котором перечисляются погодные условия, таков: ясно, умеренно пасмурно и &lt;br /&gt;
пасмурно, то:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p^{(0)} =&amp;lt;/tex&amp;gt;  &amp;lt;tex&amp;gt;(0.6,0.4,0)&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
T = \begin{bmatrix}&lt;br /&gt;
0.5 &amp;amp; 0.4 &amp;amp; 0.1 \\&lt;br /&gt;
0.3 &amp;amp; 0.5 &amp;amp; 0.2 \\&lt;br /&gt;
0.2 &amp;amp; 0.4 &amp;amp; 0.4&lt;br /&gt;
\end{bmatrix}&lt;br /&gt;
&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Следовательно,&lt;br /&gt;
&amp;lt;tex&amp;gt;p^{(1)} = &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;(0.6,0.4,0) \times&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\begin{bmatrix}&lt;br /&gt;
0.5 &amp;amp; 0.4 &amp;amp; 0.1 \\&lt;br /&gt;
0.3 &amp;amp; 0.5 &amp;amp; 0.2 \\&lt;br /&gt;
0.2 &amp;amp; 0.4 &amp;amp; 0.4&lt;br /&gt;
\end{bmatrix}&lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt; = &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;(0.42,0.44,0.14)&amp;lt;/tex&amp;gt; &lt;br /&gt;
и вероятность, что в понедельник будет ясная погода, равна &amp;lt;tex&amp;gt;0.42&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1^{(2)} &amp;lt;/tex&amp;gt; — вероятность того, что во вторник будет ясная погода,   &amp;lt;tex&amp;gt;p_2^{(2)} &amp;lt;/tex&amp;gt; —  вероятность того, что во вторник будет умеренно пасмурно и &amp;lt;tex&amp;gt;p_3^{(2)} &amp;lt;/tex&amp;gt; — вероятность того, что во вторник будет пасмурно.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p^{(2)} = &amp;lt;/tex&amp;gt;  &amp;lt;tex&amp;gt;  (p_1^{(2)},p_2^{(2)},p_3^{(2)})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда&lt;br /&gt;
&amp;lt;tex&amp;gt;p^{(2)} = &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt; (0.42,0.44,0.14) \times&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\begin{bmatrix}&lt;br /&gt;
0.5 &amp;amp; 0.4 &amp;amp; 0.1 \\&lt;br /&gt;
0.3 &amp;amp; 0.5 &amp;amp; 0.2 \\&lt;br /&gt;
0.2 &amp;amp; 0.4 &amp;amp; 0.4&lt;br /&gt;
\end{bmatrix}&lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt; = &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;(0.37,0.444,0.186)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Следовательно, вероятность того, что во вторник будет умеренно пасмурная погода равна &amp;lt;tex&amp;gt;0.444&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_i^{(m)} &amp;lt;/tex&amp;gt; —  вероятность, что исходом m-го проведения эксперимента будет состояние &amp;lt;tex&amp;gt;s_i&amp;lt;/tex&amp;gt; и &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p^{(m)} =&amp;lt;/tex&amp;gt;  &amp;lt;tex&amp;gt;(p_1^{(m)},p_2^{(m)},p_3^{(m)},\ldots,p_n^{(m)}).&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|id=идентификатор (необязательно), пример: th1.  &lt;br /&gt;
&lt;br /&gt;
|statement=Для любого положительного целого числа &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; выполняется &amp;lt;tex&amp;gt;p^{(m)} =&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;p^{(0)} \times T^{(m)}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=Докажем теорему, используя индукцию. Было показано (в примере про погоду), что для &amp;lt;tex&amp;gt; m = 1 &amp;lt;/tex&amp;gt; утверждение справедливо. Предположим, что оно справедливо для &amp;lt;tex&amp;gt;n=k&amp;lt;/tex&amp;gt; , так что &amp;lt;tex&amp;gt;p^{(k)} =&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;p^{(0)} \times T^{(k)}.&amp;lt;/tex&amp;gt;Поскольку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_j^{(k+1)} = &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;p_1^{(k)}p_{1j} +&amp;lt;/tex&amp;gt;  &amp;lt;tex&amp;gt;p_2^{(k)}p_{2j} +&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;p_3^{(k)}p_{3j} +&amp;lt;/tex&amp;gt;  &amp;lt;tex&amp;gt;p_n^{(k)}p_{nj} &amp;lt;/tex&amp;gt; &lt;br /&gt;
, то&lt;br /&gt;
&amp;lt;tex&amp;gt;p^{(k+1)} = &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;p^{(k)} T =&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;p^{(0)} T^k T =&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;p^{(0)} T^{k+1}.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Оценка будущих продаж ==&lt;br /&gt;
&lt;br /&gt;
[[Марковская цепь|Цепи Маркова]] также применяются при оценке будущих продаж. Например, сделав опрос среди покупателей той или иной марки автомобиля о их следующем выборе, можно составить матрицу &amp;lt;tex&amp;gt; T &amp;lt;/tex&amp;gt;. &lt;br /&gt;
=== Условие ===&lt;br /&gt;
В процессе опроса владельцев автомобилей трех американских марок: марки &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, марки &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, марки &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, им был задан вопрос о том, какую торговую марку они бы выбрали для следующей покупки.&lt;br /&gt;
&lt;br /&gt;
#Среди владельцев автомобилей марки &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;20 \%&amp;lt;/tex&amp;gt; сказали что выберут опять эту же марку, &amp;lt;tex&amp;gt;50 \%&amp;lt;/tex&amp;gt; сказали, что они бы перешли на марку &amp;lt;tex&amp;gt;B \%&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;30 \%&amp;lt;/tex&amp;gt; заявили, что предпочли бы марку &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;. &lt;br /&gt;
#Среди владельцев автомобилей марки &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;20 \%&amp;lt;/tex&amp;gt; сказали, что перейдут на марку &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, в то время как &amp;lt;tex&amp;gt;70 \%&amp;lt;/tex&amp;gt; заявили, что приобрели бы опять автомобиль марки &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;10 \%&amp;lt;/tex&amp;gt; заявили, что в следующий раз предпочли бы марку &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;. &lt;br /&gt;
#Среди владельцев автомобилей &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;30 \%&amp;lt;/tex&amp;gt; ответили, что перешли бы на марку &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;30 \%&amp;lt;/tex&amp;gt; сказали, что перешли бы на марку &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;40 \%&amp;lt;/tex&amp;gt; заявили, что остались бы верны той же марке &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Вопрос 1 :  Если некто приобрел автомобиль марки &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, то какова вероятность, что его второй машиной будет автомобиль марки &amp;lt;tex&amp;gt;C ?&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Вопрос 2 :  Если при покупке первой машины покупатель подбросил монету, выбирая между автомобилями марки &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, то какова вероятность, что его третьей машиной станет автомобиль марки &amp;lt;tex&amp;gt;B ?&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Решение ===&lt;br /&gt;
&lt;br /&gt;
Матрица перехода для этого события имеет вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\begin{bmatrix}&lt;br /&gt;
0.2 &amp;amp; 0.5 &amp;amp; 0.3 \\&lt;br /&gt;
0.2 &amp;amp; 0.7 &amp;amp; 0.1 \\&lt;br /&gt;
0.3 &amp;amp; 0.3 &amp;amp; 0.4&lt;br /&gt;
\end{bmatrix}&lt;br /&gt;
&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для ответа на первый вопрос имеем: &amp;lt;tex&amp;gt;p^{(0)} =&amp;lt;/tex&amp;gt;  &amp;lt;tex&amp;gt;(1,0,0)&amp;lt;/tex&amp;gt; , поэтому &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p^{(1)} = &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;(1,0,0) \times&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\begin{bmatrix}&lt;br /&gt;
0.2 &amp;amp; 0.5 &amp;amp; 0.3 \\&lt;br /&gt;
0.2 &amp;amp; 0.7 &amp;amp; 0.1 \\&lt;br /&gt;
0.3 &amp;amp; 0.3 &amp;amp; 0.4&lt;br /&gt;
\end{bmatrix}&lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt; = &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;(0.2,0.5,0.3)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Вероятность того, что вторая машина будет марки &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, равна &amp;lt;tex&amp;gt;0.3&amp;lt;/tex&amp;gt;. Для ответа на второй вопрос требуется найти &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T^{(2)} = &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\begin{bmatrix}&lt;br /&gt;
0.23 &amp;amp; 0.54 &amp;amp; 0.23 \\&lt;br /&gt;
0.21 &amp;amp; 0.62 &amp;amp; 0.17 \\&lt;br /&gt;
0.24 &amp;amp; 0.48 &amp;amp; 0.28&lt;br /&gt;
\end{bmatrix}&lt;br /&gt;
&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для &amp;lt;tex&amp;gt;(2)&amp;lt;/tex&amp;gt; имеем &amp;lt;tex&amp;gt;p^{(2)} = &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt; (0,0.5,0.5) &amp;lt;/tex&amp;gt; и&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p^{(2)} = &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;(0,0.5,0.5) \times&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\begin{bmatrix}&lt;br /&gt;
0.23 &amp;amp; 0.54 &amp;amp; 0.23 \\&lt;br /&gt;
0.21 &amp;amp; 0.62 &amp;amp; 0.17 \\&lt;br /&gt;
0.24 &amp;amp; 0.48 &amp;amp; 0.28&lt;br /&gt;
\end{bmatrix}&lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt; = &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;(0.225,0.55,0.225)&amp;lt;/tex&amp;gt;&lt;br /&gt;
поэтому вероятность того, что второй автомобиль будет марки &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; равна &amp;lt;tex&amp;gt;0.225&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==См. также== &lt;br /&gt;
*[[Марковская цепь]]&lt;br /&gt;
*[[Эргодическая марковская цепь]]&lt;br /&gt;
*[[Регулярная марковская цепь]]&lt;br /&gt;
*[[Фундаментальная матрица]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* ''Марков А. А.'', Распространение закона больших чисел на величины, зависящие друг от друга. — Известия физико-математического общества при Казанском университете. — 2-я серия. — Том 15. (1906) — С. 135—156.&lt;br /&gt;
* ''Kemeny J. G., Snell J. L.'', Finite Markov chains. — The University Series in Undergraduate Mathematics. — Princeton: Van Nostrand, 1960 (перевод: ''Кемени Дж. Дж., Снелл Дж. Л.'' Конечные цепи Маркова. — М.: Наука. 1970. — 272 с.)&lt;br /&gt;
&lt;br /&gt;
[[Категория:Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория:Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория:Марковские цепи ]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%94%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D1%8B_%D0%AD%D0%B4%D0%BC%D0%BE%D0%BD%D0%B4%D1%81%D0%B0-%D0%9B%D0%BE%D1%83%D0%BB%D0%B5%D1%80%D0%B0&amp;diff=83487</id>
		<title>Доказательство теоремы Эдмондса-Лоулера</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%94%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D1%8B_%D0%AD%D0%B4%D0%BC%D0%BE%D0%BD%D0%B4%D1%81%D0%B0-%D0%9B%D0%BE%D1%83%D0%BB%D0%B5%D1%80%D0%B0&amp;diff=83487"/>
				<updated>2022-09-01T05:02:04Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=&lt;br /&gt;
Эдмондса - Лоулера&lt;br /&gt;
|statement= Пусть &amp;lt;tex&amp;gt;M_1=\langle X, I_1\rangle&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;M_2=\langle X, I_2\rangle&amp;lt;/tex&amp;gt; — матроиды. Тогда &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;\max\limits_{I \in I_1 \cap I_2 } |I| = \min\limits_{A \subseteq X} \left(r_1(A) + r_2(X \setminus A)\right)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Где &amp;lt;tex&amp;gt;r_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;r_2&amp;lt;/tex&amp;gt; — ранговые функции в первом и втором матроиде соответственно.&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Неравенство &amp;lt;tex&amp;gt;\max\limits_{I \in I_1 \cap I_2 } |I| \le \min\limits_{A \subseteq X} r_1(A) + r_2(X \setminus A)&amp;lt;/tex&amp;gt; доказывается [[Теорема Эдмондса - Лоулера, формулировка, док-во в простую сторону|здесь]]. &lt;br /&gt;
&lt;br /&gt;
Конструктивно построим &amp;lt;tex&amp;gt;\forall M_1, M_2&amp;lt;/tex&amp;gt; такие &amp;lt;tex&amp;gt;I \in I_1 \cap I_2&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A \subseteq X&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;|I| = r_1(A) + r_2(X \setminus A)&amp;lt;/tex&amp;gt;. Этого будет достаточно для доказательства теоремы.&lt;br /&gt;
&lt;br /&gt;
Обозначим &amp;lt;tex&amp;gt;S = \left\{x|I \cup \{x\} \in I_1\right\}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;T = \left\{x|I \cup \{x\} \in I_2\right\}&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;S \cap T \ne \varnothing&amp;lt;/tex&amp;gt;, добавим их пересечение в &amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|about=1&lt;br /&gt;
|statement = &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; — независимое множество в матроиде &amp;lt;tex&amp;gt;M=\langle X, I\rangle&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;B \subset X&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;|B|=|A|&amp;lt;/tex&amp;gt; и в подграфе графа замен &amp;lt;tex&amp;gt;G_M&amp;lt;/tex&amp;gt;, индуцированном &amp;lt;tex&amp;gt;A \oplus B&amp;lt;/tex&amp;gt;, существует единственное полное паросочетание. Тогда &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; — независимое в матроиде &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof= &lt;br /&gt;
[[Файл:El_lemma2.png|thumb|right|Граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
Обозначим граф (неориентированный), индуцированный &amp;lt;tex&amp;gt;A \oplus B&amp;lt;/tex&amp;gt; за &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Обозначим вершины из &amp;lt;tex&amp;gt;A \setminus B&amp;lt;/tex&amp;gt; за &amp;lt;tex&amp;gt;y_i&amp;lt;/tex&amp;gt;, из &amp;lt;tex&amp;gt;B \setminus A&amp;lt;/tex&amp;gt; за &amp;lt;tex&amp;gt;z_i&amp;lt;/tex&amp;gt;. Перенумеруем вершины так, чтобы рёбра из паросочетания соединяли вершины с одинаковыми индексами, и &amp;lt;tex&amp;gt;\forall i,j: i &amp;lt; j&amp;lt;/tex&amp;gt; не существовало бы ребра между вершинами &amp;lt;tex&amp;gt;y_i&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;z_j&amp;lt;/tex&amp;gt; (возможность первого следует из существования полного паросочетания, второго — из его единственности). &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; — не независимо, значит, &amp;lt;tex&amp;gt;\exists&amp;lt;/tex&amp;gt; цикл &amp;lt;tex&amp;gt;C \subset B&amp;lt;/tex&amp;gt;. Обозначим &amp;lt;tex&amp;gt;i = \min k: z_k \in C&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\forall j &amp;gt; i \quad y_iz_j \notin G(A) \Rightarrow A \setminus y_i \cup z_j \notin I \Rightarrow C \setminus z_i \subseteq \langle A \setminus y_i \rangle&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; — цикл, то &amp;lt;tex&amp;gt;C \subseteq \langle C \setminus z_i \rangle \subseteq \langle A \setminus y_i \rangle&amp;lt;/tex&amp;gt;. Это означает, что &amp;lt;tex&amp;gt;z_i \in \langle A \setminus y_i \rangle&amp;lt;/tex&amp;gt;, и, следовательно, &amp;lt;tex&amp;gt; A \setminus y_i \cup z_i \notin I&amp;lt;/tex&amp;gt;, что приводит к противоречию с существованием ребра &amp;lt;tex&amp;gt;y_i z_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Построим [[Граф замен для двух матроидов|граф замен]] &amp;lt;tex&amp;gt;G_I&amp;lt;/tex&amp;gt;. Добавим вершину &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt;, не влияющую на независимость в первом матроиде — из неё будут вести рёбра во все вершины множества &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — кратчайший путь из &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; — путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; с добавленным в начало ребром из &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt;. По лемме 1 и [[Лемма о единственном паросочетании в подграфе замен, индуцированном кратчайшим путем|лемме о единственном паросочетании]] &amp;lt;tex&amp;gt;I \oplus p_1 \in I_2&amp;lt;/tex&amp;gt;. Теперь добавим вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, не влияющую на независимость во втором матроиде — в неё будут вести рёбра из всех вершин множества &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; (путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; с добавленным ребром в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;) — кратчайший путь из &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Аналогично, &amp;lt;tex&amp;gt;I \oplus p_2 \in I_1&amp;lt;/tex&amp;gt;. Отсюда следует, что &amp;lt;tex&amp;gt;I \oplus p \in I_1 \cap I_2&amp;lt;/tex&amp;gt;, причём &amp;lt;tex&amp;gt;|I \oplus p| = |I| + 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Будем таким образом увеличивать &amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt;, пока существует путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;. Рассмотрим момент, когда такого пути не нашлось.&lt;br /&gt;
Введём обозначение: &amp;lt;tex&amp;gt;A = \{u|u \rightsquigarrow T\}&amp;lt;/tex&amp;gt;. Докажем, что &amp;lt;tex&amp;gt;r_1(A) = |I \cap A|&amp;lt;/tex&amp;gt; от противного.&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;r_1(A) &amp;gt; |I \cap A|&amp;lt;/tex&amp;gt;, тогда существует &amp;lt;tex&amp;gt;z \in A \setminus (I \cap A)&amp;lt;/tex&amp;gt;, такое, что &amp;lt;tex&amp;gt;(I \cap A) \cup \{z\} \in I_1&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;I \cup \{z\} \in I_1&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;z \in S&amp;lt;/tex&amp;gt; и из &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; есть путь в &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Значит, &amp;lt;tex&amp;gt;I \cup \{z\} \notin I_1&amp;lt;/tex&amp;gt;. Отсюда следует, что существует &amp;lt;tex&amp;gt;y \in I \setminus A&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;I \setminus \{y\} \cup \{z\} \in I_1&amp;lt;/tex&amp;gt;. Но тогда ребро &amp;lt;tex&amp;gt;yz&amp;lt;/tex&amp;gt; имеется в графе, что противоречит отсутствию пути из &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Следовательно, &amp;lt;tex&amp;gt;r_1(A) = |I \cap A|&amp;lt;/tex&amp;gt;. Аналогично, &amp;lt;tex&amp;gt;r_2(\overline A) = |I \cap \overline A|&amp;lt;/tex&amp;gt;. Отсюда &amp;lt;tex&amp;gt;r_1(A) + r_2(\overline A) = |I|&amp;lt;/tex&amp;gt;, то есть при найденных &amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; достигается равенство.&lt;br /&gt;
&lt;br /&gt;
Построен пример равенства, значит, теорема доказана. &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9B%D1%83%D0%B7%D0%B8%D0%BD%D0%B0-%D0%94%D0%B0%D0%BD%D0%B6%D1%83%D0%B0&amp;diff=83486</id>
		<title>Теорема Лузина-Данжуа</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9B%D1%83%D0%B7%D0%B8%D0%BD%D0%B0-%D0%94%D0%B0%D0%BD%D0%B6%D1%83%D0%B0&amp;diff=83486"/>
				<updated>2022-09-01T05:01:59Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[L_2-теория рядов Фурье|&amp;lt;&amp;lt;]][[Теорема Джексона|&amp;gt;&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Рассмотрим произвольный тригонометрический ряд:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \frac{a_0}{2} + \sum\limits_{n=1}^{\infty} (a_n \cos nx + b_n \sin nx) &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; |a_n \cos nx + b_n \sin nx| \le |a_n| + |b_n| &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt; \sum\limits_{n=1}^{\infty} (|a_n| + |b_n|) &amp;lt;/tex&amp;gt; сходится, то тригонометрический ряд будет абсолютно сходящимся. &lt;br /&gt;
&lt;br /&gt;
Обратное в общем случае неверно, тригонометрический ряд может абсолютно сходиться в бесконечном числе точек, но при этом числовой будет расходиться.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим, например, &amp;lt;tex&amp;gt; \sum\limits_{n=1}^{\infty} \sin (n! x), x_k = \frac{\pi}{k!} &amp;lt;/tex&amp;gt;, тогда при &amp;lt;tex&amp;gt; n \ge k: \sin(n! x_k) = \sin(\pi n (n - 1) \dots (k + 1)) = 0 &amp;lt;/tex&amp;gt;, то есть, ряд абсолютно сходится. Однако, &amp;lt;tex&amp;gt; b_{n!} = 1 &amp;lt;/tex&amp;gt;, и ряд из коэффициентов расходится.&lt;br /&gt;
&lt;br /&gt;
Однако, есть важная теорема:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; a_n \cos nx + b_n \sin nx = \sqrt{a_n^2 + b_n^2} \cos (nx + \varphi_n) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \sqrt{a_n^2 + b_n^2} \le |a_n| + |b_n| \le  \sqrt 2 \sqrt{a_n^2 + b_n^2} &amp;lt;/tex&amp;gt;, следовательно, ряды &amp;lt;tex&amp;gt; \sum\limits_1^{\infty} (|a_n| + |b_n|) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \sum\limits_1^{\infty} \sqrt{a_n^2 + b_n^2}) &amp;lt;/tex&amp;gt; равносходятся.&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=&lt;br /&gt;
Лузин, Данжуа&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть тригонометрический ряд абсолютно сходится на множестве положительной меры. Тогда ряд из &amp;lt;tex&amp;gt; r_n = \sqrt{a_n^2 + b_n^2} &amp;lt;/tex&amp;gt; сходится, следовательно, исходный тригонометрический ряд будет абсолютно сходящимся на всей числовой оси.&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt; \sum\limits_{n=1}^{\infty} r_n |\cos (nx + \varphi_n)| &amp;lt;/tex&amp;gt; — сходится для любого &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; по условию теоремы, где &amp;lt;tex&amp;gt; \lambda A &amp;gt; 0 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; \alpha(x) = \sum\limits_{n=1}^{\infty} r_n \cos^2(nx + \varphi_n) &amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt; \alpha(x) &amp;lt;/tex&amp;gt; измерима и конечна на &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt;, так как &amp;lt;tex&amp;gt; r_n \cos^2(nx + \varphi_n) \le r_n |\cos(nx + \varphi_n)| &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt; \exists A_0 \subset A: \lambda A_0 &amp;gt; 0, \alpha(x) &amp;lt;/tex&amp;gt; — ограничена на &amp;lt;tex&amp;gt; A_0 &amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt; A = \bigcup\limits_{n = 1}^{\infty} A(0 \le \alpha(x) \le n), \lambda A &amp;gt; 0 \Rightarrow \lambda A_n \to \lambda A \Rightarrow \exists n_0 : \lambda A_{n_0} &amp;gt; 0 &amp;lt;/tex&amp;gt;, обозначим такой &amp;lt;tex&amp;gt;A_{n_0} &amp;lt;/tex&amp;gt; за &amp;lt;tex&amp;gt; A_0 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt; A_0 &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt; \alpha &amp;lt;/tex&amp;gt; — суммируема, по [[Классические теоремы о предельном переходе под знаком интеграла Лебега#Теорема Леви|теореме Б. Леви]], ряд можно почленно интегрировать. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \int\limits_{A_0} \alpha(x) dx = \sum\limits_{n=1}^{\infty} r_n \int\limits_{A_0} \cos^2(nx + \varphi_{n, x}) =  \sum\limits_{n=1}^{\infty} r_n \int\limits_{A_0} \frac{1 + \cos(2nx + 2\varphi_{n, x})}{2} =  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; = \sum\limits_{n=1}^{\infty} \frac12 r_n \left( \lambda A_0 + \int\limits_{A_0} \cos(2\varphi_{n,x}) \cos (2nx) - \int\limits_{A_0} \sin(2\varphi_{n,x}) \sin (2nx) \right) &amp;lt;/tex&amp;gt;. Оба интеграла стремятся к нулю по лемме Римана-Лебега, следовательно, разность этих интегралов с некоторого номера больше &amp;lt;tex&amp;gt; -\frac12 \lambda A_0 &amp;lt;/tex&amp;gt; , а значит, &amp;lt;tex&amp;gt; n &amp;lt;/tex&amp;gt;-е слагаемое ряда больше &amp;lt;tex&amp;gt; \frac12 r_n \frac12 \lambda A_0 &amp;lt;/tex&amp;gt;. Значит, из сходимости исходного ряда по признаку сравнения следует сходимость &amp;lt;tex&amp;gt; \sum\limits_{n=1}^{\infty} r_n &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Таким образом, отождествили сходимость рядов &amp;lt;tex&amp;gt; \sum\limits_{n=1}^{\infty} (a_n \cos nx + b_n \sin nx) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \sum\limits_{n=1}^{\infty} (|a_n| + |b_n|) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Запишем условие абсолютной сходимости на языке наилучших приближений.&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt; f \in L_2, \sum\limits_{n=1}^{\infty} \frac{E_n(f)_{L_2}}{\sqrt n} &amp;lt; + \infty &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда ряд Фурье абсолютно сходится.&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt; E_n^2(f)_2 = \pi \sum\limits_{k=n+1}^{\infty} (a_k^2 (f) + b_k^2 (f)) &amp;lt;/tex&amp;gt;. Для абсолютной сходимости достаточно доказать, что &amp;lt;tex&amp;gt; \sum\limits_{k=1}^{\infty} \sqrt{a_k^2 + b_k^2} &amp;lt; + \infty &amp;lt;/tex&amp;gt; в условиях теоремы.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\sum\limits_{k=1}^{\infty} \sqrt{a_k^2 + b_k^2} =&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt; \sum\limits_{n=1}^{\infty} \sum\limits_{k = n}^{\infty} \frac{\sqrt{a_k^2 (f) + b_k^2 (f)}}{k} \le &amp;lt;/tex&amp;gt; (используем [[Неравенства Гёльдера, Минковского#Теорема Гёльдера|неравенство Коши для сумм]])&lt;br /&gt;
&amp;lt;tex&amp;gt; \le \sum\limits_{n=1}^{\infty} \left( \sum\limits_{k=n}^{\infty}(a_k^2 + b_k^2) \right)^{\frac12} \left( \sum\limits_{k=n}^{\infty}  \frac1{k^2} \right)^{\frac12} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \left( \sum\limits_{k=n}^{\infty}(a_k^2 + b_k^2) \right)^{\frac12} &amp;lt;/tex&amp;gt; равно &amp;lt;tex&amp;gt; E_{n-1}(f)_2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \left( \sum\limits_{k=n}^{\infty}  \frac1{k^2} \right)^{\frac12} \le \left( \sum\limits_{k=n}^{\infty} \frac1{k}\frac1{k-1} \right)^{\frac12} \le \left( \sum\limits_{k=n}^{\infty} \frac1{k-1} - \frac1k \right)^{\frac12} \le \frac{1}{\sqrt{n-1}} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, получили, что &amp;lt;tex&amp;gt;\sum\limits_{k=1}^{\infty} \sqrt{a_k^2 + b_k^2} \le \sqrt{a_1^2 + b_1^2} + \sum\limits_{n=2}^{\infty} \frac{cE_{n-1}(f)_{L_2}}{\sqrt{n-1}} &amp;lt; + \infty &amp;lt;/tex&amp;gt;, таким образом, ряд из &amp;lt;tex&amp;gt; r_n &amp;lt;/tex&amp;gt; сходится.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Denjoy%E2%80%93Luzin_theorem Denjoy-Luzin_theorem]&lt;br /&gt;
&lt;br /&gt;
[[L_2-теория рядов Фурье|&amp;lt;&amp;lt;]][[Теорема Джексона|&amp;gt;&amp;gt;]]&lt;br /&gt;
[[Категория:Математический анализ 2 курс]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%B0_%D0%AF%D0%BA%D0%BE%D0%B1%D0%B8&amp;diff=83485</id>
		<title>Алгоритм вычисления символа Якоби</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%B0_%D0%AF%D0%BA%D0%BE%D0%B1%D0%B8&amp;diff=83485"/>
				<updated>2022-09-01T05:01:52Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{В разработке}}&lt;br /&gt;
&lt;br /&gt;
Для вычисления символа Якоби &amp;lt;tex&amp;gt;\left(\cfrac{a}{n}\right)&amp;lt;/tex&amp;gt; эффективно использовать следующий алгоритм:&lt;br /&gt;
&lt;br /&gt;
#Если &amp;lt;tex&amp;gt;a&amp;lt;0&amp;lt;/tex&amp;gt;, то применяя утверждения [[Символ Якоби и его свойства#proposal2|2]] и [[Символ Якоби и его свойства#proposal5|5]], получаем &amp;lt;tex&amp;gt;\left(\cfrac{a}{n}\right)=\left(\cfrac{-a}{n}\right)\times(-1)^{\frac{n-1}{2}}&amp;lt;/tex&amp;gt;. Вычисляем &amp;lt;tex&amp;gt;\left(\cfrac{-a}{n}\right)&amp;lt;/tex&amp;gt; и пропускаем последующие пункты.&lt;br /&gt;
#Если &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; четно, то применяя утверждения [[Символ Якоби и его свойства#proposal2|2]] и [[Символ Якоби и его свойства#proposal6|6]], получаем &amp;lt;tex&amp;gt;\left(\cfrac{a}{n}\right)=\left(\cfrac{a/2}{n}\right)\times(-1)^{\frac{n^2-1}{8}}&amp;lt;/tex&amp;gt;. Вычисляем &amp;lt;tex&amp;gt;\left(\cfrac{a/2}{n}\right)&amp;lt;/tex&amp;gt; и пропускаем последующие пункты.&lt;br /&gt;
#Если &amp;lt;tex&amp;gt;a=1&amp;lt;/tex&amp;gt;, то применяя утверждение [[Символ Якоби и его свойства#proposal5|5]] &amp;lt;tex&amp;gt;\left(\cfrac{a}{n}\right)=1&amp;lt;/tex&amp;gt;, вычисление закончилось.&lt;br /&gt;
#Если &amp;lt;tex&amp;gt;a&amp;lt;n&amp;lt;/tex&amp;gt;, то применяя [[Обобщенный квадратичный закон взаимности#th2|теорему 2]] получаем &amp;lt;tex&amp;gt;\left(\cfrac{a}{n}\right)=(-1)^{\frac{a-1}{2}\frac{n-1}{2}}\left(\cfrac{n}{a}\right)&amp;lt;/tex&amp;gt;. Вычисляем &amp;lt;tex&amp;gt;\left(\cfrac{n}{a}\right)&amp;lt;/tex&amp;gt; и пропускаем последующие пункты.&lt;br /&gt;
#&amp;lt;tex&amp;gt;\left(\cfrac{a}{n}\right)=\left(\cfrac{a\mod n}{n}\right)&amp;lt;/tex&amp;gt;. Вычисляем &amp;lt;tex&amp;gt;\left(\cfrac{a\mod n}{n}\right)&amp;lt;/tex&amp;gt;. Пирменяем алгоритм для каждого символа Якоби, который необходимо вычислить.&lt;br /&gt;
[[Категория: Теория чисел]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B0%D1%81%D0%BA%D1%80%D0%B0%D1%81%D0%BA%D0%B0_%D0%B3%D1%80%D0%B0%D1%84%D0%B0&amp;diff=83484</id>
		<title>Раскраска графа</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B0%D1%81%D0%BA%D1%80%D0%B0%D1%81%D0%BA%D0%B0_%D0%B3%D1%80%D0%B0%D1%84%D0%B0&amp;diff=83484"/>
				<updated>2022-09-01T05:01:47Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition= '''Правильной раскраской''' (англ. ''Regular coloring'') графа &amp;lt;tex&amp;gt;G(V,E)&amp;lt;/tex&amp;gt; называется такое отображение &amp;lt;tex&amp;gt;\varphi&amp;lt;/tex&amp;gt; из множества вершин &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; в множество красок &amp;lt;tex&amp;gt;\{c_1 \ldots c_t\}&amp;lt;/tex&amp;gt;, что для любых двух смежных вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; выполняется &amp;lt;tex&amp;gt;\varphi(u)\ne\varphi(v)&amp;lt;/tex&amp;gt;. Так же её называют '''&amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;-раскраской'''.&lt;br /&gt;
}}&lt;br /&gt;
[[Файл:Paint.png|200px|thumb|center|Пример раскраски графа из четырех вершин.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Раскраской графа чаще всего называют именно правильную раскраску.&lt;br /&gt;
&lt;br /&gt;
Первоначально раскраски графов были нужны для составления географических карт&amp;lt;ref name=&amp;quot;4problem&amp;quot;&amp;gt; [http://ru.wikipedia.org/wiki/Проблема_четырёх_красок Проблема четырёх красок]&amp;lt;/ref&amp;gt;. Сегодня же они (в частности раскраска с использованием минимального количества цветов) используются, например, для составления расписаний, распределения регистров в микропроцессорах, распараллеливания численных методов.&amp;lt;ref name=&amp;quot;pract&amp;quot;&amp;gt;[http://ru.wikipedia.org/wiki/Практическое_применение_раскраски_графов Практическое применение раскраски графов]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Хроматические числа различных графов==&lt;br /&gt;
{{Определение&lt;br /&gt;
|id= chromatic_number_difinition &lt;br /&gt;
|definition= '''Хроматическим числом''' (англ. ''Chromatic number'') &amp;lt;tex&amp;gt;\chi(G)&amp;lt;/tex&amp;gt; графа &amp;lt;tex&amp;gt;G(V,E)&amp;lt;/tex&amp;gt; называется такое минимальное число &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, для которого существует &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;-раскраска графа.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;-хроматические графы {{---}} это нулевые(не имеющие ребер) графы и только они. &amp;lt;tex&amp;gt;\chi(O_{n}) = 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;\chi(K_{n}) = n&amp;lt;/tex&amp;gt; {{---}} хроматическое число полного графа равно &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;\chi(C_{n}) = &lt;br /&gt;
   \begin{cases}&lt;br /&gt;
     2\text{, if $n$ is even;}\\&lt;br /&gt;
     3\text{, if $n$ is odd.}&lt;br /&gt;
   \end{cases}&lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;G = (V, E)&amp;lt;/tex&amp;gt; {{---}} двудольный граф, тогда &amp;lt;tex&amp;gt;\chi(G) = 2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задача о нахождении &amp;lt;tex&amp;gt;\chi(G)&amp;lt;/tex&amp;gt; [[NP-полнота_задачи_о_раскраске_графа | не разрешима за полиномиальное время]].&lt;br /&gt;
&lt;br /&gt;
==Хроматический многочлен==&lt;br /&gt;
{{main|Хроматический многочлен}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Хроматический многочлен''' (англ. ''Chromatic polynomial'') &amp;lt;tex&amp;gt;P(G, t)&amp;lt;/tex&amp;gt; {{---}} число способов раскрасить граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; цветов.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Связь хроматического числа и хроматического многочлена==&lt;br /&gt;
*Минимальное натуральное число, на котором хроматический многочлен для данного графа принимает натуральное значение, является хроматическим числом для данного графа. Поэтому если известен хроматический многочлен, то хроматическое число можно определить последовательной подстановкой. Однако задача о нахождении хроматического многочлена также не разрешима за полиномиальное время.&lt;br /&gt;
*В обратную сторону, т.е. если известно хроматическое число, построить хроматический многочлен не получится. Так как оно не дает почти никакой информации о структуре графа.&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
* Асанов М. О., Баранский В. А., Расин В. В. {{---}} Дискретная математика: Графы, матроиды, алгоритмы. '''ISBN 978-5-8114-1068-2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
* Харари Ф. {{---}} Теория графов. '''ISBN 978-5-397-00622-4'''&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Раскраски графов]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=1wisumwi(ci_-_pi_-ri)&amp;diff=83483</id>
		<title>1wisumwi(ci - pi -ri)</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=1wisumwi(ci_-_pi_-ri)&amp;diff=83483"/>
				<updated>2022-09-01T05:01:40Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9D%D0%B5%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C_%D0%B8%D0%B3%D1%80%D1%8B_Braid&amp;diff=83482</id>
		<title>Неразрешимость игры Braid</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9D%D0%B5%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C_%D0%B8%D0%B3%D1%80%D1%8B_Braid&amp;diff=83482"/>
				<updated>2022-09-01T05:01:33Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Игра '''Braid''' — изданный в 2008 году платформер-головоломка, основным элементом которого является способность главного героя поворачивать время вспять.&lt;br /&gt;
&lt;br /&gt;
==Игровые объекты==&lt;br /&gt;
&lt;br /&gt;
: '''Тим''' (англ. ''Tim'') — главный герой игры. Возвышение перед ним иллюстрирует максимальную высоту его прыжка. На возвышении находится часть паззла. Цель игры — заполучить ее.&lt;br /&gt;
: '''Монстр''' (англ. ''monstar''). Ходит по прямой линии, падает с возвышений, разворачивается, когда сталкивается с препятствием. Если Тим приземлится монстру на голову, то монстр погибнет, а Тим подскочит выше, чем при своем обычном прыжке. Лобовое столкновение с монстром для Тима смертельно.&lt;br /&gt;
&lt;br /&gt;
: '''Рычаг''' (англ. ''lever'') и '''платформа''' (англ. ''platform''). Подъем платформы контролируется нажатием рычага. Платформу можно установить таким образом, чтобы она поднималась при нажатии рычага и падала, столкнувшись с другим объектом.&lt;br /&gt;
: '''Односторонние поверхности''' (англ. ''one-way surfaces'') позволяют проходить сквозь них в одну сторону, но не пускают обратно. На иллюстрации Тим может запрыгнуть на поверхность (2), но не сможет спуститься вниз. Монстр пройдет из области (1) в область (2), но не пройдет назад.&lt;br /&gt;
&lt;br /&gt;
: '''Пушка''' (англ. ''cannon''). С некоторой периодичностью пушка стреляет определенными игровыми объектами (монстрами, кроликами, огненными шарами или облаками).&lt;br /&gt;
: '''Кролик''' (англ. ''bunny''). Монстр убивает кролика, сталкиваясь с ним. Это может быть использовано, чтобы отделить одного монстра от группы монстров.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto;&amp;quot;&lt;br /&gt;
| [[Файл:Tim.png|200px|thumb|right| Тим и часть паззла]]&lt;br /&gt;
| [[Файл:Monstar.png|200px|thumb|right| Монстр]]&lt;br /&gt;
| [[Файл:Oneway.png|200px|thumb|right| Односторонние поверхности]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto;&amp;quot;&lt;br /&gt;
| [[Файл:Platform.png|200px|thumb|right| Платформа с рычагом]] &lt;br /&gt;
| [[Файл:Cannon.png|200px|thumb|right| Пушка]]&lt;br /&gt;
| [[Файл:Bunny.png|80px|thumb|right| Кролик]]&lt;br /&gt;
|}&lt;br /&gt;
==Перемотка времени==&lt;br /&gt;
Игрок может зажимать определенную клавишу, чтобы отматывать время назад, чтобы исправить соверешенную ошибку или даже отменить смерть персонажа. Обычно эта механика упрощает прохождение игроку, но никак не влияет на вычислимость игры. Однако, в Braid некоторые объекты существуют вне времени и на них не действует перемотка. Например, вневременной кролик продолжит прыгать вперед, даже когда весь мир возвращается назад во времени. На таких объектах основывается большинство уникальных головоломок в Braid. После отмотки времени назад Тим может промотать его снова вперед, аналогично командам ''undo'' и ''redo'' в различных редакторах. Как и с командами ''undo'' и ''redo'', совершение каких-либо действий после отмотки времени назад не позволит промотать его вперед.&lt;br /&gt;
&lt;br /&gt;
==Неразрешимость==&lt;br /&gt;
&lt;br /&gt;
Опишем проблему останова в игре Braid следующим образом. Пусть на вход подается уровень, содержащий вышеперечисленные игровые объекты. Требуется определить, возможно ли пройти этот уровень, то есть взять в определенной локации на уровне часть паззла и дойти до выхода с уровня. При этом мы считаем, что игрок двигается оптимально: из входа в очередную комнату к выходу из нее, а если встречает монстра, то прыгает на него и таким образом не может погибнуть.&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Проблема останова игры Braid неразрешима.&lt;br /&gt;
|proof = &lt;br /&gt;
&lt;br /&gt;
Если по Braid возможно построить [[Машина Тьюринга|машину Тьюринга]], то проблема останова игры неразрешима. Следовательно, необходимо описать процесс построения МТ в игре Braid. Построим [[Счетчиковые машины, эквивалентность двухсчетчиковой машины МТ|счетчиковую машину]], эквивалентную МТ. Подаваемая на вход программа будет содержать следующие операции:&lt;br /&gt;
# Прибавить: увеличивает на 1 значение выбранного счетчика.&lt;br /&gt;
# Вычесть и перейти: сравнивает с нулем значение выбранного счетчика. Если оно больше нуля, из него вычитается единица; если равно нулю, происходит переход на указанную строку в программе.&lt;br /&gt;
# Остановиться.&lt;br /&gt;
&lt;br /&gt;
В нашей машине счетчиками будут являться группы монстров. ''Программа'' будет выполняться Тимом: чтобы пройти уровень, ему нужно нажать на каждый рычаг на своем пути. Каждый рычаг выполняет либо операцию ''добавить'', либо ''вычесть и перейти''. Чтобы допустить переходы (''goto''), некоторые участки пути могут вести к более ранним местам на этом пути.&lt;br /&gt;
&lt;br /&gt;
Для это нам понадобится соорудить из простых игровых объектов служащие нашим целям '''устройства''' (англ. ''gadgets'').&lt;br /&gt;
&lt;br /&gt;
===Устройства===&lt;br /&gt;
====Устройство '''нажатия рычага'''====&lt;br /&gt;
[[Файл:Pull.png|300px|thumb|right| Устройство нажатия рычага]]&lt;br /&gt;
Заставляет Тима нажать на рычаг ровно единожды. Тим начинает в точке (1). Он может только упасть вниз к точке (2) и нажать на рычаг. Когда он нажмет на рычаг, платформа под ним поднимется вместе с ним к односторонней поверхности (3) с такой скоростью, чтобы Тим не смог нажать на рычаг еще раз. Поверхность (3) не даст Тиму спуститься вниз, и ему останется лишь пройти к выходу из устройства (4). Когда платформа достигнет поверхности (3), она вернется к своему начальному состоянию, что позволяет использовать устройство столько раз, сколько потребуется. В игре один рычаг может контролировать больше одной платформы, а платформы могут контролироваться более чем одним рычагом, поэтому такое устройство позволит управлять платформами в одной точке уровня из другой точки на этом уровне.&lt;br /&gt;
====Устройство-'''перекресток'''====&lt;br /&gt;
[[Файл:Crossover.png|300px|thumb|right| Устройство-перекресток]]&lt;br /&gt;
Позволяет отправлять Тима или монстров вниз по маршрутам произвольной длины.&lt;br /&gt;
====Устройство-'''счетчик'''====&lt;br /&gt;
[[Файл:Counter.png|300px|thumb|right| Устройство-счетчик]]&lt;br /&gt;
Позволяет прибавлять или вычитать единицу. В точке (1) находится некоторое количество монстров &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} значение счетчика. Этим значением могут управлять устройства вычитания и прибавления единицы.&lt;br /&gt;
=====Устройство прибавления единицы=====&lt;br /&gt;
Пушка постоянно выстреливает новых монстров. Они отскакивают от платформы (2) и умирают на шипах. Устройство активируется, когда Тим нажимает рычаг, контролирующий платформу (2). Платформа ненадолго приподнимается, пропуская под собой одного монстра, и падает обратно. При каждой активации вышедший таким образом монстр проходит через одностороннюю поверхность (3) и оказывается заперт в участке (1), увеличивая таким образом счетчик на 1.&lt;br /&gt;
=====Устройство вычитания единицы=====&lt;br /&gt;
Пушка постоянно выстреливает новых кроликов. Как и в устройстве прибавления единицы, они отскакивают от платформы и умирают на шипах. При каждой активации платформа ненадолго сдвигается, пропуская одного кролика, который долетает до нижней границы (1) и касается ее. Если в участке (1) есть монстры, кролик погибнет от столкновения с одним из них, а тот при столкновении подскочит до верхней платформы и выйдет к участку (5). В противном случае кролик долетит до шипов (4) и погибнет там. Таким образом, при каждой активации, если значение счетчика не 0, один монстр убирается из счетчика и отправляется по определенному маршруту. Стоит заметить, что он не погибает, а идет по своему пути, что мы используем в устройстве ветвления.&lt;br /&gt;
====Устройство '''ветвления'''====&lt;br /&gt;
[[Файл:Branch.png|300px|thumb|right| Устройство ветвления]]&lt;br /&gt;
Отправляет Тима по одному из двух различных путей в зависимости от того, есть ли в устройстве монстр. Тим попадает в устройство в точке (1). Площадка и лестница (2) находятся слишком высоко, чтобы запрыгнуть на них, поэтому, если в устройстве монстра нет, Тим может только дойти до конца и выйти в точке (3). Если же монстр есть, Тим не может пройти к выходу (3), и ему остается только прыгнуть на монстра, тем самым убивая его и подскакивая выше, чем при обычном прыжке. Единственное место для этого {{---}} участок (2), и при прыжке на монстра Тим окажется на площадке без возможности спуститься вниз. Он может покинуть устройство только поднявшись по лестнице. Наличие или отсутствие монстра определяет, какой из выходов сможет использовать Тим.&lt;br /&gt;
&lt;br /&gt;
===Конструкция машины===&lt;br /&gt;
&lt;br /&gt;
Разместим три устройства-счетчика далеко друг от друга. Состоящий из устройств нажатия рычага и ветвления маршрут, который мы построим для Тима, и будет подаваемой на вход ''программой''. Например, если мы хотим прибавить 1 к счетчику №2 в начале программы, то первая комната на пути будет устройством нажатия рычага, связанным с устройством прибавления единицы во втором устройстве-счетчике. &lt;br /&gt;
&lt;br /&gt;
Аналогично, рычаг может быть связан с устройством вычитания единицы в каком-либо счетчике. Тогда при активации, если значение счетчика не равно нулю, один монстр покинет счетчик. Чтобы выполнить переход при равенстве нулю, нам нужно отправить монстра в соответствующее устройство ветвления. Для этого все монстры, покидающие счетчик, будут попадать в соответствующую ему комнату, по которой они будут ходить. В полу этой комнаты будет множество платформ, работающих в качестве люков. Отправим Тима во второе устройство нажатия рычага, которое и откроет один из люков. Построенный нами путь под этим люком будет вести в устройство ветвления. Теперь Тим отправится в это устройство, но его маршрут сделаем значительно длиннее, чтобы он не мог опередить монстра, направляющегося туда же. В зависимости от того, был ли счетчик нулевым, Тим встретит или не встретит монстра в устройстве ветвления и пойдет по определенному пути.&lt;br /&gt;
&lt;br /&gt;
Операции ''прибавить'' и ''вычесть и перейти'' описаны. Операция ''остановиться'' проста: построим комнату с частью паззла и выходом с уровня. В эту комнату будет вести выход из очередного устройства, посещенного Тимом, при этом вполне возможно, что в данной конфигурации уровня в нее нельзя будет попасть, потому что Тим всегда будет выбирать другой выход в устройстве ветвления. Тогда уровень оказывается непроходимым.&lt;br /&gt;
&lt;br /&gt;
Таким образом, определение того, возможно ли пройти данный уровень, эквивалентно проблеме останова.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== См.также ==&lt;br /&gt;
* [[Примеры неразрешимых задач: задача о выводе в полусистеме Туэ|Задача о выводе в полусистеме Туэ]]&lt;br /&gt;
* [[Примеры неразрешимых задач: задача о замощении|Задача о замощении]]&lt;br /&gt;
* [[Примеры неразрешимых задач: однозначность грамматики|Однозначность грамматики]]&lt;br /&gt;
* [[Неразрешимость задачи об эквивалентности КС-грамматик]]&lt;br /&gt;
* [[Игра «Жизнь»]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://arxiv.org/abs/1412.0784 Linus Hamilton {{---}} Braid is undecidable]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Теория вычислимости]]&lt;br /&gt;
[[Категория: Примеры неразрешимых задач]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=83481</id>
		<title>Характеристика перечислимых множеств через вычислимые функции</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=83481"/>
				<updated>2022-09-01T05:01:26Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Категория: Удалить]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D1%83%D0%BC%D0%BC%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B7%D0%BD%D0%B0%D0%BA%D0%B0&amp;diff=83480</id>
		<title>Суммируемые функции произвольного знака</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D1%83%D0%BC%D0%BC%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B7%D0%BD%D0%B0%D0%BA%D0%B0&amp;diff=83480"/>
				<updated>2022-09-01T05:01:20Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Неотрицательные суммируемые функции|&amp;lt;&amp;lt;]] [[Классические теоремы о предельном переходе под знаком интеграла Лебега|&amp;gt;&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Пусть f измерима на множестве E.&lt;br /&gt;
&lt;br /&gt;
Напомним:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \sum\limits_{n = 1}^{\infty} a_n = \sum\limits_{n = 1}^{\infty} a_n^+ - \sum\limits_{n = 1}^{\infty} a_n^- &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Интеграл распространяется так же:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; f_+(x) = \begin{cases} f(x), &amp;amp; f(x) &amp;gt; 0 \\ 0, &amp;amp; f(x) \le 0 \end{cases} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; f_-(x) = \begin{cases} 0, &amp;amp; f(x) &amp;gt; 0 \\ -f(x), &amp;amp; f(x) \le 0 \end{cases} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из измеримости &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; следует, что &amp;lt;tex&amp;gt; f_+ &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; f_- &amp;lt;/tex&amp;gt; тоже будут измеримы. Также, они неотрицательны.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; f = f_+ - f_-  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; |f| = f_+ + f_- &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \int\limits_E f_+, \int\limits_E f_-  &amp;lt;/tex&amp;gt; уже были определены нами ранее.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; '''суммируема''' на &amp;lt;tex&amp;gt; E &amp;lt;/tex&amp;gt;, если на нём суммируемы &amp;lt;tex&amp;gt; f_+ &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; f_- &amp;lt;/tex&amp;gt;.&lt;br /&gt;
В этом случае, &amp;lt;tex&amp;gt; \int\limits_E f \underset{\mathrm{def}}= \int\limits_E f_+ - \int\limits_E f_- &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Заметим, что, по линейности &amp;lt;tex&amp;gt; \int\limits_E |f| = \int\limits_E f_+ + \int\limits_E f_- &amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt; |\int\limits_E f | \le \int\limits_E f_+ + \int\limits_E f_- = \int\limits_E |f| &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt; f_{+-} \le |f| &amp;lt;/tex&amp;gt;, то из суммируемости модуля вытекает суммируемость &amp;lt;tex&amp;gt; f_+ &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; f_- &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Как следствие определения, получаем, что &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; суммируема тогда и только тогда, когда &amp;lt;tex&amp;gt; |f| &amp;lt;/tex&amp;gt; суммируема. То есть, в теории Лебега нет условно сходящихся интегралов.&lt;br /&gt;
&lt;br /&gt;
Пример: интеграл Дирихле равен &amp;lt;tex&amp;gt; \int\limits_0^{+ \infty} \frac{\sin x}{x} = \frac{\pi}2 &amp;lt;/tex&amp;gt; по Риману, но по Лебегу он не суммируем.&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt; \int\limits_E &amp;lt;/tex&amp;gt; определен линейной формулой, то на суммируемые функции произвольного знака переносятся также &amp;lt;tex&amp;gt; \sigma &amp;lt;/tex&amp;gt;-аддитивность и линейность интеграла. Достаточно их написать для &amp;lt;tex&amp;gt; f_+, f_- &amp;lt;/tex&amp;gt; и сложить. &lt;br /&gt;
&lt;br /&gt;
== Абсолютная непрерывность ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=&lt;br /&gt;
Абсолютная непрерывность&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; — суммируема на &amp;lt;tex&amp;gt; E &amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt; \forall \varepsilon &amp;gt; 0\ \exists \delta &amp;gt; 0: \mu A &amp;lt; \delta, A \subset E \Rightarrow \left| \int\limits_A f \right| &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt; \left| \int\limits_A f \right| \le \int\limits_A |f| &amp;lt;/tex&amp;gt;, то есть, достаточно рассмотреть неотрицательные функции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; — суммируема и неотрицательна. &amp;lt;tex&amp;gt; \int\limits_E f &amp;lt; + \infty &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
По определению, для любого &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt; существует хорошее &amp;lt;tex&amp;gt; e_{\varepsilon} :  \int\limits_E f - \int\limits_{e_{\varepsilon}} f &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt; \overline{e_{\varepsilon}} = E \setminus {e_{\varepsilon}} &amp;lt;/tex&amp;gt;, и по сигма-аддитивности, &amp;lt;tex&amp;gt; \int\limits_E = \int\limits_{e_{\varepsilon}} + \int\limits_{\overline{e_{\varepsilon}}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \mu e_{\varepsilon} &amp;lt; + \infty &amp;lt;/tex&amp;gt; (так как &amp;lt;tex&amp;gt; e_\varepsilon&amp;lt;/tex&amp;gt; — хорошее).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; |f(x)| \le M_{\varepsilon} &amp;lt;/tex&amp;gt; (так как f ограничена).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall B \subset E, \mu B &amp;lt; \infty  &amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; B = B \cap E = B \cap ({e_{\varepsilon}} \cup \overline e_{\varepsilon}) = (B \cap {e_{\varepsilon}}) \cup (B \cap \overline e_{\varepsilon}) = B_1 \cup B_2 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \int\limits_B f = \int\limits_{B_1} f + \int\limits_{B_2} f \le \int\limits_{B_1} M_\varepsilon d \mu + \int\limits_{\overline e_\varepsilon} f \le M_\varepsilon \mu B_1 + \varepsilon \le M_\varepsilon \mu B + \varepsilon&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак &amp;lt;tex&amp;gt; \forall B \subset E, \mu B &amp;lt; + \infty &amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt; \int\limits_B f \le M_{\varepsilon} \mu B + \varepsilon &amp;lt;/tex&amp;gt;. Потребуем, чтобы &amp;lt;tex&amp;gt; M_{\varepsilon} \mu B &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt; \mu B &amp;lt; \frac{\varepsilon}{M_{\varepsilon}} = \delta &amp;lt;/tex&amp;gt;. Тогда получается, что для таких &amp;lt;tex&amp;gt; B: \int\limits_B f &amp;lt; 2 \varepsilon &amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt; \mu B &amp;lt; \delta = \frac{\varepsilon}{M_{\varepsilon}} &amp;lt;/tex&amp;gt;. Подставляем &amp;lt;tex&amp;gt; \frac{\varepsilon}2 = \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Неотрицательные суммируемые функции|&amp;lt;&amp;lt;]] [[Классические теоремы о предельном переходе под знаком интеграла Лебега|&amp;gt;&amp;gt;]]&lt;br /&gt;
[[Категория:Математический анализ 2 курс]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%A8%D1%82%D0%BE%D1%80-%D0%92%D0%B0%D0%B3%D0%BD%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0%D1%85%D0%BE%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D0%B7%D0%B0&amp;diff=83479</id>
		<title>Алгоритм Штор-Вагнера нахождения минимального разреза</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%A8%D1%82%D0%BE%D1%80-%D0%92%D0%B0%D0%B3%D0%BD%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0%D1%85%D0%BE%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D0%B7%D0%B0&amp;diff=83479"/>
				<updated>2022-09-01T05:01:12Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Необходимые определения ==&lt;br /&gt;
&amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; - неориентированный взвешенный граф с &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; вершинами и &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; рёбрами.&lt;br /&gt;
{{Определение |definition=&lt;br /&gt;
'''Разрезом''' называется такое разбиение множества &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; на два подмножества &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
* &amp;lt;tex&amp;gt;A, B \subset V&amp;lt;/tex&amp;gt;;&lt;br /&gt;
* &amp;lt;tex&amp;gt;A, B \neq \emptyset&amp;lt;/tex&amp;gt;;&lt;br /&gt;
* &amp;lt;tex&amp;gt;A \cap B = \emptyset&amp;lt;/tex&amp;gt;;&lt;br /&gt;
* &amp;lt;tex&amp;gt;A \cup B = V&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение |definition=&lt;br /&gt;
'''Весом разреза''' называется сумма весов рёбер, проходящих через разрез, т.е. таких рёбер, один конец которых принадлежит &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, а второй конец - &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* &amp;lt;tex&amp;gt;w(A, B) =&amp;lt;/tex&amp;gt; &amp;lt;tex dpi = &amp;quot;140&amp;quot;&amp;gt;\sum\limits_{uv \in E, u \in A, v \in B} w(u, v)&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Эту задачу называют &amp;quot;глобальным минимальным разрезом&amp;quot;. Глобальный минимальный разрез равен минимуму среди разрезов минимальной стоимости по всевозможным парам исток-сток. Хотя эту задачу можно решить с помощью любого алгоритма нахождения максимального потока (запуская его &amp;lt;tex&amp;gt;O(n^2)&amp;lt;/tex&amp;gt; раз для всевозможных пар истока и стока), однако ниже описан гораздо более простой и быстрый алгоритм, предложенный Матильдой Штор (Mechthild Stoer) и Франком Вагнером (Frank Wagner) в 1994 г.&lt;br /&gt;
&lt;br /&gt;
В общем случае допускаются петли и кратные рёбра, все кратные рёбра можно заменить одним ребром с их суммарным весом а петли не влияют на решение. Поэтому будем считать, что кратных рёбер и петель во входном графе нет.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм == &lt;br /&gt;
Идея алгоритма довольно проста. Будем &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; раз повторять следующий процесс: находить минимальный разрез между какой-нибудь парой вершин &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, а затем объединять эти две вершины в одну (создавать новую вершину, список смежности которой равен объединению списков смежности &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;). В конце концов, после &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; итерации, останется одна вершина. После этого ответом будет являться минимальный среди всех &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; найденных разрезов. Действительно, на каждой &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ой стадии найденный минимальный разрез &amp;lt;tex&amp;gt;\langle A,B \rangle&amp;lt;/tex&amp;gt; между вершинами &amp;lt;tex&amp;gt;s_i&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;t_i&amp;lt;/tex&amp;gt; либо окажется искомым глобальным минимальным разрезом, либо же, напротив, вершины &amp;lt;tex&amp;gt;s_i&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;t_i&amp;lt;/tex&amp;gt; невыгодно относить к разным множествам, поэтому мы ничего не ухудшаем, объединяя эти две вершины в одну.&lt;br /&gt;
&lt;br /&gt;
Следовательно нам необходимо для данного графа найти минимальный разрез между какой-нибудь парой вершин &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;. Для этого вводим некоторое множество вершин &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, которое изначально содержит единственную произвольную вершину &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. На каждом шаге находится вершина, наиболее сильно связанная с множеством &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, т.е. вершина &amp;lt;tex&amp;gt;v \not\in A&amp;lt;/tex&amp;gt;, для которой следующая величина &amp;lt;tex dpi = &amp;quot;140&amp;quot;&amp;gt;w(v,A) = \sum\limits_{(v,u) \in E, \atop u \in A} w(v,u)&amp;lt;/tex&amp;gt; максимальна (максимальна сумма весов рёбер, один конец которых &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, а другой принадлежит &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;). Этот процесс завершится, когда все вершины перейдут в множество &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 minCut(граф G):&lt;br /&gt;
   v[i] - список вершин, которые были сжаты в i-тую (сначала заполняется i);&lt;br /&gt;
   for i = 1..n-1&lt;br /&gt;
     A = Ø;&lt;br /&gt;
     fill(w, 0);&lt;br /&gt;
     for j = 1..n-1&lt;br /&gt;
       s = {s &amp;lt;tex&amp;gt;\in&amp;lt;/tex&amp;gt; V | s &amp;lt;tex&amp;gt;\notin&amp;lt;/tex&amp;gt; A, w[s] - max};&lt;br /&gt;
       if (j != n-1)&lt;br /&gt;
         A += s;&lt;br /&gt;
         пересчитываем связность w[i] для остальных вершин; &lt;br /&gt;
         prev = s;&lt;br /&gt;
       else&lt;br /&gt;
         if (w[s] &amp;lt; minCost)&lt;br /&gt;
           minCost = w[s];&lt;br /&gt;
           minCut = v[s];&lt;br /&gt;
         s' = s &amp;lt;tex&amp;gt;\cup&amp;lt;/tex&amp;gt; prev;&lt;br /&gt;
   return minCut - список вершин в минимальном разрезе;&lt;br /&gt;
&lt;br /&gt;
== Корректность алгоритма ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если добавить в множество &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; по очереди все вершины, каждый раз добавляя вершину, наиболее сильно связанную с &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, то пусть предпоследняя добавленная вершина {{---}} &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;, а последняя {{---}} &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;. Тогда минимальный &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;-&amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; разрез состоит из единственной вершины {{---}} &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим произвольный &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;-&amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; разрез &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; и покажем, что его вес не может быть меньше веса разреза, состоящего из единственной вершины &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
: &amp;lt;tex dpi = '130'&amp;gt;w (\{t\}) \le w (C)&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; - вершина, которую мы хотим добавить в &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;A_v&amp;lt;/tex&amp;gt; - состояние множества &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в этот момент. Пусть &amp;lt;tex&amp;gt;C_v&amp;lt;/tex&amp;gt; - разрез множества &amp;lt;tex&amp;gt;A_v \cup v&amp;lt;/tex&amp;gt;, индуцированный разрезом &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;. Вершина &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; - активная, если она и предыдущая добавленная вершина в &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; принадлежат разным частям разреза &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, тогда для любой такой вершины:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;tex dpi = '130'&amp;gt;w (v, A_v) \le w (C_v)&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; - активная вершина, для неё выполняется:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;tex dpi = '130'&amp;gt;w (t,A_t) \le w (C_t)&amp;lt;/tex&amp;gt; &lt;br /&gt;
: &amp;lt;tex dpi = '130'&amp;gt;w (t,A_t) = w (\{t\}), w (C_t) = w (C)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получили утверждение теоремы.&lt;br /&gt;
Для доказательства воспользуемся методом математической индукции.&lt;br /&gt;
Для первой активной вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; это неравенство верно, так как все вершины &amp;lt;tex&amp;gt;A_v&amp;lt;/tex&amp;gt; принадлежат одной части разреза, а &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; -  другой. Пусть неравенство выполнено для всех активных вершин до &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, включая &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, докажем его для следующей активной вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;tex dpi = '130'&amp;gt; w (u,A_u) \equiv w (u,A_v) + w (u,A_u \setminus A_v)&amp;lt;/tex&amp;gt; (*)&lt;br /&gt;
&lt;br /&gt;
Заметим, что &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;tex dpi = '130'&amp;gt;w (u,A_v) \le w (v,A_v)&amp;lt;/tex&amp;gt; (**)&lt;br /&gt;
&lt;br /&gt;
вершина &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; имела большее значение &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;, чем &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, так как была добавлена в &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; раньше.&lt;br /&gt;
По предположению индукции:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;tex dpi = '130'&amp;gt;w (v,A_v) \le w (C_v)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следовательно из (**):&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;tex dpi = '130'&amp;gt;w(u,A_v) \le w(C_v)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А из (*) имеем:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;tex dpi = '130'&amp;gt;w (u,A_u) \le w (C_v) + w (u,A_u \setminus A_v)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A_u \setminus A_v&amp;lt;/tex&amp;gt; находятся в разных частях разреза &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, значит &amp;lt;tex&amp;gt;w (u,A_u \setminus A_v)&amp;lt;/tex&amp;gt; равна сумме весов рёбер, которые не входят в &amp;lt;tex&amp;gt;C_v&amp;lt;/tex&amp;gt;, но входят в &amp;lt;tex&amp;gt;C_u&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;tex dpi = '130'&amp;gt;w (u,A_u) \le w (C_v) + w (u,A_u \setminus A_v) \le w (C_u)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Что и требовалось доказать.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Асимптотика ==&lt;br /&gt;
#Нахождение вершины с наибольшей &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt; за &amp;lt;tex&amp;gt;O (n)&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; фаза по &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; итерации в каждой. В итоге имеем &amp;lt;tex&amp;gt;O (n^3)&amp;lt;/tex&amp;gt;&lt;br /&gt;
#Если использовать фибоначчиевы кучи для нахождения вершины с наибольшей &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;, то асимптотика составит &amp;lt;tex&amp;gt;O (nm + n^2 \log n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
#Если использовать двоичные кучи, то асимптотика составит &amp;lt;tex&amp;gt;O (nm \log n + n^2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
Нахождение разреза минимальной стоимости является основой в одном из методов сегментации изображений (сегментацией изображения называется разбиение его на некоторые области, непохожие по некоторому признаку). &lt;br /&gt;
&lt;br /&gt;
Изображение представляется в виде взвешенного графа, вершинами которого являются точки изображения (как правило, пиксели, но, возможно, и большие области, от этого зависит качество сегментации, а также скорость её построения). Вес ребра представляет отражает &amp;quot;разницу&amp;quot; между точками (расстояние в некоторой метрике). Разбиение изображения на однородные области сводится к задаче поиска минимального разреза в графе. Специально для такого рода задач был предложен метод нахождения разреза минимальной стоимости [https://www.google.ru/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CDQQFjAB&amp;amp;url=http%3A%2F%2Fwww.cs.berkeley.edu%2F~malik%2Fpapers%2FSM-ncut.pdf&amp;amp;ei=cP2-UuqhAuSJ4gTnhYCwAg&amp;amp;usg=AFQjCNFn9GZPlFjDUgDofCScu6Wm47qMWQ&amp;amp;sig2=Yufd8LreEQKHe3NGnFVm7A&amp;amp;bvm=bv.58187178,d.bGE&amp;amp;cad=rjt Normalized Cut (J. Shi, J. Malik (1997))]&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
* [http://e-maxx.ru/bookz/files/stoer_wagner_mincut.pdf Mechthild Stoer, Frank Wagner. A Simple Min-Cut Algorithm]&lt;br /&gt;
* [http://e-maxx.ru/algo/stoer_wagner_mincut Алгоритм Штор-Вагнера]&lt;br /&gt;
* [http://cgm.computergraphics.ru/content/view/147 Методы сегментации изображения]&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
*[[Алгоритм Каргера для нахождения минимального разреза]]&lt;br /&gt;
*[https://www.google.ru/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CDQQFjAB&amp;amp;url=http%3A%2F%2Fwww.cs.berkeley.edu%2F~malik%2Fpapers%2FSM-ncut.pdf&amp;amp;ei=cP2-UuqhAuSJ4gTnhYCwAg&amp;amp;usg=AFQjCNFn9GZPlFjDUgDofCScu6Wm47qMWQ&amp;amp;sig2=Yufd8LreEQKHe3NGnFVm7A&amp;amp;bvm=bv.58187178,d.bGE&amp;amp;cad=rjt Метод Normalized Cut]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Задача о максимальном потоке]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%B0%D0%BD%D0%B7%D0%B8%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%BC%D1%8B%D0%BA%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=83478</id>
		<title>Транзитивное замыкание</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%B0%D0%BD%D0%B7%D0%B8%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%BC%D1%8B%D0%BA%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=83478"/>
				<updated>2022-09-01T05:01:05Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Транзитивным замыканием''' (англ. ''transitive closure'') &amp;lt;tex&amp;gt;\mathrm{TrCl}(R)&amp;lt;/tex&amp;gt; отношения &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; на множестве &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; называется пересечение всех транзитивных отношений, содержащих &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; как подмножество (иначе, минимальное [[транзитивное отношение]], содержащее &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; как подмножество).}}&lt;br /&gt;
Например, если &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; {{---}} множество городов, и на них задано отношение &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt;, означающее, что если &amp;lt;tex&amp;gt;x R y&amp;lt;/tex&amp;gt;, то &amp;quot;существует автобусный маршрут из &amp;lt;tex&amp;gt; x&amp;lt;/tex&amp;gt; в  &amp;lt;tex&amp;gt; y&amp;lt;/tex&amp;gt;&amp;quot;, то транзитивным замыканием этого отношения будет отношение &amp;quot;существует возможность добраться из &amp;lt;tex&amp;gt; x&amp;lt;/tex&amp;gt; в  &amp;lt;tex&amp;gt; y&amp;lt;/tex&amp;gt;, передвигаясь на автобусах&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Существование и описание ==&lt;br /&gt;
Транзитивное замыкание существует для любого отношения. Для этого отметим, что пересечение любого множества транзитивных отношений транзитивно. Более того, обязательно существует транзитивное отношение, содержащее &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; как подмножество (например, &amp;lt;tex&amp;gt;X \times X&amp;lt;/tex&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Докажем, что &amp;lt;tex&amp;gt;R^+&amp;lt;/tex&amp;gt; является транзитивным замыканием отношения &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt;.&lt;br /&gt;
:&amp;lt;tex&amp;gt;R^+ = \bigcup\limits_{i \in \mathbb{N}} R^i&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
* &amp;lt;tex&amp;gt;R \subset R^+&amp;lt;/tex&amp;gt; по определению &amp;lt;tex&amp;gt;R^+&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R^+&amp;lt;/tex&amp;gt; транзитивно. Пусть &amp;lt;tex&amp;gt;a R^+ b&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b R^+ c&amp;lt;/tex&amp;gt;. Это значит, что существуют &amp;lt;tex&amp;gt; i, j &amp;lt;/tex&amp;gt; такие, что &amp;lt;tex&amp;gt;a R^i b&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b R^j c&amp;lt;/tex&amp;gt;. Но тогда &amp;lt;tex&amp;gt;a R^{i+j} c&amp;lt;/tex&amp;gt;, и, так как &amp;lt;tex&amp;gt;R^{i+j} \subset R^+&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;a R^+ c&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R^+&amp;lt;/tex&amp;gt; {{---}} минимальное отношение, удовлетворяющее представленным требованиям. Пусть &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; {{---}} транзитивное отношение, содержащее &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; в качестве подмножества. Покажем, что &amp;lt;tex&amp;gt;R^+ \subset T&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;R \subset T \Leftrightarrow R^i \subset T&amp;lt;/tex&amp;gt; для любого натурального &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;. Докажем это по индукции. &amp;lt;tex&amp;gt;R^1 = R \subset R^+&amp;lt;/tex&amp;gt;, как было показано выше. Пусть верно для любого &amp;lt;tex&amp;gt;i \leqslant k&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;a R^{k+1} c&amp;lt;/tex&amp;gt;. Но тогда существует &amp;lt;tex&amp;gt;b: aR^kb&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;bRc&amp;lt;/tex&amp;gt;, но &amp;lt;tex&amp;gt;R \subset T, R^k \subset T&amp;lt;/tex&amp;gt;, следовательно &amp;lt;tex&amp;gt;aTb, bTc&amp;lt;/tex&amp;gt;. Из транзитивности &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; следует, что &amp;lt;tex&amp;gt;aTc&amp;lt;/tex&amp;gt;, следовательно &amp;lt;tex&amp;gt;R^{k+1} \subset T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Построение транзитивного замыкания ==&lt;br /&gt;
Представленное доказательство указывает на способ построения транзитивного замыкания, а также позволяет определить транзитивное замыкание отношения &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; как отношение &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; такое, что &amp;lt;tex&amp;gt;aTb&amp;lt;/tex&amp;gt; тогда и только тогда, когда существуют &amp;lt;tex&amp;gt;x_1, x_2, \ldots, x_n&amp;lt;/tex&amp;gt; такие, что &amp;lt;tex&amp;gt;aRx_1, x_1Rx_2, x_2Rx_3, \ldots, x_{n-1}Rx_n, x_nRb&amp;lt;/tex&amp;gt;, то есть существует путь из вершины &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; в вершину &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; по рёбрам графа отношения.&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; {{---}} отношение на конечном множестве размера n, то транзитивным замыканием такого отношения будет отношение&lt;br /&gt;
:&amp;lt;tex&amp;gt;T = \bigcup\limits_{i = 1}^{n} R^i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Действительно, если по рёбрам графа есть путь длины &amp;lt;tex&amp;gt;l &amp;gt; n&amp;lt;/tex&amp;gt;, то он проходит по всем вершинам графа, а, значит, в этом пути есть цикл и его можно отбросить, тем самым уменьшив длину пути. Длину пути можно уменьшать до того, пока она не будет не превосходить количество вершин графа (элементов множества), а значит, все пути длины более, чем &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; можно &amp;quot;выкинуть&amp;quot; из объединения.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Для построения транзитивного замыкания отношения, заданного матрицей смежности, используется [[алгоритм Флойда — Уоршелла]].&lt;br /&gt;
&lt;br /&gt;
== Свойства транзитивного замыкания ==&lt;br /&gt;
* Транзитивное замыкание рефлексивного отношения рефлексивно, так как транзитивное отношение содержит исходное отношение&lt;br /&gt;
* Транзитивное замыкание симметричного отношения симметрично. Действительно, пусть &amp;lt;tex&amp;gt;aTb&amp;lt;/tex&amp;gt;, значит существуют &amp;lt;tex&amp;gt;x_1, x_2, \ldots, x_n&amp;lt;/tex&amp;gt; такие, что &amp;lt;tex&amp;gt;aRx_1, x_1Rx_2, \ldots, x_nRb&amp;lt;/tex&amp;gt;. Но из симметричности отношения &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt;bRx_n, x_nRx_{n-1}, \ldots, x_1Ra&amp;lt;/tex&amp;gt;, а, следовательно, &amp;lt;tex&amp;gt;bTa&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Транзитивное замыкание не сохраняет антисимметричность, например, для отношения &amp;lt;tex&amp;gt;\{(a, b), (b, c), (c, a)\}&amp;lt;/tex&amp;gt; на множестве &amp;lt;tex&amp;gt;\{a, b, c\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Транзитивное замыкание транзитивного отношения {{---}} оно само&lt;br /&gt;
&lt;br /&gt;
== Рефлексивно-транзитивное замыкание ==&lt;br /&gt;
Отношение &amp;lt;tex&amp;gt;R^* = R^+ \cup R^0&amp;lt;/tex&amp;gt;, где&lt;br /&gt;
:&amp;lt;tex&amp;gt;R^0 = \{(e, e) | e \in X\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
иногда называют рефлексивно-транзитивным замыканием, хотя часто под &amp;quot;транзитивным замыканием&amp;quot; подразумевается именно &amp;lt;tex&amp;gt;R^*&amp;lt;/tex&amp;gt;. Обычно различия между этими отношениями не являются значительными.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Транзитивное_отношение|Транзитивное отношение]]&lt;br /&gt;
* [[Алгоритм_Флойда_—_Уоршалла|Алгоритм Флойда-Уоршалла (построение транзитивного замыкания отношения)]]&lt;br /&gt;
* [[Транзитивный_остов|Транзитивный остов]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Transitive_closure Wikipedia | Transitive closure (англ.)]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Отношения ]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=QpmtnSumCi&amp;diff=83477</id>
		<title>QpmtnSumCi</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=QpmtnSumCi&amp;diff=83477"/>
				<updated>2022-09-01T05:00:55Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;200&amp;quot;&amp;gt; Q \mid pmtn \mid \sum C_i &amp;lt;/tex&amp;gt;&lt;br /&gt;
{{Задача&lt;br /&gt;
|definition=&lt;br /&gt;
Дано &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; станков с разной скоростью выполнения работ &amp;lt;tex&amp;gt;v_j&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; работ с заданным временем выполнения &amp;lt;tex&amp;gt;p_i&amp;lt;/tex&amp;gt;. Работы можно прерывать и продолжать их выполнение на другом станке. Необходимо построить такое расписание, чтобы суммарное время окончания всех работ было минимальным.&lt;br /&gt;
}}&lt;br /&gt;
== Описание алгоритма ==&lt;br /&gt;
[[Файл:QpmtnSumCi example.png|320px|thumb|right|Пример работы алгоритма]]&lt;br /&gt;
=== Идея ===&lt;br /&gt;
Для решения применим правило '''SRPT-FM''' (Shortest Remaining Processing Time on Fastest Machine), которое предлагает класть работу с наименьшим оставшемся временем обработки на самый быстрый доступный станок. Отсортируем работы по времени обработки в невозрастающем порядке так, что &amp;lt;tex&amp;gt;p_1 \geqslant p_2 \geqslant  \ldots  \geqslant p_n&amp;lt;/tex&amp;gt;. Отсортируем станки по скорости обработки в невозрастающем порядке, так чтобы &amp;lt;tex&amp;gt;v_1 \geqslant v_2 \geqslant  \ldots  \geqslant v_m&amp;lt;/tex&amp;gt;. Далее назначаем &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;-ю работу на станок &amp;lt;tex&amp;gt;M_1&amp;lt;/tex&amp;gt; (1-й по скорости станок) на время &amp;lt;tex&amp;gt;t_1 = \cfrac{p_n}{v_1}&amp;lt;/tex&amp;gt;, то есть пока она полностью не выполнится. Теперь назначим &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; работу сначала станок &amp;lt;tex&amp;gt;M_2&amp;lt;/tex&amp;gt; на время &amp;lt;tex&amp;gt;t_1&amp;lt;/tex&amp;gt;, а затем на время от &amp;lt;tex&amp;gt;t_1&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;t_2 \geqslant t_1&amp;lt;/tex&amp;gt; на станок &amp;lt;tex&amp;gt;M_1&amp;lt;/tex&amp;gt;, пока она не завершится. С &amp;lt;tex&amp;gt;n-2&amp;lt;/tex&amp;gt; работой поступаем аналогично, сначала она &amp;lt;tex&amp;gt;t_1&amp;lt;/tex&amp;gt; времени выполняется на станке &amp;lt;tex&amp;gt;M_3&amp;lt;/tex&amp;gt;, затем &amp;lt;tex&amp;gt;t_2 - t_1&amp;lt;/tex&amp;gt; времени на станке &amp;lt;tex&amp;gt;M_2&amp;lt;/tex&amp;gt;, и, начиная с &amp;lt;tex&amp;gt;t_2&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;t_3 \geqslant t_2&amp;lt;/tex&amp;gt;, на станке &amp;lt;tex&amp;gt;M_1&amp;lt;/tex&amp;gt;. Также поступаем со всеми оставшимися работами.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
Алгоритм принимает на вход два массива {{---}} массив с объемами работ и массив скоростей обработки станков, и возвращает вектор четвёрок, где первый элемент является номером станка, второй {{---}} номером работы, а два оставшихся время начала и окончания обработки этой работы на этом станке.&lt;br /&gt;
 '''function''' scheduling(p: '''int'''[n], v: '''int'''[n]) -&amp;gt; '''vector&amp;lt;int, int, int, int&amp;gt;'''&lt;br /&gt;
     '''int''' time = 0 &amp;lt;font color=green&amp;gt;// текущее время на всех станках&amp;lt;/font&amp;gt;&lt;br /&gt;
     '''vector&amp;lt;int, int, int, int&amp;gt;''' ans &amp;lt;font color=green&amp;gt; // вектор, куда будет записан ответ&amp;lt;/font&amp;gt;&lt;br /&gt;
     sort(p) &amp;lt;font color=green&amp;gt;// сортируем времена обработки работ в невозрастающем порядке&amp;lt;/font&amp;gt;&lt;br /&gt;
     sort(v) &amp;lt;font color=green&amp;gt;// сортируем скорости обработки станков в невозрастающем порядке&amp;lt;/font&amp;gt;&lt;br /&gt;
     '''while''' p[1] &amp;gt; 0&lt;br /&gt;
        Находим наибольший i такой, что p[i] &amp;gt; 0&lt;br /&gt;
        '''int''' dt = p[i] / v[1] &amp;lt;font color=green&amp;gt;// время обработки самой короткой доступной задачи на самом быстром станке&amp;lt;/font&amp;gt;&lt;br /&gt;
        '''for''' j = i '''downto''' k = max(1, i - m + 1)&lt;br /&gt;
            ans.push(1 + i - j, j, time, time + dt) &amp;lt;font color=green&amp;gt;// Назначаем на станок &amp;lt;tex&amp;gt;M_{1+i-j}&amp;lt;/tex&amp;gt; работу j на время от time до time + dt&amp;lt;/font&amp;gt;&lt;br /&gt;
            p[j] = p[j] - dt * v[1 + i - j] &amp;lt;font color=green&amp;gt;// уменьшаем количество обработки, оставшейся для j-ой работы&amp;lt;/font&amp;gt;&lt;br /&gt;
        time = time + dt &amp;lt;font color=green&amp;gt;// обновляем текущее время&amp;lt;/font&amp;gt;&lt;br /&gt;
     '''return''' ans&lt;br /&gt;
&lt;br /&gt;
=== Асимптотика ===&lt;br /&gt;
Сначала мы сортируем работы и станки, что занимает &amp;lt;tex&amp;gt; \mathcal{O}(n\log{n})&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \mathcal{O}(m\log{m})&amp;lt;/tex&amp;gt;. Так как при &amp;lt;tex&amp;gt;m \geqslant n&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;m - n&amp;lt;/tex&amp;gt; самых медленных станков можно не использовать, то в итоге сортировка займет &amp;lt;tex&amp;gt; \mathcal{O}(n\log{n})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Количество прерываний ограничено числом &amp;lt;tex&amp;gt;(m-1) \cdot n - (1 + 2 +  \ldots  + (m - 1)) = (m - 1) \cdot (n - \cfrac{m}{2})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
В итоге всё вместе составляет асимптотику алгоритма &amp;lt;tex&amp;gt; \mathcal{O}(n\log{n} + mn)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Доказательство корректности алгоритма ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Существует оптимальное расписание, в котором &amp;lt;tex&amp;gt;C_j \leqslant C_k&amp;lt;/tex&amp;gt;, когда &amp;lt;tex&amp;gt;p_j \leqslant p_k&amp;lt;/tex&amp;gt;, для всех &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим расписание &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, где для некоторых &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; верно, что &amp;lt;tex&amp;gt;C_j &amp;gt; C_k&amp;lt;/tex&amp;gt;, но &amp;lt;tex&amp;gt;p_j \leqslant p_k&amp;lt;/tex&amp;gt;. С помощью обмена частей обработки, полученной работами &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, мы можем изменить расписание &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, получив новое оптимальное расписание &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt;, где обработка работ &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; завершается во времена &amp;lt;tex&amp;gt;C'_j \leqslant C_k&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;C'_k = C_j&amp;lt;/tex&amp;gt; соответственно, при этом время завершения обработки остальных работ остается прежним. Тот факт, что в расписании &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; работа &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; заканчивается раньше &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, при этом не нарушая оптимальности расписания, свидетельствует о существовании расписания, описанного в условии леммы.&lt;br /&gt;
&lt;br /&gt;
Для построения расписания &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; из расписания &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; введем следующие обозначения:&lt;br /&gt;
* &amp;lt;tex&amp;gt;p^1_j&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;p^1_k&amp;lt;/tex&amp;gt; {{---}} количество обработки, полученной одновременно &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, когда работа &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; была на более быстром станке или обе работы были на одинаковых станках.&lt;br /&gt;
* &amp;lt;tex&amp;gt;p^2_j&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;p^2_k&amp;lt;/tex&amp;gt; {{---}} количество обработки, полученной одновременно &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, когда работа &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; была на более быстром станке.&lt;br /&gt;
* &amp;lt;tex&amp;gt;p^3_j&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;p^3_k&amp;lt;/tex&amp;gt; {{---}} количество обработки, полученной &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; до момента &amp;lt;tex&amp;gt;C_k&amp;lt;/tex&amp;gt; на непересекающихся участках времени.&lt;br /&gt;
* &amp;lt;tex&amp;gt;p^+_j&amp;lt;/tex&amp;gt; {{---}} количество обработки, полученной &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; после момента &amp;lt;tex&amp;gt;C_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Далее существуют два случая:&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;p^+_j \leqslant p^3_k&amp;lt;/tex&amp;gt;, то расписание &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; получается обменом обработки, полученной &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; после момента &amp;lt;tex&amp;gt;C_k&amp;lt;/tex&amp;gt; с частью обработки, полученной &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; не одновременно с &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;p^+_j &amp;gt; p^3_k&amp;lt;/tex&amp;gt;, то для начала обмениваем всю обработку &amp;lt;tex&amp;gt;p^3_k&amp;lt;/tex&amp;gt; с частью &amp;lt;tex&amp;gt;p^+_j&amp;lt;/tex&amp;gt;, чтобы получить новое расписание, где &amp;lt;tex&amp;gt;C'_k = C_j&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\tilde{p}^+_j = p^+_j - p^3_k&amp;lt;/tex&amp;gt; обработки &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; после момента &amp;lt;tex&amp;gt;C_k&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;p^2_j&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p^2_k&amp;lt;/tex&amp;gt; представлены числом &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; непересекающихся временных интервалов длинной &amp;lt;tex&amp;gt;t_i&amp;lt;/tex&amp;gt; с &amp;lt;tex&amp;gt;v^i_j&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;v^i_k&amp;lt;/tex&amp;gt; {{---}} скоростями станков, обрабатывающих &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; в интервал &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p^{2,i}_j = v^i_j \cdot t_i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;p^{2,i}_k = v^i_k \cdot t_i&amp;lt;/tex&amp;gt; {{---}} количество обработки, полученной соответствующей задачей за этот интервал. Так как &amp;lt;tex&amp;gt;p^1_j \geqslant p^1_k&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_j \leqslant p_k&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;p^2_j + \tilde{p}^+_j \leqslant p^2_k&amp;lt;/tex&amp;gt;. Следовательно, существует такой &amp;lt;tex&amp;gt;\tilde{p}^{+,i}_j&amp;lt;/tex&amp;gt;, что верно:&lt;br /&gt;
:&amp;lt;tex&amp;gt;\sum\limits_{i=1}^{T}{\tilde{p}^{+,i}_j} = \tilde{p}^+_j&amp;lt;/tex&amp;gt;,  &amp;lt;tex&amp;gt;p^{2,i}_j + \tilde{p}^{+,i}_j \leqslant p^{2,i}_k&amp;lt;/tex&amp;gt;,  &amp;lt;tex&amp;gt;i = 1 \ldots T&amp;lt;/tex&amp;gt;&amp;lt;br&amp;gt;Для каждого &amp;lt;tex&amp;gt;i = 1 \ldots T&amp;lt;/tex&amp;gt; пусть &amp;lt;tex&amp;gt;t^i_j = \cfrac{\tilde{p}^{+,i}_j}{v^i_k - v^i_j}&amp;lt;/tex&amp;gt;,  &amp;lt;tex&amp;gt;t^i_k = t^i_j \cdot \cfrac{v^i_j}{v^i_k}&amp;lt;/tex&amp;gt;. Чтобы получить расписание &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; для каждого из &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; интервалов нужно обменять:&lt;br /&gt;
:1) обработку, полученную в начале интервала работой &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; на более быстром станке, с обработкой &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;, полученной на медленном станке, на интервалы &amp;lt;tex&amp;gt;t^i_k&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;t^i_j&amp;lt;/tex&amp;gt; соответственно&lt;br /&gt;
:2) обработку &amp;lt;tex&amp;gt;\tilde{p}^{+,i}_j&amp;lt;/tex&amp;gt;, полученной &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; после момента &amp;lt;tex&amp;gt;C_k&amp;lt;/tex&amp;gt;, с таким же количеством обработки, полученной работой &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; на более быстром станке в этот интервал сразу после момента &amp;lt;tex&amp;gt;t^i_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Расписание, построенное по принципу '''SRPT-FM''', оптимальное для задачи &amp;lt;tex&amp;gt; Q \mid pmtn \mid \sum C_i &amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Без потери общности будем предполагать, что количество станков равно количеству работ &amp;lt;tex&amp;gt;m = n&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;m &amp;lt; n&amp;lt;/tex&amp;gt;, то добавим &amp;lt;tex&amp;gt;n - m&amp;lt;/tex&amp;gt; станков с нулевой скоростью обработки, если &amp;lt;tex&amp;gt;m &amp;gt; n&amp;lt;/tex&amp;gt;, то удалим &amp;lt;tex&amp;gt;m - n&amp;lt;/tex&amp;gt; самых медленных станков.&lt;br /&gt;
&lt;br /&gt;
Пусть у нас есть расписание, построенное по правилу '''SRPT-FM''', тогда &amp;lt;tex&amp;gt;C_{n} \leqslant C_{n-1} \leqslant  \ldots  \leqslant C_{1}&amp;lt;/tex&amp;gt;. Следовательно, верны следующие равенства:&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_1 \cdot C_n = p_n&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_2 \cdot C_n + v_1 \cdot (C_{n-1} - C_n) = p_{n-1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_3 \cdot C_n + v_2 \cdot (C_{n-1} - C_n) + v_1 \cdot (C_{n-2} - C_{n-1}) = p_{n-2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;\vdots&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_n \cdot C_n + v_{n-1} \cdot (C_{n-1} - C_n) +  \ldots  + v_1 \cdot (C_1 - C_2) = p_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
Проведем математические преобразования и получим следующие равенства:&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_1 \cdot C_n = p_n&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_2 \cdot C_n + v_1 \cdot C_{n-1} = p_n + p_{n-1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_3 \cdot C_n + v_2 \cdot C_{n-1} + v_1 \cdot C_{n-2} = p_n + p_{n-1} + p_{n-2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;\vdots&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_n \cdot C_n + v_{n-1} \cdot C_{n-1} +  \ldots  + v_1 \cdot C_1 = p_n + p_{n-1} +  \ldots  + p_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; оптимальное расписание, по предыдущей лемме верно, что &amp;lt;tex&amp;gt;C'_{n} \leqslant C'_{n-1} \leqslant  \ldots  \leqslant C'_{1}&amp;lt;/tex&amp;gt;. Самая короткая работа не может быть выполнена раньше, чем &amp;lt;tex&amp;gt;\cfrac{p_n}{v_1}&amp;lt;/tex&amp;gt;. Таким образом &amp;lt;tex&amp;gt;C'_{n} \geqslant \cfrac{p_n}{v_1}&amp;lt;/tex&amp;gt; или&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_1 \cdot C'_{n} \geqslant p_n&amp;lt;/tex&amp;gt;&lt;br /&gt;
Так как работы &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; выполнены к моменту &amp;lt;tex&amp;gt;C'_n&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;C'_{n-1}&amp;lt;/tex&amp;gt; соответственно, то максимальное количество обработки, полученной этими работами составляет&lt;br /&gt;
:&amp;lt;tex&amp;gt;(v_1 + v_2) \cdot C'_n + v_1 \cdot (C'_{n-1} - C'_n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
Из чего следует, что&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_2 \cdot C'_n + v_1 \cdot C'_{n-1} \geqslant p_n + p_{n-1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
Продолжая в том же духе можно показать, что&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_k \cdot C'_n + v_{k-1} \cdot C'_{n-1} +  \ldots  + v_1 \cdot C'_{n-k+1} \geqslant p_n + p_{n-1} +  \ldots  + p_{n-k+1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
В итоге получаем следующие неравенства&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_1 \cdot C'_{n} \geqslant v_1 \cdot C_n&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_2 \cdot C'_n + v_1 \cdot C'_{n-1} \geqslant v_2 \cdot C_n + v_1 \cdot C_{n-1} &amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_3 \cdot C'_n + v_2 \cdot C'_{n-1} + v_1 \cdot C'_{n-2} \geqslant v_3 \cdot C_n + v_2 \cdot C_{n-1} + v_1 \cdot C_{n-2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;\vdots&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_n \cdot C'_n + v_{n-1} \cdot C'_{n-1} +  \ldots  + v_1 \cdot C'_1 \geqslant v_n \cdot C_n + v_{n-1} \cdot C_{n-1} +  \ldots  + v_1 \cdot C_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
Если существует такой набор положительных чисел &amp;lt;tex&amp;gt;a_j&amp;lt;/tex&amp;gt;, что умножение &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;-го неравенства на &amp;lt;tex&amp;gt;a_j&amp;lt;/tex&amp;gt; и сложение всех неравенств будет давать неравенство &amp;lt;tex&amp;gt;\sum{C'_j} \geqslant \sum{C_j}&amp;lt;/tex&amp;gt;, тогда теорема будет доказана. Можно показать, что &amp;lt;tex&amp;gt;a_j&amp;lt;/tex&amp;gt; должны удовлетворять следующим равенствам&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_1 \cdot a_1 + v_2 \cdot a_2 +  \ldots  + v_n \cdot a_n = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_1 \cdot a_2 + v_2 \cdot a_3 +  \ldots  + v_{n-1} \cdot a_n = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;\vdots&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;v_{1} \cdot a_n = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;v_1 \geqslant v_2 \geqslant  \ldots  \geqslant v_n&amp;lt;/tex&amp;gt; такой набор &amp;lt;tex&amp;gt;a_j&amp;lt;/tex&amp;gt; существует.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[QSumCi|&amp;lt;tex&amp;gt;Q\mid\mid\sum{C_i}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* Peter Brucker «Scheduling Algorithms», fifth edition, Springer {{---}} с. 134-135 ISBN 978-3-540-69515-8&lt;br /&gt;
* [http://www.semanticscholar.org/paper/Optimal-preemptive-scheduling-on-uniform-machines-Pandelis/819408316692bf5aa8ba80f1f6d6e7667863c33a/pdf Dimitrios G. Pandelis &amp;quot;Optimal preemptive scheduling on uniform machines with discounted flowtime objectives&amp;quot; {{---}} с. 631-632]&lt;br /&gt;
* [http://link.springer.com/chapter/10.1007%2F978-1-4614-2361-4_5 M.L. Pinedo &amp;quot;Parallel Machine Models (Deterministic)&amp;quot; {{---}} с.135-136]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Теория расписаний]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=83476</id>
		<title>Устранение левой рекурсии</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B8&amp;diff=83476"/>
				<updated>2022-09-01T05:00:47Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Говорят, что [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная (КС) грамматика]] &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''непосредственную левую рекурсию''' (англ. ''direct left recursion''), если она содержит правило вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Говорят, что КС-грамматика &amp;lt;tex&amp;gt;\Gamma&amp;lt;/tex&amp;gt; содержит '''левую рекурсию'''  (англ. ''left recursion''), если в ней существует вывод вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Методы трансляции#Нисходящий разбор|Методы нисходящего разбора]] не в состоянии работать с леворекурсивными грамматиками. Проблема в том, что продукция вида &amp;lt;tex&amp;gt;A \Rightarrow^* A\alpha&amp;lt;/tex&amp;gt; может применяться бесконечно долго, так и не выработав некий терминальный символ, который можно было бы сравнить со строкой. Поэтому требуется преобразование грамматики, которое бы устранило левую рекурсию.&lt;br /&gt;
&lt;br /&gt;
==Устранение непосредственной левой рекурсии==&lt;br /&gt;
Опишем процедуру, устраняющую все правила вида &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;, для фиксированного нетерминала &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Запишем все правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в виде: &lt;br /&gt;
&amp;lt;tex&amp;gt;A \to A\alpha_1 \mid \ldots \mid A\alpha_n \mid \beta_1 \mid \ldots \mid \beta_m &amp;lt;/tex&amp;gt;, где&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов (&amp;lt;tex&amp;gt;\alpha \nrightarrow \varepsilon &amp;lt;/tex&amp;gt;);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;tex&amp;gt;\beta&amp;lt;/tex&amp;gt; {{---}} непустая последовательность терминалов и нетерминалов, не начинающаяся с &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Заменим правила вывода из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;A \to\beta_1A^\prime \mid \ldots\ \mid \beta_mA^\prime \mid \beta_1 \mid \ldots \mid \beta_m&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Создадим новый нетерминал &amp;lt;tex&amp;gt;{A^\prime} \to \alpha_1{A^\prime} \mid \ldots \mid \alpha_n{A^\prime} \mid \alpha_1 \mid \ldots \mid \alpha_n&amp;lt;/tex&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Изначально нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает строки вида &amp;lt;tex&amp;gt;\beta\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. В новой грамматике нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; порождает &amp;lt;tex&amp;gt;\beta{A^\prime}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; порождает строки вида &amp;lt;tex&amp;gt;\alpha_{i0}\alpha_{i1} \ldots \alpha_{ik}&amp;lt;/tex&amp;gt;. Из этого очевидно, что изначальная грамматика эквивалентна новой.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha \mid A\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть непосредственная левая рекурсия &amp;lt;tex&amp;gt;A \to A\alpha&amp;lt;/tex&amp;gt;. Добавим нетерминал &amp;lt;tex&amp;gt;A^\prime&amp;lt;/tex&amp;gt; и добавим правила &amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; A^{\prime} \to \alpha{A^{\prime}} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Новая грамматика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha{A^{\prime}} \mid S\alpha&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A^{\prime} \to \alpha{A^{\prime} \mid \alpha}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to A\beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В новой грамматике нет непосредственной левой рекурсии, но нетерминал &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; леворекурсивен, так как есть &amp;lt;tex&amp;gt; A \Rightarrow S\alpha{A^{\prime}} \Rightarrow A\beta\alpha{A^{\prime}} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Алгоритм  устранения произвольной левой рекурсии==&lt;br /&gt;
Воспользуемся [[Удаление_eps-правил_из_грамматики | алгоритмом удаления &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил]]. Получим грамматику без &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил для языка &amp;lt;tex&amp;gt;L(\Gamma) \setminus \lbrace \varepsilon \rbrace&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Упорядочим нетерминалы, например по возрастанию индексов, и будем добиваться того, чтобы не было правил вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j \leqslant i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если данное условие выполняется для всех &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;, то в грамматике нет &amp;lt;tex&amp;gt;A_i \Rightarrow^* A_i&amp;lt;/tex&amp;gt;, а значит не будет левой рекурсии. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;N = \lbrace A_1, A_2, \ldots , A_n \rbrace&amp;lt;/tex&amp;gt; {{---}} упорядоченное множество всех нетерминалов.&lt;br /&gt;
&lt;br /&gt;
  '''for''' &amp;lt;tex&amp;gt;A_i \in N&amp;lt;/tex&amp;gt;&lt;br /&gt;
    '''for''' &amp;lt;tex&amp;gt;A_j \in \{ N \mid 1 \leqslant j &amp;lt; i \}&amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''for''' &amp;lt;tex&amp;gt;p \in \{ P \mid A_i \to A_j\gamma \}&amp;lt;/tex&amp;gt;&lt;br /&gt;
        удалить продукцию &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; &lt;br /&gt;
        '''for''' &amp;lt;tex&amp;gt;Q \to x_i \in \{A_j \to \delta_1 \mid \ldots \mid \delta_k\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
          добавить правило &amp;lt;tex&amp;gt;A_i \to x_i\gamma&amp;lt;/tex&amp;gt;&lt;br /&gt;
    устранить непосредственную левую рекурсию для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; присутствовал в языке исходной грамматики, добавим новый начальный символ &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; и правила &amp;lt;tex&amp;gt;S' \to S \, \mid \, \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла в любой продукции внешнего цикла в любой продукции вида &amp;lt;tex&amp;gt;A_k \to A_l\alpha, k &amp;lt; i&amp;lt;/tex&amp;gt;, должно быть &amp;lt;tex&amp;gt;l &amp;gt; k&amp;lt;/tex&amp;gt;. В результате при следующей итерации внутреннего цикла растет нижний предел &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; всех продукций вида &amp;lt;tex&amp;gt;A_i \to A_m\alpha&amp;lt;/tex&amp;gt; до тех пор, пока не будет достигнуто &amp;lt;tex&amp;gt;i \leqslant m &amp;lt;/tex&amp;gt;.&lt;br /&gt;
   &lt;br /&gt;
После &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла в грамматике будут только правила вида &amp;lt;tex&amp;gt;A_i \to A_j\alpha&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j &amp;gt; i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Можно заметить, что неравенство становится строгим только после применения алгоритма устранения непосредственной левой рекурсии. При этом добавляются новые нетерминалы. Пусть &amp;lt;tex&amp;gt;{A^\prime}_i &amp;lt;/tex&amp;gt; новый нетерминал. Можно заметить, что нет правила вида &amp;lt;tex&amp;gt;\ldots \to {A^\prime}_i&amp;lt;/tex&amp;gt;, где  &amp;lt;tex&amp;gt;{A^\prime}_i&amp;lt;/tex&amp;gt; самый левый нетерминал, а значит новые нетерминалы можно не рассматривать во внешнем цикле. Для строгого поддержания инвариантов цикла можно считать, что созданный на &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации в процессе устранения непосредственной левой рекурсии нетерминал имеет номер &amp;lt;tex&amp;gt;A_{-i}&amp;lt;/tex&amp;gt; (т.е. имеет номер, меньший всех имеющихся на данный момент нетерминалов).&lt;br /&gt;
&lt;br /&gt;
На &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерации внешнего цикла все правила вида &amp;lt;tex&amp;gt;A_i \to A_j \gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt; j &amp;lt; i &amp;lt;/tex&amp;gt; заменяются на &amp;lt;tex&amp;gt;A_i \to \delta_1\gamma \mid \ldots \mid \delta_k\gamma&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;A_j \to \delta_1 \mid \ldots \mid \delta_k&amp;lt;/tex&amp;gt;. Очевидно, что одна итерация алгоритма не меняет язык, а значит язык получившийся в итоге грамматики совпадает с исходным.&lt;br /&gt;
&lt;br /&gt;
===Оценка времени работы===&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;a_i&amp;lt;/tex&amp;gt; количество правил для нетерминала &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; итерация внешнего цикла будет выполняться за &amp;lt;tex&amp;gt;O\left(\sum\limits_{A_i \to A_j, j &amp;lt; i} a_j\right) + O(a_i)&amp;lt;/tex&amp;gt;, что меньше чем &amp;lt;tex&amp;gt;O\left(\sum\limits_{i=1}^n a_j\right)&amp;lt;/tex&amp;gt;, значит асимптотика алгоритма &amp;lt;tex&amp;gt;O\left(n\sum\limits_{i=1}^n a_j\right)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Худший случай===&lt;br /&gt;
Проблема этого алгоритма в том, что в зависимости от порядка нетерминалов в множестве размер грамматки может получиться экспоненциальным.&lt;br /&gt;
&lt;br /&gt;
Пример грамматики для которой имеет значение порядок нетерминалов&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_1 \to 0 \mid 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_{i+1} \to {A_i}0 \mid {A_i}1 &amp;lt;/tex&amp;gt;  для &amp;lt;tex&amp;gt;1 \leqslant i &amp;lt; n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Упорядочим множество нетерминалов по возрастанию индексов. Легко заметить, что правила для &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; будут представлять из себя все двоичные вектора длины &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, а значит размер грамматики будет экспоненциальным.&lt;br /&gt;
===Порядок выбора нетерминалов===&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Говорят, что нетерминал &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; {{---}} '''прямой левый вывод''' (англ. ''direct left corner'') из &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, если существует правило вида &amp;lt;tex&amp;gt;A \to X\alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Левый вывод''' (англ. ''left corner'') {{---}} [[Транзитивное_отношение|транзитивное]], [[Рефлексивное_отношение|рефлексивное]] замыкание отношения «быть прямым левым выводом».&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Во внутреннем цикле алгоритма для всех нетерминалов &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;, таких что &amp;lt;tex&amp;gt;j &amp;lt; i&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt; {{---}} прямой левый вывод из &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; заменяем все прямые левые выводы &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; на все выводы из &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Это действие удаляет левую рекурсию только если &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; {{---}} леворекурсивный нетерминал и &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt; содержится в выводе &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; (то есть &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; {{---}} левый вывод из &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;,в то время как &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt; {{---}} левый вывод из &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Перестанем добавлять бесполезные выводы, которые не участвуют в удалении левой рекурсии, упорядочив нетерминалы так: если &amp;lt;tex&amp;gt;j &amp;lt; i&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt; {{---}} прямой левый вывод из &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt; {{---}} левый вывод из &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Упорядочим их по уменьшению количества различных прямых левых выводов из них.&lt;br /&gt;
&lt;br /&gt;
Так как отношение «быть левым выводом» транзитивно,то если &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; {{---}} прямой левый вывод из &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, то каждый левый вывод из С также будет левым выводом из &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;. А так как отношение «быть левым выводом» рефлексивно, &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; явлеяется своим левым выводом, а значит если &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; {{---}} прямой левый вывод из &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; {{---}} он должен следовать за &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; в упорядоченном множестве, если только &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; не является левым выводом из &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
Дана грамматика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to S\beta \mid A\gamma \mid \beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Среди правил &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; непосредственной рекурсии нет, поэтому во время первой итерации внешнего цикла ничего не происходит. &lt;br /&gt;
Во время второй итерации внешнего цикла правило &amp;lt;tex&amp;gt; S \to A\gamma &amp;lt;/tex&amp;gt; переходит в &amp;lt;tex&amp;gt; S \to S\alpha\gamma &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Грамматика имеет вид &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A \to S\alpha &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \to{S}{\beta} \mid {S}{\alpha}{\gamma} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устраняем левую рекурсию для &amp;lt;tex&amp;gt;S &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S \to\beta{S_1} \mid \beta&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; {S_1} \to\beta{S_1} \mid \alpha\gamma{S_1} \mid {\beta} \mid {\alpha}{\gamma} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также  ==&lt;br /&gt;
* [[Контекстно-свободные_грамматики,_вывод,_лево-_и_правосторонний_вывод,_дерево_разбора|Контекстно-свободные грамматики]]&lt;br /&gt;
* [[Нормальная_форма_Хомского|Нормальная форма Хомского]]&lt;br /&gt;
* [[Удаление_eps-правил_из_грамматики | Удаления &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил из грамматики]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — '''Введение в теорию автоматов, языков и вычислений''', 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)&lt;br /&gt;
* ''Robert C. Moore'' — [https://aclanthology.org/A00-2033.pdf Removing  Left  Recursion  from  Context-Free  Grammars ]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;br /&gt;
[[Категория: Нормальные формы КС-грамматик]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Pintreepi1Lmax&amp;diff=83475</id>
		<title>Pintreepi1Lmax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Pintreepi1Lmax&amp;diff=83475"/>
				<updated>2022-09-01T05:00:39Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;200&amp;quot;&amp;gt;P \mid intree, p_{i} = 1 \mid L_{max}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Задача&lt;br /&gt;
|definition=Рассмотрим задачу на нахождение расписания:&lt;br /&gt;
# У нас есть несколько станков, работающих параллельно. У станков могут быть разные скорости выполнения работ.&lt;br /&gt;
# Есть несколько заданий, каждое из которых имеет определенный порядок, который указан в направленном из корней в лист [[Классификация задач#intree|intree-дерева]], которое имеет несколько корней и один лист.&lt;br /&gt;
# Любая работа на любом станке выполняется единицу времени.&lt;br /&gt;
Требуется минимизировать максимальное опоздание &amp;lt;tex&amp;gt;L_{max} = \max\limits_i \{C_i - d_i\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Описание алгоритма ==&lt;br /&gt;
[[Файл:Intree_example.jpg‎|thumb|Right|Пример intree-дерева]]&lt;br /&gt;
=== Идея ===&lt;br /&gt;
&lt;br /&gt;
Все работы хранятся в качестве вершин [[Классификация задач#intree|intree-дерева]], состоящем из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; вершин. В intree-дереве у одной вершины может быть два и более родителей.&lt;br /&gt;
Решение задачи состоит из двух шагов:&lt;br /&gt;
&lt;br /&gt;
# Меняем делайны работ в соответствии с их очередностью: для всех &amp;lt;tex&amp;gt;i, j&amp;lt;/tex&amp;gt; таких, что существует ребро из &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; будем менять &amp;lt;tex&amp;gt;{d_i}&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;\min ({d_i}, {d_j} - 1) &amp;lt;/tex&amp;gt;. &lt;br /&gt;
# Работы расставляются в неубывающем порядке их дедлайнов.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
==== Первый шаг ====&lt;br /&gt;
На первом шаге мы релаксируем дедлайны всех работ, кроме листовой, в соответствии с предыдущим пунктом.&lt;br /&gt;
* В массиве &amp;lt;tex&amp;gt;\mathtt d&amp;lt;/tex&amp;gt; хранятся дедлайны работ.&lt;br /&gt;
* В массиве &amp;lt;tex&amp;gt;\mathtt {parents}&amp;lt;/tex&amp;gt; {{---}} массив предков &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й работы.&lt;br /&gt;
* В переменной &amp;lt;tex&amp;gt;\mathtt i&amp;lt;/tex&amp;gt; хранится номер листа (он один, см. условие задачи).&lt;br /&gt;
 '''Deque&amp;lt;int&amp;gt;''' deque = &amp;lt;tex&amp;gt;\varnothing&amp;lt;/tex&amp;gt;&lt;br /&gt;
 deque.push(i)&lt;br /&gt;
 '''while''' '''not''' deque.isEmpty&lt;br /&gt;
     '''int''' j = deque.removeFirst()&lt;br /&gt;
     '''for''' k '''in''' parents[j]&lt;br /&gt;
         d[k] = min(d[k], d[j] - 1)&lt;br /&gt;
         deque.addLast(k)&lt;br /&gt;
&lt;br /&gt;
==== Второй шаг ====&lt;br /&gt;
На втором этапе алгоритма работы сортируются в неубывающем порядке их дедлайнов. Предполагается, что работы будут занумерованы так, что &amp;lt;tex&amp;gt;d_{i} \leqslant d_{j}&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;i \leqslant j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* В переменной &amp;lt;tex&amp;gt;\mathtt F&amp;lt;/tex&amp;gt; хранится время, когда какой-либо станок освободится.&lt;br /&gt;
* В массиве &amp;lt;tex&amp;gt;\mathtt r&amp;lt;/tex&amp;gt; хранится информация о максимальном времени завершении обработки родителя.&lt;br /&gt;
* Массив &amp;lt;tex&amp;gt;\mathtt q&amp;lt;/tex&amp;gt; хранит информацию о количестве работ, готовых к исполнению (находящихся в очереди) в момент времени &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* Массив &amp;lt;tex&amp;gt;\mathtt x&amp;lt;/tex&amp;gt; хранит информацию о начале выполнения работы &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* В массиве &amp;lt;tex&amp;gt;\mathtt {child}&amp;lt;/tex&amp;gt; хранится индекс ребенка &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й работы.&lt;br /&gt;
&lt;br /&gt;
 F = 0&lt;br /&gt;
 '''for''' '''int''' i = 1 .. n&lt;br /&gt;
    r[i] = 0&lt;br /&gt;
 '''for''' '''int''' t = 0 .. n&lt;br /&gt;
    q[t] = 0&lt;br /&gt;
 '''for''' '''int''' i = 1 .. n&lt;br /&gt;
    '''int''' t = max(r[i], F)&lt;br /&gt;
    x[i] = t&lt;br /&gt;
    q[t] = q[t] + 1&lt;br /&gt;
    '''if''' q[t] == m&lt;br /&gt;
       F = t + 1&lt;br /&gt;
    '''int''' j = child[i]&lt;br /&gt;
    r[j] = max(r[j], t + 1)&lt;br /&gt;
&lt;br /&gt;
В результате ответ можно получить, зная конечный массив &amp;lt;tex&amp;gt;\mathtt x&amp;lt;/tex&amp;gt; и делайны работ: &amp;lt;tex&amp;gt;L_{max} = \max\limits_i (\mathtt x[i] + 1 - d_{i}&amp;lt;/tex&amp;gt;), так как все работы выполняются единицу времени, следовательно, &amp;lt;tex&amp;gt;C_{i} = \mathtt x[i] + 1&amp;lt;/tex&amp;gt;. Можно заметить, что при вычислении ответа неважно, какие дедлайны использовать, начальные или релаксированные, потому что для любого &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; и его предка &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; либо производится релаксация и выполняется равенство &amp;lt;tex&amp;gt; d_{k} = d_{i} - 1&amp;lt;/tex&amp;gt;, а значит, после релаксации максимум не изменится, поскольку при замене дедлайна на меньший максимум увеличится, а новое значение &amp;lt;tex&amp;gt;L_{k}&amp;lt;/tex&amp;gt; будет равно &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, либо мы не делали релаксацию, и значение &amp;lt;tex&amp;gt;d_{k}&amp;lt;/tex&amp;gt;, и, следовательно, &amp;lt;tex&amp;gt;L_{k}&amp;lt;/tex&amp;gt; не поменяются.&lt;br /&gt;
&lt;br /&gt;
=== Доказательство корректности ===&lt;br /&gt;
==== Первый шаг ====&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Работа с новым сроком &amp;lt;tex&amp;gt;{d'_i}&amp;lt;/tex&amp;gt; в расписании не имеет опозданий тогда и только тогда, когда она не имела опозданий с оригинальным сроком &amp;lt;tex&amp;gt;{d_i}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt;\Rightarrow &amp;lt;/tex&amp;gt;&lt;br /&gt;
:Т.к. &amp;lt;tex&amp;gt;{d'_i} \leqslant {d_i}&amp;lt;/tex&amp;gt;, значит, если опозданий не было со значениями &amp;lt;tex&amp;gt;{d'_i}&amp;lt;/tex&amp;gt;, их не будет и со значениями &amp;lt;tex&amp;gt;{d_i}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Leftarrow &amp;lt;/tex&amp;gt;&lt;br /&gt;
:Пусть у нас были сроки &amp;lt;tex&amp;gt;{d_i}&amp;lt;/tex&amp;gt; и мы их заменили на &amp;lt;tex&amp;gt;{d'_i}&amp;lt;/tex&amp;gt; в соответствии с приведенным алгоритмом. &lt;br /&gt;
:Пронумеруем вершины от &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; в соответствии с '''обратным''' порядком обхода в алгоритме изменения сроков, причём &amp;lt;tex&amp;gt;d_{i} \leqslant d_{j}&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;i \leqslant j&amp;lt;/tex&amp;gt;. В соответствии с расписанием, время, когда деталь закончит обрабатываться на станке &amp;lt;tex&amp;gt;{C_i}&amp;lt;/tex&amp;gt; удовлетворяет неравенству &amp;lt;tex&amp;gt;{C_i} \leqslant {d_i}&amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt;{C_1} \dots {C_n}&amp;lt;/tex&amp;gt;. Тогда мы имеем  &amp;lt;tex&amp;gt;{C_n} \leqslant {d_n} = {d'_n}&amp;lt;/tex&amp;gt;. Если для какого-то &amp;lt;tex&amp;gt;1 &amp;lt; r \leqslant n&amp;lt;/tex&amp;gt; мы имеем &amp;lt;tex&amp;gt;{C_n} \leqslant {d'_n}&amp;lt;/tex&amp;gt; для &amp;lt;tex&amp;gt;i = r \dots n &amp;lt;/tex&amp;gt; и существует работа &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; из этого промежутка, что вершина с номером &amp;lt;tex&amp;gt;r - 1&amp;lt;/tex&amp;gt; является ее родителем, тогда &amp;lt;tex&amp;gt;C_{r-1} \leqslant  \min(d_{r-1},d'_{j}-1) = d'_{r-1}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Второй шаг ====&lt;br /&gt;
Расписание, сгенерированное этим алгоритмом имеет важное свойство: число заданий в очереди в любой момент времени &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; меньше, чем в момент &amp;lt;tex&amp;gt;t + 1&amp;lt;/tex&amp;gt;. Действительно, пусть во время &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; мы выполняем &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; работ, и хотя бы &amp;lt;tex&amp;gt;k + 1 \leqslant m&amp;lt;/tex&amp;gt; работ готовы к выполению в момент времени &amp;lt;tex&amp;gt;t + 1&amp;lt;/tex&amp;gt;. Но т.к. &amp;lt;tex&amp;gt;k + 1 \leqslant m&amp;lt;/tex&amp;gt;, значит каждой из работ предшествовала как минимум одна, поскольку у всех вершин, кроме корней, есть как минимум один предок. Значит, в момент времени &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; исполнялось не менее &amp;lt;tex&amp;gt;k + 1&amp;lt;/tex&amp;gt; работ, противоречие.&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Если существует такое расписание, в котором ни одна из работ не будет выполнена с опозданием, то тогда это свойство сохранится в построенном данным алгоритмом расписании&lt;br /&gt;
|proof=&lt;br /&gt;
Предположим, что существует работа из &amp;lt;tex&amp;gt;x_{1} \dots x_{n}&amp;lt;/tex&amp;gt; расписания, построенного алгоритмом. В таком случае существует работа, которая опоздала по отношению к измененным срокам. Возьмем наименьшее &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; такое, что &amp;lt;tex&amp;gt;x(i) + 1 &amp;gt; d'_{i}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;t &amp;lt; d'_{i}&amp;lt;/tex&amp;gt; {{---}} наибольшее из удовлетворяющих условию &amp;lt;tex&amp;gt;j &amp;lt; m &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; x(j) = t, d'_{j} \leqslant d'_{i}&amp;lt;/tex&amp;gt;&lt;br /&gt;
Такое &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; существует, потому что иначе &amp;lt;tex&amp;gt;m \cdot d'_{i}&amp;lt;/tex&amp;gt; работ &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; с &amp;lt;tex&amp;gt;d'_{j} \leqslant d'_{i}&amp;lt;/tex&amp;gt; находятся в очереди до &amp;lt;tex&amp;gt;d'_{i}&amp;lt;/tex&amp;gt;. Работа &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; к ним не принадлежит, поскольку &amp;lt;tex&amp;gt;x(i) + 1 &amp;gt; d'_{i}&amp;lt;/tex&amp;gt;, а значит, что &amp;lt;tex&amp;gt;m \cdot d'_{i} + 1&amp;lt;/tex&amp;gt; должны быть в очереди в момент времени &amp;lt;tex&amp;gt;0 \dots d'_{i}&amp;lt;/tex&amp;gt; и ни одна работа не должна опаздывать. Противоречие.&lt;br /&gt;
Любая работа &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; с &amp;lt;tex&amp;gt;d'_{j} \leqslant d'_{i} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; x(j) &amp;gt; t &amp;lt;/tex&amp;gt; должна иметь предка, начавшего работать в момент времени &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;. Теперь рассмотрим два случая:&lt;br /&gt;
&lt;br /&gt;
'''Первый случай:''' &amp;lt;tex&amp;gt;t = d'_{i} - 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:Мы имеем &amp;lt;tex&amp;gt;x(i)&amp;gt;d'_{i}-1 = t&amp;lt;/tex&amp;gt;. Таким образом, предок &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; работы &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; должен начать работать во время &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; и закончить в &amp;lt;tex&amp;gt;d'_{i}&amp;lt;/tex&amp;gt;. Но т.к. &amp;lt;tex&amp;gt;d'_{k} \leqslant d'_{i} - 1 &amp;lt; d'_{i} = x(k) + 1&amp;lt;/tex&amp;gt;, работа &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; так же опоздает, однако &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; было выбрано минимальным. Противоречие.&lt;br /&gt;
&lt;br /&gt;
'''Второй случай:''' &amp;lt;tex&amp;gt;t &amp;lt; d'_{i} - 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:В этом случае &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; работ &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; таких, что &amp;lt;tex&amp;gt;d'_{j} \leqslant d'_{i}&amp;lt;/tex&amp;gt; начнут работать в момент времени &amp;lt;tex&amp;gt;t + 1&amp;lt;/tex&amp;gt;, каждая из которых имеет как минимум работающего в &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; предка. По структуре дерева все эти предки различны, кроме того, если &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; {{---}} такой предок &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;d'_{k} \leqslant d'_{j} - 1 &amp;lt; d'_{j} \leqslant d'_{i}&amp;lt;/tex&amp;gt;, что противоречит выбору &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Корректность алгоритма ====&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Данный алгоритм корректно решает задачу &amp;lt;tex&amp;gt;P \mid intree, p_{i} = 1 \mid L_{max}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;L'_{max}&amp;lt;/tex&amp;gt; {{---}} оптимальное значение. В таком случае, существует расписание, удовлетворяющее &amp;lt;tex&amp;gt;\max\limits_i \{C_i - d_i\} \leqslant L'_{max}&amp;lt;/tex&amp;gt;, что эквивалетно выражению &amp;lt;tex&amp;gt;C_{i} \leqslant d_{i} + L'_{max}&amp;lt;/tex&amp;gt; для &amp;lt;tex&amp;gt;i = 1 \dots n &amp;lt;/tex&amp;gt;. По первой лемме расписание &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, построенное для сдвинутых дат &amp;lt;tex&amp;gt;d_{i} + L'_{max}&amp;lt;/tex&amp;gt; удовлетворяет данным выражениям. Таким образом, оно оптимально. Нетрудно заметить, что &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; идентично расписанию, построенному алгоритмом, т.к. &amp;lt;tex&amp;gt;(d_{i}+L'_{max})' = d'_{i} + L'_{max} &amp;lt;/tex&amp;gt; для &amp;lt;tex&amp;gt;i = 1 \dots n &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Асимптотика ====&lt;br /&gt;
# На первом шаге мы посещаем каждую вершину не более двух раз (первый {{---}} когда ищем вершину без родителя, второй {{---}} когда релаксируем дедлайны) за &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; времени.&lt;br /&gt;
# Делаем сортировку вершин за &amp;lt;tex&amp;gt;O(n \log n)&amp;lt;/tex&amp;gt;, а затем обходим все вершины по разу и считаем время начала выполнения каждой работы, в сумме за &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Итоговая сложность {{---}} &amp;lt;tex&amp;gt;O(n \log n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
*[[P2precpi1Lmax|&amp;lt;tex&amp;gt;P2 \mid prec, p_i = 1 \mid L_{\max}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
*[[1outtreesumwc | &amp;lt;tex&amp;gt;1 \mid outtree \mid \sum w_i C_i&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
* Peter Brucker «Scheduling Algorithms», fifth edition, Springer — с. 151-156 ISBN 978-3-540-69515-8&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Теория расписаний]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Encuadernaciones&amp;diff=83474</id>
		<title>Encuadernaciones</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Encuadernaciones&amp;diff=83474"/>
				<updated>2022-09-01T05:00:32Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What are the Different Kinds of Publishing Bindings(Recognized in Mexico as Encuadernaciones) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Prасtісаllу еаch аnd еvеrу othеr bооk thаt'ѕ rеad іnsidе thе рrеsеnt осcаѕіоns іѕ bоund аnd men and wоmen wіth big book collеctіons often look аt the bоokѕ аnd wоndеr what tyреs оf bindіngѕ(encuadernaciones) hаvе bееn employed to bind the diѕtіnсt bоokѕ. Boоkѕ that hарpеn tо be рublіshed arе bоund in mаnу dіffеrеnt tесhnіques аnd fоllоwing arе а numbеr of thе moѕt prevаlеnt tуреs.&lt;br /&gt;
&lt;br /&gt;
[http://www.seccionamarilla.com.mx/Categorias/imprentas-y-encuadernaciones '''Pеrfeсt bindingѕ(encuadernaciones) аre utilized fоr thе сreаtіon оf eасh рaрerbaсk аnd hаrdcovеr dоcumеnts''']. Thе dосumеnt іѕ plасеd іnsidе а сaѕе exасtly whеre the ѕріnе iѕ соvered wіth аn аdheѕіve. The раgeѕ аre ѕесurеd аѕ ѕoоn аs the adhеѕive has melted fоllowing plaсіng thе саѕe withіn a thеrmаl bindіng mаchіnе. Uѕеrѕ аrе рrоvіded with ѕecurеly bоund bоokѕ by thіs mеthod.&lt;br /&gt;
&lt;br /&gt;
The еmergеnсе of machіnеs fоr еxamрle thе Pоwis Pаrkеr Fаstbаck 20 in thе publіshіng markеt hаѕ rеѕulted in an boоѕt іnsіde the rеputаtіоn of tарe bіndіngѕ(encuadernaciones). Thе spіnе оf thе dосument iѕ wrарpеd аbоut with a striр of tаpе thrоugh the taре binding prосеss. Hardсover аnd раpеrbасk vоlumеѕ аrе producеd uѕіng thiѕ аррrоаch оf boоk binding.&lt;br /&gt;
&lt;br /&gt;
Stіtсhing hаrdсovеr books tоgethеr cаn аlѕo be а рrеvalеnt book bіndіng ѕtrategу(encuadernaciones), and it incrеаѕеѕ thе durаbіlitу оf thоse bооkѕ. Nоnеthеlеѕs, сarryіng out thіѕ tесhnіque of bооkbіndіng bу hand juѕt іsn't аn ѕtraightfоrward job and whеn such а book iѕ орenеd; tурісаlly thе pageѕ dо not liе flаt.&lt;br /&gt;
&lt;br /&gt;
Plаstic соmb bіndіngs arе lоw-cоst аnd cоnvеnient, whіch сan be the саuѕe that eaсh publіshing рrоs and thosе who are nеw to thіѕ field uѕe this bоokbindіng stratеgу. Dосumеnts with morе than 425 раgеs mаy bе еffоrtlеsѕlу bоund bу this mеthоd whіch hаs been wеll-lіkеd frоm quitе a lеngthу timе. Although the loоk of соmb bіndingѕ juѕt іsn't rеаllу sресіaliѕt, nonethеlеsѕ, cоokbооks, сhіldrеn's bookѕ, аnd ѕо on. mіght bе еxсellеntlу bound making usе оf this bооkbindіng tеchniquе.&lt;br /&gt;
&lt;br /&gt;
Gіft іtems lіkе аddrеss bооkѕ, саlеndarѕ аnd dіаrіeѕ/jоurnalѕ arе oftеn bоund tоgеthеr with twіn-loоp wіrе bіndіngѕ. Dоcumеntѕ арреаr far mоre сlаѕѕу and sорhіѕtісatеd duе tо thе wіrе ѕpіneѕ. Dоcuments like саtаlоgs, cоokbооkѕ аnd manualѕ that need to laу flаt саn аre аlѕо bоund wіth wirе ѕpіnеs.&lt;br /&gt;
&lt;br /&gt;
Activіtу bооks, usеr guіdeѕ and alsо other suсh dосumеnts аrе bound togеther wіth cоlоr coil bіndіngѕ. Thе pаgеѕ оf а bоok соuld bе rotаted 360 degrees becausе of thе соils and rеаding thе dоcuments bесоmеs leѕѕ соmрliсatеd thіѕ wау. Bесаusе thе coіls аrе aссeѕѕіble іn оver fіftу dіverѕе соlоrs, thеrefore, сrеаtіvе prоfesѕіonаlѕ hіghly favor thіs bоok bіndіng(encuadernaciones) аррrоасh.&lt;br /&gt;
&lt;br /&gt;
Comiс bооkѕ, magazіneѕ and other ѕuсh dоcumentѕ аrе uѕually ѕtарled tоgеthеr. Sаddlе-ѕtіtchіng will be thе mоst рrеvаlеnt sоrt оf bindіng(encuadernaciones) thаt iѕ сеrtаіnly nоrmallу emрlоуеd аnd thе documеnt iѕ stарled inѕіdе the middle of the fоld. It іѕ nоt amоng the bіndings(encuadernaciones) whіch аre probablу thе mоѕt durable, neverthеlеѕs іt is іndeed eаѕу and рriсе еffiсіеnt.&lt;br /&gt;
&lt;br /&gt;
In рublishіng, numerous other tуpes of book bіndings(encuadernaciones) arе alѕо utіlіzed. Nevеrthеleѕs, thе mеntіonеd techniquеs of bооkbіndіng аrе thе mоst сommоn and ѕіmplе оneѕ thаt mау еven bе сomрleted аt hоme аlso. Both proреrtу аnd оffісe doсumеntѕ might bе gіvеn a рrofessіonal aрpeаr wіth theѕe bindіng aрproасheѕ. Bіndingѕ(encuadernaciones) are an cruciаl part оf boоkѕ аnd dосuments, wіthout whіch theѕe boоks оr dосumеnts wоuld not rеmain tоgеthеr.&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2_%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_(%D0%BF%D1%83%D1%81%D1%82%D0%BE%D1%82%D0%B0,_%D1%81%D0%BE%D0%B2%D0%BF%D0%B0%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BA%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C,_%D0%BF%D0%BE%D0%B4%D1%81%D1%87%D1%91%D1%82_%D1%87%D0%B8%D1%81%D0%BB%D0%B0_%D1%81%D0%BB%D0%BE%D0%B2)&amp;diff=83473</id>
		<title>Анализ свойств регулярных языков (пустота, совпадение, включение, конечность, подсчёт числа слов)</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2_%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_(%D0%BF%D1%83%D1%81%D1%82%D0%BE%D1%82%D0%B0,_%D1%81%D0%BE%D0%B2%D0%BF%D0%B0%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BA%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C,_%D0%BF%D0%BE%D0%B4%D1%81%D1%87%D1%91%D1%82_%D1%87%D0%B8%D1%81%D0%BB%D0%B0_%D1%81%D0%BB%D0%BE%D0%B2)&amp;diff=83473"/>
				<updated>2022-09-01T05:00:25Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Для различных операций с [[Регулярные языки: два определения и их эквивалентность|регулярными языками]] полезно знать некоторые их свойства. Как правило, в доказательствах этих свойств используется факт из теоремы Клини об эквивалентности [[Детерминированные_конечные_автоматы#Автоматные_языки | автоматных]] и [[Регулярные языки:_два определения_и_их_эквивалентность#REG1 | регулярных]]  языков.&lt;br /&gt;
&lt;br /&gt;
== Пустота регулярного языка ==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=empty&lt;br /&gt;
|definition=&lt;br /&gt;
[[Регулярные языки: два определения и их эквивалентность|Регулярный язык]] называется '''пустым''' (англ. ''empty''), если он не содержит ни одного слова.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=nonempty&lt;br /&gt;
|definition=&lt;br /&gt;
[[Регулярные языки: два определения и их эквивалентность|Регулярный язык]] содержащий хотя бы одно слово, называется '''непустым''' (англ. ''nonempty'').&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|id=&lt;br /&gt;
regEmpty&lt;br /&gt;
|statement=&lt;br /&gt;
Регулярный язык является непустым тогда и только тогда, когда в любом задающем его автомате существует путь из стартового состояния в какое-либо из терминальных.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Пусть язык содержит слово &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;. Любой [[Детерминированные конечные автоматы| детерминированный конечный автомат]] &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, задающий этот язык, должен допускать &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;. Тогда при переходе из стартового состояния &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; по символам &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt; получится путь, оканчивающийся в одном из терминальных состояний.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Leftarrow&amp;lt;/tex&amp;gt;&lt;br /&gt;
:Пусть в автомате существует путь из стартового состояния в одно из допускающих. Рассмотрим последовательность символов на переходах, образующих этот путь. Строка из этой последовательности допускается автоматом, а значит, принадлежит языку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Алгоритм проверки языка на пустоту ===&lt;br /&gt;
&lt;br /&gt;
Для определения пустоты языка по соответствующему ему автомату проще всего использовать алгоритм [[Обход в глубину, цвета вершин|обхода в глубину]]. Язык не является пустым тогда и только тогда, когда при поиске из стартового состояния автомата окажется достижимой хотя бы одна терминальная вершина.&lt;br /&gt;
&lt;br /&gt;
== Совпадение регулярных языков ==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=equal&lt;br /&gt;
|definition=&lt;br /&gt;
Два [[Регулярные языки: два определения и их эквивалентность|регулярных языка]] '''совпадают''' (англ. ''coincide''), если любое слово или содержится в обоих языках, или не содержится ни в одном из них.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Для проверки совпадения языков достаточно запустить алгоритм проверки [[Эквивалентность_состояний_ДКА|эквивалентности]] задающих их автоматов.&lt;br /&gt;
&lt;br /&gt;
=== Пример проверки на совпадение регулярных языков===&lt;br /&gt;
Для того, чтобы узнать равен ли язык своему замыканию Клини, нужно проверить на [[Эквивалентность_состояний_ДКА|эквивалентность]] автомат, задающий язык, и автомат, задающий замыкание Клини языка. Если автоматы эквивалентны, то язык равен своему замыканию Клини.&lt;br /&gt;
&lt;br /&gt;
== Включение одного регулярного языка в другой ==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=inclusion&lt;br /&gt;
|definition=&lt;br /&gt;
[[Регулярные языки: два определения и их эквивалентность|Регулярный язык]] &amp;lt;tex&amp;gt;L_{1}&amp;lt;/tex&amp;gt; '''входит (включается)''' (англ. ''included'') в регулярный язык &amp;lt;tex&amp;gt;L_{2}&amp;lt;/tex&amp;gt;, если любое слово, принадлежащее &amp;lt;tex&amp;gt;L_{1}&amp;lt;/tex&amp;gt;, принадлежит &amp;lt;tex&amp;gt;L_{2}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Пусть автомат &amp;lt;tex&amp;gt;M_1&amp;lt;/tex&amp;gt; задаёт язык &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;, а автомат &amp;lt;tex&amp;gt;M_2&amp;lt;/tex&amp;gt; — язык &amp;lt;tex&amp;gt;L_1 \cap L_2&amp;lt;/tex&amp;gt;. Для проверки включения &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; достаточно проверить [[Эквивалентность_состояний_ДКА|эквивалентность]] &amp;lt;tex&amp;gt;M_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M_2&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Конечность регулярного языка, подсчёт числа слов ==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=finite&lt;br /&gt;
|definition=&lt;br /&gt;
[[Регулярные языки: два определения и их эквивалентность|Регулярный язык]] называется '''конечным''' (англ. ''finite''), если принадлежащее ему множество слов конечно.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|id=&lt;br /&gt;
regFinite&lt;br /&gt;
|statement=&lt;br /&gt;
[[Детерминированные конечные автоматы|Детерминированный конечный автомат]] &amp;lt;tex&amp;gt;A_{1}&amp;lt;/tex&amp;gt; задаёт конечный язык тогда и только тогда, когда в &amp;lt;tex&amp;gt;A_{1}&amp;lt;/tex&amp;gt; не существует состояния &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, для которого выполняются три условия:&lt;br /&gt;
* &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; достижимо из стартового состояния &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;;&lt;br /&gt;
* из &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; достижимо какое-либо из допускающих состояний;&lt;br /&gt;
* из &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; по одному или более переходам достижимо &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть такое состояние &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; существует, а строки &amp;lt;tex&amp;gt;x, y, z&amp;lt;/tex&amp;gt; таковы, что &amp;lt;tex&amp;gt;\langle s, xyz \rangle \vdash ^{*} \langle v, yz \rangle \vdash ^{*} \langle v, z \rangle \vdash ^{*} \langle t, \epsilon \rangle&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; — допускающее, &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; — непустая. Рассмотрим строки вида &amp;lt;tex&amp;gt;xy^{k}z, k \in \mathbb{N}&amp;lt;/tex&amp;gt;. Их бесконечное количество, и все они, как легко увидеть, допускаются автоматом. Значит, язык бесконечен.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пусть такого состояния не существует. Тогда любой путь из стартового состояния в какое-либо из допускающих является простым. Количество слов в языке равно количеству таких путей; количество путей, в свою очередь, ограничено &amp;lt;tex&amp;gt;n! | \Sigma |^{n-1}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; — количество состояний автомата: &amp;lt;tex&amp;gt;n!&amp;lt;/tex&amp;gt; — количество перестановок состояний, &amp;lt;tex&amp;gt;| \Sigma |^{n-1}&amp;lt;/tex&amp;gt; — количество совокупностей переходов по символам между ними. Таким образом, язык конечен.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Алгоритм нахождения числа слов в языке ===&lt;br /&gt;
&lt;br /&gt;
Доказанное утверждение позволяет свести задачу поиска числа слов в языке к поиску количества различных путей в ациклическом графе. Сначала с помощью [[Обход в глубину, цвета вершин|обхода в глубину]] по обратным рёбрам определим '''полезные''' состояния, из которых достижимо хотя бы одно допускающее. Затем найдём любой цикл, состояния которого полезны, достижимый из старта; при нахождении констатируем бесконечность языка. Пусть язык конечен; тогда отсортируем автомат [[Использование обхода в глубину для топологической сортировки|топологически]]. Введём функцию &amp;lt;tex&amp;gt;\mathrm{paths} (v)&amp;lt;/tex&amp;gt;, задающую число различных путей из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;; &amp;lt;tex&amp;gt;\mathrm{paths} (s) = 1&amp;lt;/tex&amp;gt;. Заметим, что если известны значения &amp;lt;tex&amp;gt;\mathrm{paths} (u)&amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, из которых существует переход в &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\mathrm{paths} (v) = \sum\limits_{u}\mathrm{paths} (u)&amp;lt;/tex&amp;gt;. Количеством слов в языке будет сумма &amp;lt;tex&amp;gt;\mathrm{paths} (t)&amp;lt;/tex&amp;gt; для всех допускающих &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Замкнутость регулярных языков относительно различных операций]]&lt;br /&gt;
* [[Теорема Клини (совпадение классов автоматных и регулярных языков)]]&lt;br /&gt;
* [[Доказательство нерегулярности языков: лемма о разрастании]]&lt;br /&gt;
&lt;br /&gt;
== Источики информации ==&lt;br /&gt;
&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — Москва: Издательский дом «Вильямс», 2002. — с. 169-177 — ISBN 5-8459-0261-4&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Автоматы и регулярные языки]]&lt;br /&gt;
[[Категория: Свойства конечных автоматов]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D1%82%D0%B8%D1%81%D0%B8%D0%BC%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D0%BE%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=83472</id>
		<title>Антисимметричное отношение</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D1%82%D0%B8%D1%81%D0%B8%D0%BC%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D0%BE%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=83472"/>
				<updated>2022-09-01T05:00:17Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Основные определения ==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
[[Бинарное отношение]] &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; на множестве &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; называется '''антисимметричным''' (англ. ''antisymmetric binary relation''), если для любых элементов &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; множества &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; из выполнения отношений &amp;lt;tex&amp;gt;aRb&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;bRa&amp;lt;/tex&amp;gt; следует равенство &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
:&amp;lt;tex&amp;gt;\forall a, b \in X,\ aRb \wedge bRa \; \Rightarrow \; a = b&amp;lt;/tex&amp;gt;&lt;br /&gt;
Или эквивалентное&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Бинарное отношение &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; на множестве &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; называется '''антисимметричным''', если для любых неравных элементов &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; множества &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; из выполнения отношения &amp;lt;tex&amp;gt;aRb&amp;lt;/tex&amp;gt; следует невыполнение отношения &amp;lt;tex&amp;gt;bRa&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
:&amp;lt;tex&amp;gt;\forall a, b \in X,\ aRb \wedge a \ne b \Rightarrow \lnot  bRa&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определение антисимметричного отношения как &amp;lt;tex&amp;gt; aRb \Rightarrow \neg bRa &amp;lt;/tex&amp;gt; является избыточным (и потому неверным), поскольку из такого определения также следует [[Рефлексивное_отношение| антирефлексивность]] R.&lt;br /&gt;
&lt;br /&gt;
Антисимметричность отношения не исключает симметричности. Существуют бинарные отношения:&lt;br /&gt;
*одновременно симметричные и антисимметричные (отношение равенства);&lt;br /&gt;
*ни симметричные, ни антисимметричные;&lt;br /&gt;
*симметричные, но не антисимметричные;&lt;br /&gt;
*антисимметричные, но не симметричные (&amp;quot;меньше или равно&amp;quot;, &amp;quot;больше или равно&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Антирефлексивное антисимметричное отношение иногда называют асимметричным. Следует различать эти два понятия. Формальное определение:&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
[[Бинарное отношение]] &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; на множестве &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; называется '''асимметричным''' (англ. ''asymmetric binary relation''), если для любых элементов &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; множества &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; одновременное выполнение отношений &amp;lt;tex&amp;gt;a R b&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b R a&amp;lt;/tex&amp;gt; невозможно.&lt;br /&gt;
}}&lt;br /&gt;
== Примеры антисимметричных отношений ==&lt;br /&gt;
&lt;br /&gt;
Примерами антисимметричных отношений являются, по определению, все отношения [[Отношение порядка|полного и частичного порядка]] (&amp;lt;tex&amp;gt; &amp;lt;, &amp;gt;, \leqslant,  \geqslant &amp;lt;/tex&amp;gt; и другие).&lt;br /&gt;
&lt;br /&gt;
Антисимметрично отношение делимости на натуральных числах (если &amp;lt;tex&amp;gt;a \mid b&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b \mid a&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;a=b&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Отношение включения на &amp;lt;tex&amp;gt;2^U&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;U&amp;lt;/tex&amp;gt; {{---}} универсум, антисимметрично  (&amp;lt;tex&amp;gt; A \subseteq B \wedge B \subseteq A \Rightarrow A = B&amp;lt;/tex&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Свойства антисимметричного отношения ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:antisym.png|400px|thumb|right|Граф антисимметричного отношения (не имеет кратных ребер)]]&lt;br /&gt;
[[Файл:nonantisym.png|400px|thumb|right|Граф отношения, не являющегося антисимметричным]]&lt;br /&gt;
Матрица смежности антисимметричного отношения может содержать единицы на главной диагонали, притом если элемент &amp;lt;tex&amp;gt;a_{ij}&amp;lt;/tex&amp;gt; матрицы равен единице, то элемент &amp;lt;tex&amp;gt;a_{ji}&amp;lt;/tex&amp;gt; равен нулю. &lt;br /&gt;
&lt;br /&gt;
Например, если &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; {{---}} матрица смежности отношения &amp;quot;&amp;lt;tex&amp;gt;\leqslant&amp;lt;/tex&amp;gt;&amp;quot; на &amp;lt;tex&amp;gt;X \subset N, X = \{1, 2, 3 ,4 , 5\}&amp;lt;/tex&amp;gt;; &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; {{---}} матрица смежности отношения делимости на том же множестве &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, то&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; A=\bordermatrix{&lt;br /&gt;
        &amp;amp; 1 &amp;amp; 2 &amp;amp; 3 &amp;amp; 4 &amp;amp; 5 \cr&lt;br /&gt;
      1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 1 \cr&lt;br /&gt;
      2 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 1 \cr&lt;br /&gt;
      3 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 1 \cr&lt;br /&gt;
      4 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 \cr&lt;br /&gt;
      5 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 \cr } &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; B=\bordermatrix{&lt;br /&gt;
        &amp;amp; 1 &amp;amp; 2 &amp;amp; 3 &amp;amp; 4 &amp;amp; 5 \cr&lt;br /&gt;
      1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 1 \cr&lt;br /&gt;
      2 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0 \cr&lt;br /&gt;
      3 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \cr&lt;br /&gt;
      4 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0 \cr&lt;br /&gt;
      5 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 \cr } &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ориентированный граф, изображающий антисимметричное отношение, не имеет двух дуг с противоположной ориентацией между двумя различными вершинами, однако в нём могут быть петли. &lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; {{---}} некоторые антисимметричные отношения, то антисимметричными также являются отношения:&lt;br /&gt;
#&amp;lt;tex&amp;gt;a\cap b&amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;a^{-1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;b^{-1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
Однако объединение и композиция &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; могут не сохранять антисимметричности.&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
* [[Бинарное отношение]]&lt;br /&gt;
* [[Симметричное отношение]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Антисимметричное_отношение Антисимметричное отношение {{---}} Википедия]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Antisymmetric_relation Антисимметричное отношение {{---}} статья на английской Википедии]&lt;br /&gt;
* [http://www.madi.ru/study/kafedra/asu_new/metod_new/mil/tpr09_13.shtml#1 Статья на сайте МАДИ]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Asymmetric_relation Wikipedia | Asymmetric relation]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Отношения]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%95%D0%B4%D0%B8%D0%BD%D0%B8%D1%86%D1%8B_(%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%B8%D0%BC%D1%8B%D0%B5_%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D1%8B),_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%B0_%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%B8%D0%BC%D1%8B%D1%85_%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2&amp;diff=83471</id>
		<title>Единицы (обратимые элементы), группа обратимых элементов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%95%D0%B4%D0%B8%D0%BD%D0%B8%D1%86%D1%8B_(%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%B8%D0%BC%D1%8B%D0%B5_%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D1%8B),_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%B0_%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%B8%D0%BC%D1%8B%D1%85_%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2&amp;diff=83471"/>
				<updated>2022-09-01T05:00:07Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;b&amp;gt;Обратимый элемент(единица кольца)&amp;lt;/b&amp;gt; - называется &amp;lt;tex&amp;gt;a\in R&amp;lt;/tex&amp;gt;, где  &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt;-[[Определение кольца, подкольца, изоморфизмы колец|кольцо]], для которого существует обратный элемент, то есть такой элемент &amp;lt;tex&amp;gt;b \in R&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;a\cdot b=b\cdot a=e&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Множество всех обратимых элементов кольца образует мультипликативную [[Группа|группу]], называемую &amp;lt;b&amp;gt;группой обратимых элементов&amp;lt;/b&amp;gt;.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BC%D0%B5%D0%BD%D1%8C%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8_%D0%B2_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B5_RP,_%D1%81%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%B8_%D1%81%D0%BB%D0%B0%D0%B1%D0%BE%D0%B5_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=83470</id>
		<title>Уменьшение ошибки в классе RP, сильное и слабое определение</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BC%D0%B5%D0%BD%D1%8C%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8_%D0%B2_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B5_RP,_%D1%81%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%B8_%D1%81%D0%BB%D0%B0%D0%B1%D0%BE%D0%B5_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=83470"/>
				<updated>2022-09-01T05:00:01Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Определение классов &amp;lt;tex&amp;gt;RP, RP_1, RP_2&amp;lt;/tex&amp;gt;==&lt;br /&gt;
Множество языков [[Сложностные_классы_RP_и_coRP |'''RP''']] определяется следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;RP = \{L \mid \exists m:  P(m(x) = 1 \mid x \in L) \geq \frac{1}{2}, P(m(x) = 0 \mid x \notin L) = 1\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определим множества языков &amp;lt;tex&amp;gt;RP_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;RP_2&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;RP_1 = \{L \mid \exists m:  P(m(x) = 1 \mid x \in L) \geq \frac{1}{p(|x|)}, P(m(x) = 0 \mid x \notin L) = 1\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;RP_2 = \{L \mid \exists m:  P(m(x) = 1 \mid x \in L) \geq 1 - \frac{1}{2^{p(|x|)}}, P(m(x) = 0 \mid x \notin L) = 1\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных определениях &amp;lt;tex&amp;gt;p(|x|)&amp;lt;/tex&amp;gt; &amp;amp;mdash; некий полином, а &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; &amp;amp;mdash; [[Вероятностные машины Тьюринга | вероятностная машина Тьюринга]], время работы которой в худшем случае составляет полином от длины входа.&lt;br /&gt;
&lt;br /&gt;
В классе &amp;lt;tex&amp;gt;RP_1&amp;lt;/tex&amp;gt; ослаблено ограничение на вероятность ошибки ответа, а в классе &amp;lt;tex&amp;gt;RP_2&amp;lt;/tex&amp;gt; усилено. Соответственно &amp;lt;tex&amp;gt;RP_1&amp;lt;/tex&amp;gt; называется слабым определением класса &amp;lt;tex&amp;gt;RP&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;RP_2&amp;lt;/tex&amp;gt; &amp;amp;mdash; сильным.&lt;br /&gt;
&lt;br /&gt;
==Доказательство эквивалентности определений==&lt;br /&gt;
Включение &amp;lt;tex&amp;gt;RP_2 \subset RP \subset RP_1&amp;lt;/tex&amp;gt; очевидно, следовательно осталось доказать обратное включение &amp;lt;tex&amp;gt;RP_1 \subset RP \subset RP_2&amp;lt;/tex&amp;gt;. Доказательство данного утверждения проводится с помощью метода уменьшения ошибки в классе &amp;lt;tex&amp;gt;RP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Докажем включение &amp;lt;tex&amp;gt;RP_1 \subset RP&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выясним, сколько раз требуется запустить машину Тьюринга &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;RP_1&amp;lt;/tex&amp;gt;, для того, чтобы вероятность ошибки была меньше &amp;lt;tex&amp;gt;\frac{1}{2}&amp;lt;/tex&amp;gt;. Запустим машину &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; раз, тогда вероятность ошибки составит &amp;lt;tex&amp;gt;(1 - \frac{1}{p(n)})^k&amp;lt;/tex&amp;gt;. Получим неравенство: &amp;lt;tex&amp;gt;(1 - \frac{1}{p(n)})^k &amp;lt; \frac{1}{2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Логарифмируя, сведем к следующему: &amp;lt;tex&amp;gt;k\ ln(1 - \frac{1}{p(n)}) &amp;lt; ln(\frac{1}{2})&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Разложив логарифм в левой части в ряд, получим: &amp;lt;tex&amp;gt;k(-\frac{1}{p(n)} + o(\frac{1}{p(n)})) &amp;lt; ln(\frac{1}{2})&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Откуда &amp;lt;tex&amp;gt;k &amp;gt; p(n)ln(2)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; &amp;amp;mdash; длина входа. То есть при &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, удовлетворяющем полученному неравенству, вероятность ошибки не будет превышать &amp;lt;tex&amp;gt;\frac{1}{2}&amp;lt;/tex&amp;gt;, а значит &amp;lt;tex&amp;gt;RP_1 \subset RP&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Докажем включение &amp;lt;tex&amp;gt;RP \subset RP_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Доказательство проводится аналогично приведенному в первой части. Запустим машину &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;RP&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; раз. С учетом ограничения, введенного в определении класса &amp;lt;tex&amp;gt;RP_2&amp;lt;/tex&amp;gt;, получим неравенство: &amp;lt;tex&amp;gt;(\frac{1}{2})^k &amp;lt; \frac{1}{2^{p(n)}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Прологарифмировав и сократив обе части неравенства на &amp;lt;tex&amp;gt;ln(\frac{1}{2})&amp;lt;/tex&amp;gt;, получим неравенство: &amp;lt;tex&amp;gt;k &amp;gt; p(n)&amp;lt;/tex&amp;gt;. То есть машина &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;, запущенная &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; раз, выдает неверный ответ с вероятностью, удовлетворяющей определению класса &amp;lt;tex&amp;gt;RP_2&amp;lt;/tex&amp;gt;, а значит &amp;lt;tex&amp;gt;RP \subset RP_2&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Эквивалентность определений класса &amp;lt;tex&amp;gt;RP&amp;lt;/tex&amp;gt; доказана.&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%A8%D0%B5%D0%BB%D0%BB%D0%B0&amp;diff=83469</id>
		<title>Сортировка Шелла</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%A8%D0%B5%D0%BB%D0%BB%D0%B0&amp;diff=83469"/>
				<updated>2022-09-01T04:59:55Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''''Сортировка Шелла''''' (англ. Shellsort) — алгоритм сортировки, являющийся усовершенствованным вариантом [[Сортировка вставками|сортировки вставками]]. &lt;br /&gt;
&lt;br /&gt;
==Алгоритм==&lt;br /&gt;
Каждый проход в алгоритме характеризуется смещением &amp;lt;tex&amp;gt;h_i&amp;lt;/tex&amp;gt;, таким, что сортируются элементы отстающие друг от друга на &amp;lt;tex&amp;gt;h_i&amp;lt;/tex&amp;gt; позиций.&lt;br /&gt;
Шелл предлагал использовать &amp;lt;tex&amp;gt;h_t = N/2&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;h_{t-1} = h_t/2&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt; , &amp;lt;tex&amp;gt;h_0 = 1&amp;lt;/tex&amp;gt;. Возможны и другие смещения, но &amp;lt;tex&amp;gt;h_0 = 1&amp;lt;/tex&amp;gt; всегда.&lt;br /&gt;
&lt;br /&gt;
* Начало.&lt;br /&gt;
* '''Шаг 0.''' &amp;lt;tex&amp;gt;i = t&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* '''Шаг 1.''' Разобьем массив на списки элементов, отстающих друг от друга на &amp;lt;tex&amp;gt;h_i&amp;lt;/tex&amp;gt;. Таких списков будет &amp;lt;tex&amp;gt;h_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* '''Шаг 2.''' Отсортируем элементы каждого списка [[Сортировка вставками|сортировкой вставками]].&lt;br /&gt;
* '''Шаг 3.''' Объединим списки обратно в массив. Уменьшим &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; неотрицательно — вернемся к шагу 1&lt;br /&gt;
* Конец.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
Возьмем массив &amp;lt;tex&amp;gt;A= \{&amp;lt;/tex&amp;gt; ''56, 43, 12, 78, 42, 93, 16, 55'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; и смещения предложенные Шеллом.&lt;br /&gt;
{| style=&amp;quot;background-color:#CCC;margin:0.5px&amp;quot;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| До&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| После&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| Описание шага&lt;br /&gt;
|-&lt;br /&gt;
| ''Шаг 1'' &amp;lt;tex&amp;gt;i = t = 2&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| ''56, 43, 12, 78, 42, 93, 16, 55''&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''56, 42'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''43, 93'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''12, 16'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''78, 55'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| Разбили массив на 4 списка.&lt;br /&gt;
|-&lt;br /&gt;
| ''Шаг 2''&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''56, 42'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''43, 93'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''12, 16'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''78, 55'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''42, 56'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''43, 93'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''12, 16'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''55, 78'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| Отсортировали элементы списков сортировкой вставками. Количество обменов 2.&lt;br /&gt;
|-&lt;br /&gt;
| ''Шаг 3''&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''42, 56'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''43, 93'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''12, 16'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''55, 78'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| ''42, 43, 12, 55, 56, 93, 16, 78''&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| Объединили списки в массив. Уменьшаем &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; на 1. &amp;lt;tex&amp;gt;i \geqslant 0&amp;lt;/tex&amp;gt;, перейдем к шагу 1.&lt;br /&gt;
|-&lt;br /&gt;
| ''Шаг 1'' &amp;lt;tex&amp;gt;i = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| ''42, 43, 12, 55, 56, 93, 16, 78''&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''42, 12, 56, 16'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''43, 55, 93, 78'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| Разбили массив на 2 списка.&lt;br /&gt;
|-&lt;br /&gt;
| ''Шаг 2''&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''42, 12, 56, 16'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''43, 55, 93, 78'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''12, 16, 42, 56'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''43, 55, 78, 93'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| Отсортировали элементы списков сортировкой вставками. Количество обменов 4.&lt;br /&gt;
|-&lt;br /&gt;
| ''Шаг 3''&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''12, 16, 42, 56'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''43, 55, 78, 93'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| ''12, 43, 16, 55, 42, 78, 56, 93''&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| Объединили списки в массив. Уменьшаем &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; на 1. &amp;lt;tex&amp;gt;i \geqslant 0&amp;lt;/tex&amp;gt;, перейдем к шагу 1.&lt;br /&gt;
|-&lt;br /&gt;
| ''Шаг 1'' &amp;lt;tex&amp;gt;i = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| ''42, 43, 12, 55, 56, 93, 16, 78''&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''42, 43, 12, 55, 56, 93, 16, 78'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| Разбили массив на 1 список.&lt;br /&gt;
|-&lt;br /&gt;
| ''Шаг 2''&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''42, 43, 12, 55, 56, 93, 16, 78'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''12, 16, 42, 43, 55, 56, 78, 93'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| Отсортировали элементы списков сортировкой вставками. Количество обменов 7.&lt;br /&gt;
|-&lt;br /&gt;
| ''Шаг 3''&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''12, 16, 42, 43, 55, 56, 78, 93'' &amp;lt;tex&amp;gt;\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| ''12, 16, 42, 43, 55, 56, 78, 93''&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 10px&amp;quot;| Объединили списки в массив. Уменьшаем &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; на 1. &amp;lt;tex&amp;gt;i&amp;lt;0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
==Анализ метода Шелла==&lt;br /&gt;
Понятно, что сложность алгоритма зависит от оптимальности выбора набора &amp;lt;tex&amp;gt;h_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Массив, где для любого &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; верно &amp;lt;tex&amp;gt; a_i \leqslant a_{i+h}&amp;lt;/tex&amp;gt;, назовем &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt; упорядоченным.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|id=teotema1&lt;br /&gt;
|author= Д.Х. Ханту&lt;br /&gt;
|statement=&lt;br /&gt;
Среднее число инверсий в &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt; упорядоченной перестановке множества &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; ''1, 2, &amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt; , &amp;lt;tex&amp;gt;n \}&amp;lt;/tex&amp;gt; равно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; f(n,h) = \dfrac{2^{2q-1}q!q!}{(2q+1)!}(\binom{h}{2}q(q+1) + \binom{r}{2}(q+1)-1/2\binom{h-r}{2}q) &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;q = \frac{n}{h} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; r = n\,\bmod\,h &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Следующая лемма является следствием теоремы выше.&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=sledstvie1&lt;br /&gt;
|about=&lt;br /&gt;
|statement=&lt;br /&gt;
Если последовательность смещений &amp;lt;tex&amp;gt;h_{t-1}, \ldots , h_1, h_0&amp;lt;/tex&amp;gt;, удовлетворяют условию &amp;lt;tex&amp;gt; h_{s+1}\,\bmod\,h_s = 0&amp;lt;/tex&amp;gt; при &amp;lt;tex&amp;gt;t-1&amp;gt;s\geqslant0&amp;lt;/tex&amp;gt;, то среднее число операций равно &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;D = \sum_{t-1&amp;gt;s\geqslant0}^{} (r_sf(q_s+1,h_{s+1}/h_s) + (h_s - r_s)f(q_s,h_{s+1}/h_s))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;r_s=N\,\bmod\,h_s&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;q_s = \frac{N}{h_s}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; h_t = Nh_{t-1}&amp;lt;/tex&amp;gt;, а функция &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; определяется формулой из теоремы.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Доказательство данных теоремы и леммы изложено в книге, предложенной к прочтению.&lt;br /&gt;
&lt;br /&gt;
В первом приближении функция &amp;lt;tex&amp;gt;f(n,h)&amp;lt;/tex&amp;gt; равна &amp;lt;tex&amp;gt; (\sqrt{\pi}/8)n^{3/2}h^{1/2}&amp;lt;/tex&amp;gt;. Следовательно &amp;lt;tex&amp;gt;D&amp;lt;/tex&amp;gt; для двух проходов будет примерно пропорционально &amp;lt;tex&amp;gt;2N^2/h+\sqrt{\pi N^3h}&amp;lt;/tex&amp;gt;. Поэтому наилучшее значение &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt; равно приблизительно &amp;lt;tex&amp;gt;\sqrt[3]{16N/ {\pi}} \approx 1.72\sqrt[3]{N}&amp;lt;/tex&amp;gt;, при таком выборе &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt; среднее время сортировки пропорционально &amp;lt;tex&amp;gt;N^{5/3}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, применяя метод Шелла и используя всего 2 прохода, можно сократить  время по сравнению с методом простых вставок с &amp;lt;tex&amp;gt;O(N^2)&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;O(N^{1.(6)})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Используя приведенные выше формулы, порог &amp;lt;tex&amp;gt;N^{1.5}&amp;lt;/tex&amp;gt; преодолеть невозможно, но если убрать ограничение &amp;lt;tex&amp;gt; h_{s+1}\,\bmod\,h_s = 0&amp;lt;/tex&amp;gt; его можно преодолеть.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|id=teotema2&lt;br /&gt;
|author= А.А. Папернов, Г.В. Стасевич&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;h_s=2^{s+1}-1&amp;lt;/tex&amp;gt; при &amp;lt;tex&amp;gt;0 \leqslant s &amp;lt; t = \left \lfloor \ln  N \right \rfloor&amp;lt;/tex&amp;gt;, то время сортировки есть &amp;lt;tex&amp;gt;O(N^{3/2})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Достаточно найти оценку числа перезаписей &amp;lt;tex&amp;gt;B_s&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; проходе, такую, что бы &amp;lt;tex&amp;gt;B_{t-1}+\ldots +B_0=O(N^{3/2})&amp;lt;/tex&amp;gt;. Для первых &amp;lt;tex&amp;gt;t/2&amp;lt;/tex&amp;gt; проходов при &amp;lt;tex&amp;gt; t&amp;gt;s\geqslant t/2&amp;lt;/tex&amp;gt; можно воспользоваться оценкой &amp;lt;tex&amp;gt;B_s=O(h_s(N/h_s)^2)&amp;lt;/tex&amp;gt;, а для последующих проходов &amp;lt;tex&amp;gt;B_s=O(Nh_{s+2}h_{s+1}/h_s)&amp;lt;/tex&amp;gt;, следовательно &amp;lt;tex&amp;gt;B_{t-1}+\ldots +B_0=O(N(2+2^2+\ldots +2^{t/2}+2^{t/2}+\ldots +2^2+2))=O(N^{3/2})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
Важно, что эта теорема дает оценку времени выполнения алгоритма в худшем случае.&lt;br /&gt;
&lt;br /&gt;
Дальнейшее улучшение было получено Волганом Праттом. Если все смещения при сортировке выбираются из множества чисел вида &amp;lt;tex&amp;gt;2^p3^q&amp;lt;/tex&amp;gt;, меньших &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;, то время выполнения алгоритма будет порядка &amp;lt;tex&amp;gt;O(N\log^2{N})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Сортировка выбором]]&lt;br /&gt;
* [[Сортировка вставками]]&lt;br /&gt;
* [[Быстрая сортировка]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* Дональд Кнут — Искусство программирования, том 3. Сортировка и поиск = The Art of Computer Programming, vol.3. Sorting and Searching. — 2-е изд. — М.: «Вильямс», 2007. — 824 с. — ISBN 5-8459-0082-4&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%A8%D0%B5%D0%BB%D0%BB%D0%B0 Сортировка Шелла — Википедия]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Сортировка]]&lt;br /&gt;
[[Категория: Сортировка на сравнениях]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0,_%D0%94%D0%9F_%D0%BF%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0%D0%BC&amp;diff=83468</id>
		<title>Задача комивояжера, ДП по подмножествам</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BA%D0%BE%D0%BC%D0%B8%D0%B2%D0%BE%D1%8F%D0%B6%D0%B5%D1%80%D0%B0,_%D0%94%D0%9F_%D0%BF%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0%D0%BC&amp;diff=83468"/>
				<updated>2022-09-01T04:59:49Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формулировка задачи: ==&lt;br /&gt;
Коммивояжер должен посетить N городов, побывав в каждом из них ровно по одному разу и завершив путешествие в том городе, с которого он начал. В какой последовательности ему нужно обходить города, чтобы общая длина его пути была наименьшей?&lt;br /&gt;
[[Категория:Удалить]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%B3%D1%80%D0%B5%D1%88%D0%BD%D0%BE%D1%81%D1%82%D1%8C&amp;diff=83467</id>
		<title>Относительная погрешность</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%B3%D1%80%D0%B5%D1%88%D0%BD%D0%BE%D1%81%D1%82%D1%8C&amp;diff=83467"/>
				<updated>2022-09-01T04:59:43Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; является точным значением искомой величины, а &amp;lt;tex&amp;gt;a^*&amp;lt;/tex&amp;gt; &amp;amp;mdash; приближенным значением. &lt;br /&gt;
Тогда величина &lt;br /&gt;
:&amp;lt;tex&amp;gt;\delta(a^*) = \frac{\Delta(a^*)}{|a|} \approx \frac{\Delta(a^*)}{|a^*|}&amp;lt;/tex&amp;gt; &lt;br /&gt;
называется '''относительной погрешностью'''.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Относительная погрешность является безразмерной величиной, либо измеряется в процентах.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Численные методы]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BF%D0%B8c%D0%BE%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B9_%D0%BF%D0%BE_%D0%94%D0%9C_2016_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0&amp;diff=83466</id>
		<title>Спиcок заданий по ДМ 2016 весна</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BF%D0%B8c%D0%BE%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B9_%D0%BF%D0%BE_%D0%94%D0%9C_2016_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0&amp;diff=83466"/>
				<updated>2022-09-01T04:59:38Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;wikitex&amp;gt;&lt;br /&gt;
# Чему равна вероятность, что две случайно вытянутые кости домино можно приложить друг к другу по правилам домино?&lt;br /&gt;
# Чему равна вероятность, что на двух брошенных честных игральных костях выпадут числа, одно из которых делит другое?&lt;br /&gt;
# Чему равна вероятность, что если вытянуть из колоды две случайные карты, одной из них можно побить другую (одна из мастей назначена козырем, картой можно побить другую, если они одинаковой масти или если одна из них козырь)?&lt;br /&gt;
# Чему равна вероятность, что на двадцати брошенных честных монетах выпадет поровну нулей и единиц?&lt;br /&gt;
# Петя и Вася три раза бросают по одной честной игровой кости. Вася два раза выкинул строго больше, чем Петя, а один раз строго меньше. При этом Петя в сумме выкинул строго больше, чем Вася. С какой вероятностью такое могло произойти?&lt;br /&gt;
# Петя собирается смотреть серию матчей финала Флатландской хоккейной лиги. В финале две команды играют до 5 побед, ничьих не бывает, таким образом максимум в финале будет не более 9 матчей. Вася рассказал Пете, что всего в финале было 7 матчей. Петя считает матч интересным, если перед его просмотром он не знает, кто выиграет финал. Какова вероятность, что будет хотя бы 5 интересных матчей?&lt;br /&gt;
# Петя собирается смотреть серию матчей финала Флатландской хоккейной лиги. В финале две команды играют до 5 побед, ничьих не бывает, таким образом максимум в финале будет не более 9 матчей. Вася рассказал Пете, что всего в финале было 7 матчей. Петя считает матч зрелищным, если перед его просмотром он не знает, кто его выиграет. Какова вероятность, что будет хотя бы 5 зрелищных матчей?&lt;br /&gt;
# Приведите пример событий, независимых попарно, но зависимых в совокупности&lt;br /&gt;
# Приведите пример трех событий, для которых $P(A \cap B \cap C) = P(A)P(B)P(C)$, но которые не являются независимыми, причем вероятности всех трех событий больше 0&lt;br /&gt;
# Доказать или опровергнуть, что для независимых событий $A$ и $B$ и события $C$, где $P(C) &amp;gt; 0$ выполнено $P(A \cap B|C) = P(A|C)P(B|C)$&lt;br /&gt;
# Доказать или опровергнуть, что для независимых событий $A$ и $B$ и события $C$, где $P(A) &amp;gt; 0$, $P(B) &amp;gt; 0$ выполнено $P(C|A \cap B) = P(C|A)P(C|B)$&lt;br /&gt;
# Рассмотрим множество костей домино (неупорядоченные пары $(i, j)$, где $i$ и $j$ от 0 до 6, всего костей 28). Можно ли вероятностное пространство костей домино естественным образом представить как прямое произведение вероятностных пространств?&lt;br /&gt;
# Доказать или опровергнуть: если $P(A|B) = P(B|A)$, то $P(A) = P(B)$&lt;br /&gt;
# Доказать или опровергнуть: если $P(A|B) = P(B|A)$, то $A$ и $B$ независимы&lt;br /&gt;
# Доказать или опровергнуть: если $P(A|C) = P(B|C)$, то $P(C|A) = P(C|B)$&lt;br /&gt;
# Доказать или опровергнуть: если $A$ и $B$ независимы, то $\Omega \setminus A$ и $\Omega \setminus B$ независимы&lt;br /&gt;
# Перемножим счетное число вероятностных пространств, соответствующих честным монетам. Что получится? Как бы вы ввели на результате вероятностную меру?&lt;br /&gt;
# Найдите математическое ожидание и дисперсию значения на нечестной монете&lt;br /&gt;
# Найдите распределение и математическое ожидание следующей случайной величины: число бросков нечестной монеты до первого выпадения 1.&lt;br /&gt;
# Найдите распределение и математическое ожидание следующей случайной величины: число бросков честной монеты до второго выпадения 1.&lt;br /&gt;
# Докажите, что если $f$ и $g$ независимы, то для любых $a$ и $b$ события $[f = a]$ и $[g = b]$ независимы&lt;br /&gt;
# Случайные величины f, g и h называются независимыми в совокупности, если для любых a, b и c события [f &amp;lt;= a], [g &amp;lt;= b] и [h &amp;lt;= c] независимы. Приведите пример независимых попарно, но не независимых в совокупности случайных величин&lt;br /&gt;
# Случайные величины f, g и h называются независимыми в совокупности, если для любых a, b и c события [f &amp;lt;= a], [g &amp;lt;= b] и [h &amp;lt;= c] независимы. Приведите пример независимых попарно, но не независимых в совокупности случайных величин, запрещается использовать величины, пропорциональные индикаторным случайным величинам событий &lt;br /&gt;
# Найдите математическое ожидание числа инверсий в перестановке чисел от 1 до $n$&lt;br /&gt;
# Найдите математическое ожидание числа подъемов в перестановке чисел от 1 до $n$&lt;br /&gt;
# Найдите математическое ожидание числа троек $i$, $j$, $k$, где $i &amp;lt; j &amp;lt; k$ и $a[i] &amp;lt; a[j] &amp;lt; a[k]$ в перестановке чисел от 1 до $n$&lt;br /&gt;
# Предложите метод генерации случайной перестановки порядка $n$ с равновероятным распределением всех перестановок, если мы умеем генерировать равномерно распределенное целое число от 1 до $k$ для любых небольших $k$ ($k = O(n)$). &lt;br /&gt;
# Дает ли следующий метод равномерную генерацию всех перестановок? &amp;quot;p = [1, 2, ..., n]; for i from 1 to n: swap(p[i], p[random(1..n)] )&amp;quot;&lt;br /&gt;
# Дает ли следующий метод равномерную генерацию всех перестановок? &amp;quot;p = [1, 2, ..., n];  for i from 1 to n: swap(p[random(1..n)], p[random(1..n)] )&amp;quot;&lt;br /&gt;
# Предложите метод генерации случайного сочетания из $n$ по $k$ с равновероятным распределением всех сочетаний, если мы умеем генерировать равномерно распределенное целое число от 1 до $t$ для любых небольших $t$ ($t = O(n)$)&lt;br /&gt;
# Предложите метод генерации случайного сочетания из $n$ по $k$ с равновероятным распределением всех сочетаний, если мы умеем генерировать равномерно распределенное целое число от 1 до $t$ для любых небольших $t$ ($t = O(n)$), использующий $O(k)$ времени и памяти.&lt;br /&gt;
# Найдите математическое ожидание и дисперсию значения на честной игральной кости&lt;br /&gt;
# Верно ли, что если $\xi$ и $\eta$ - независимые случайные величины, то таким будут и $f(\xi)$ и $g(\eta)$ для любых функций $f$ и $g$?&lt;br /&gt;
# Постройте случайную величину, имеющую конечное математическое ожидание и бесконечную дисперсию.&lt;br /&gt;
# Оцените вероятность, что значение на игральной кости отличается от матожидания больше чем на 2 с помощью неравенства Чебышева. Какова погрешность оценки?&lt;br /&gt;
# Докажите, что вероятность того, что значения на двух нечестных игральных костях совпадает, не меньше $1/6$.&lt;br /&gt;
# Найдите дисперсию следующей случайной величины: число бросков честной монеты до первого выпадения 1.&lt;br /&gt;
# Найдите дисперсию следующей случайной величины: число бросков честной монеты до $k$-го выпадения 1.&lt;br /&gt;
# Докажите, что корреляция случайных величин лежит в диапазоне от -1 до 1&lt;br /&gt;
# Докажите или опровергните, что корреляция случайных величин равна 0 тогда и только тогда, когда они независимы&lt;br /&gt;
# Докажите, что корреляция случайных величин равна 1 тогда и только тогда, когда они линейно зависимы $(f = cg)$ и $c &amp;gt; 0$ (если $c &amp;lt; 0$, то корелляция равна -1)&lt;br /&gt;
# Петя и Вася играют в игру. Они бросают честную монету, и выписывают результаты бросков. У каждого из игроков есть критерий победы, выигрывает тот, чей критерий наступит раньше. Петя выигрывает в тот момент, когда результаты последних двух бросков равны 11. Вася выигрывает, когда результаты последних двух бросков равны 00. С какой вероятностью Петя выиграет?&lt;br /&gt;
# Петя и Вася играют в игру. Они бросают честную монету, и выписывают результаты бросков. У каждого из игроков есть критерий победы, выигрывает тот, чей критерий наступит раньше. Петя выигрывает в тот момент, когда результаты последних двух бросков равны 01. Вася выигрывает, когда результаты последних двух бросков равны 00. С какой вероятностью Петя выиграет?&lt;br /&gt;
# Петя и Вася играют в игру. Они бросают честную монету, и выписывают результаты бросков. У каждого из игроков есть критерий победы, выигрывает тот, чей критерий наступит раньше. Петя выигрывает в тот момент, когда результаты последних двух бросков равны 01. Вася выигрывает, когда результаты последних двух бросков равны 00. С какой вероятностью Петя выиграет?&lt;br /&gt;
# Можно ли сделать игру в предыдущем задании честной (чтобы вероятности выигрышей оказались равны $1/2$), используя нечестную монету?&lt;br /&gt;
# По аналогии с доказательством на лекции, докажите оценку на отклонение суммы $n$ честных монет от $n/2$ вниз: $P(\xi \le (1-\delta)n/2) \le \exp(-\delta^2/(4n))$.&lt;br /&gt;
# Используйте метод границы Чернова, чтобы следующее. Пусть нечестную монету с вероятностью выпадения 1 равной p бросили $n$ раз. Обозначим случайную величину &amp;quot;число выпавших единиц&amp;quot; как $\xi$. Тогда $P(\xi \le n/2) \le exp(-\frac{1}{2p}n\left(p-\frac{1}{2}\right)^2)$.&lt;br /&gt;
# Сколько байт в бите?&lt;br /&gt;
# Докажите, что для монеты энтропия максимальна в случае честной монеты&lt;br /&gt;
# Докажите, что для n исходов энтропия максимальна если они все равновероятны&lt;br /&gt;
# Зафиксируйте ваш любимый язык программирования. Колмогоровской сложностью $K(x)$ для слова $x$ называется длина минимальной программы, которая выводит слово $x$. Докажите, что колмогоровская сложность не превышает $n H(x) + O(\log n)$, где $n$ - длина строки $x$, $H(x)$ - энтропия случайного источника с распределением соответствующим частотам встречания символов в $x$, константа в $O$, не зависит от слова $x$ (но может зависеть от выбранного языка программирования)&lt;br /&gt;
# Докажите, что для любого $c &amp;gt; 0$ найдется слово, для которого $K(x) &amp;lt; c n H(x)$&lt;br /&gt;
# Пусть заданы полные системы событий $A = \{a_1, ..., a_n\}$ и $B = \{b_1, ..., b_m\}$. Определим условную энтропию $H(A | B)$ как $-\sum\limits_{i = 1}^m P(b_i) \sum\limits_{j = 1}^n P(a_j | b_i) \log P(a_j | b_i))$. Докажите, что $H(A | B) + H(B) = H(B | A) + H(A)$&lt;br /&gt;
# Что можно сказать про $H(A | B)$ если $a_i$ и $b_j$ независимы для любых $i$ и $j$?&lt;br /&gt;
# Что можно сказать про $H(A | A)$?&lt;br /&gt;
# Петя хочет пойти в кино с вероятностью ровно 1/3, а у него есть только честная монета. Может ли он осуществить свой замысел?&lt;br /&gt;
# Решите предудыщее задание для любой дроби $0 \le p/q \le 1$.&lt;br /&gt;
# Постройте схему получения вероятности 1/3 с помощью честной монеты, имеющую минимальное математическое ожидание числа бросков. Докажите оптимальность вашей схемы.&lt;br /&gt;
# Рассмотрим случайное блуждание точки на прямой, пусть точка начинает в точке $p$ ($p$ - целое) и каждую секунду переходит равновероятно на 1 влево или вправо. Точка поглощается в точках 0 и $n$ ($n$ целое, больше $p$). Найдите вероятность поглощения в точке 0.&lt;br /&gt;
# Рассмотрим случайное блуждание точки на прямой, пусть точка начинает в точке 0  и каждую секунду переходит равновероятно на 1 влево или вправо. Докажите, что математическое ожидание максимума координаты точки за $n$ шагов есть $O(\sqrt{n})$.&lt;br /&gt;
# Дана марковская цепь с двумя состояниями и вероятностью перехода из 1 в 2 равной $a$, вероятностью перехода из 2 в 1 равной $b$. Найдите в явном виде $n$-ю степень матрицы переходов.&lt;br /&gt;
# Петя и Вася играют в игру. Они бросают честную монету, и выписывают результаты бросков. У каждого из игроков есть критерий победы, выигрывает тот, чей критерий наступит раньше. Петя выигрывает в тот момент, когда результаты последних двух бросков равны 0101. Вася выигрывает, когда результаты последних двух бросков равны 000. С какой вероятностью Петя выиграет?&lt;br /&gt;
# Предложите решение предыдущей задачи для произвольных выигрышных строк Васи и Пети (за полином от суммы длин этих строк).&lt;br /&gt;
# Петя и Вася играют в игру. Они бросают честную монету, и выписывают результаты бросков. У каждого из игроков есть критерий победы, выигрывает тот, чей критерий наступит раньше. Петя выигрывает в тот момент, когда результаты последних двух бросков равны 001. Какую строку длины 3 оптмально выбрать Васе, чтобы его вероятность выигрыша была максимальна?&lt;br /&gt;
# Предложите решение предыдущей задачи для произвольной выигрышной строки Пети (за полином от длины этой строки).&lt;br /&gt;
# Пусть последовательно генерируется последовательность из 0 и 1 длины $n$. Каждый элемент последовательности определяется с помощью броска честной монеты. Определите, с какой вероятностью некоторый префикс этой последовательности представляет собой запись двоичного числа, которое делится на 3.&lt;br /&gt;
# Пусть последовательно генерируется последовательность из 0 и 1 длины $n$. Каждый элемент последовательности определяется с помощью броска честной монеты. Предложите алгоритм определния, с какой вероятностью некоторый префикс этой последовательности представляет собой запись двоичного числа, которое делится на $p$ для заданного целого $p$.&lt;br /&gt;
# Для симуляции распределения двумя исходами с вероятностями $p/q$ и $1-p/q$, где $p$ и $q$ целые, с помощью честной монеты можно использовать метод с делением отрезка [0-1], изложенный на лекции, а можно использовать поглощающую марковскую цепь &amp;quot;пьяницы на прямой&amp;quot; с $q+1$ вершиной. Проведите сравнительный анализ этих двух методов.&lt;br /&gt;
# Докажите, что математическое ожидание числа экспериментов при симуляции одного распределения другим асимптотически пропорционально отношению энтропий распределений (считайте, что энтропия симулируемого распределения больше).&lt;br /&gt;
# Постройте регулярную Марковскую цепь с двумя состояниями и эргодическим распределением $[a, 1-a]$ для заданного $a$.&lt;br /&gt;
# Постройте регулярную Марковскую цепь с $n$ состояниями и заданным распределением.&lt;br /&gt;
# В случае, если НОД длин циклов единственного эргодического класса не равен 1, соотвтствующая Марковская цепь будет периодической и эргодического распреления не будет. Тем не менее, что можно сказать про распределения в моменты с заданным остатком по модулю НОД длин циклов?&lt;br /&gt;
# Завершите доказательство леммы из эргодической теоремы для регулярных цепей. Докажите, что если $P$ - матрица переходов, не содержащая нулей, то для любого вектора $u$ с максимальным элементом $M$ и минимальным элементом $m$ максимальный и минимальный элементы $Pu$ $M'$ и $m'$, соответственно, удовлетворяют условиям $m \le m'$, $M \ge M'$, $M'-m' \le (M - m)(1 - 2\varepsilon)$, где $\varepsilon$ - минимальный элемент $P$.&lt;br /&gt;
# В этом и последующих заданиях необходимо подробно изложить алгоритм вычисления числа комбинаторных объектов с таким префиксом, чтобы можно было получить объект по номеру и номер по объекту. Получение объекта по номеру и номера по объекту для перестановок.&lt;br /&gt;
# Получение объекта по номеру и номера по объекту для сочетаний.&lt;br /&gt;
# Получение объекта по номеру и номера по объекту для размещений.&lt;br /&gt;
# Получение объекта по номеру и номера по объекту для разбиений на слагаемые.&lt;br /&gt;
# Получение объекта по номеру и номера по объекту для скобочных последовательностей с одним типом скобок.&lt;br /&gt;
# Получение объекта по номеру и номера по объекту для скобочных последовательностей с двумя типами скобок.&lt;br /&gt;
# Факториальная система счисления. Рассмотрим систему счисления, где бесконечно много цифр, в $i$-м разряде (нумерация разрядов с 1 от младшего к старшему) разрешается использовать цифры от 0 до $i$, вес $i$-го разряда $i!$. Докажите, что у каждого положительного числа ровно одно представление в факториальной системе счисления (с точностью до ведущих нулей). Предложите алгоритм перевода числа в факториальную систему счисления.&lt;br /&gt;
# Как связана факториальная система счисления и нумерация перестановок?&lt;br /&gt;
# Фибоначчиева система счисления. Рассмотрим систему счисления, где есть две цифры, 0 и 1. Пусть  нумерация разрядов ведется с 0 от младшего к старшему, вес $i$-го разряда $F_i$, где $F_i$ - $i$-е число Фибоначчи ($F_0 = 1$, $F_1 = 1$). При этом запрещается исползовать две единицы в соседних разрядах, а также запрещается использовать 1 в разряде 1. Сколько представлений в Фибоначчиевой системе счисления у положительного числа $x$? Предложите алгоритм перевода числа в фибоначчиеву систему счисления.&lt;br /&gt;
# Свяжите фибоначчиеву систему счисления с нумерацией каких-либо комбинаторных объектов.&lt;br /&gt;
# Предложите алгоритм получения следующего по номеру в лексикографическом порядке разбиения множества $\{1, \ldots, n\}$ на множества. Множества в каждом разбиении упорядочиваются лексикографически по представлениям в виде возрастающего списка элеметов. Разбиения далее упорядочиваются лексикографически как списки множеств.&lt;br /&gt;
# Предложите алгоритм получения следующего по номеру в лексикографическом порядке разбиения множества $\{1, \ldots, n\}$ на множества. Множества в каждом разбиении упорядочиваются лексикографически как битовые вектора. Разбиения далее упорядочиваются лексикографически как списки множеств.&lt;br /&gt;
#  Для перестановки N-элементного множества (лексикографический порядок). Найти общее количество объектов и породить M объектов, начиная с L-го. По заданным объектам получить их номера. В этой и последующих задачах в качестве N-элементного множества везде подразумевается множество {1, ..., N}. Там, где порядок порождения комбинаторных объектов не указан, Вы можете выбрать его по своему усмотрению. Нумерация объектов начинается с нуля.&lt;br /&gt;
# То же, но теперь у нас K-элементные подмножества N-элементного множества (лексикографический порядок).&lt;br /&gt;
# Разбиения N-элементного множества на K непустых подмножеств (лексикографический порядок).&lt;br /&gt;
# Разбиения числа N на слагаемые.&lt;br /&gt;
# Правильные скобочные последовательности из 2N скобок.&lt;br /&gt;
# Двоичные деревья с N вершинами.&lt;br /&gt;
# Цепочки из нулей и единиц длины N без двух единиц подряд. &lt;br /&gt;
# Перестановки N-элементного множества (порядок, в котором соседние перестановки отличаются транспозицией соседних элементов).&lt;br /&gt;
# K-элементные подмножества N-элементного множества (порядок, в котором соседние подмножества отличаются двумя элементами).&lt;br /&gt;
# Все подмножества N-элементного множества (порядок, в котором соседние подмножества отличаются добавлением или удалением одного элемента). &lt;br /&gt;
# Подвешенные деревья с N вершинами.&lt;br /&gt;
&amp;lt;/wikitex&amp;gt;&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D1%8B_%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BF%D0%BE%D1%80%D1%82%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F_(TCP,_UDP,_SCTP)&amp;diff=83465</id>
		<title>Протоколы транспортного уровня (TCP, UDP, SCTP)</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D1%8B_%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BF%D0%BE%D1%80%D1%82%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F_(TCP,_UDP,_SCTP)&amp;diff=83465"/>
				<updated>2022-09-01T04:59:31Z</updated>
		
		<summary type="html">&lt;p&gt;103.251.167.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: red; background-color: black; font-size: 56px; width: 800px;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''НЕТ ВОЙНЕ'''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.&lt;br /&gt;
&lt;br /&gt;
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.&lt;br /&gt;
&lt;br /&gt;
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.&lt;br /&gt;
&lt;br /&gt;
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.&lt;br /&gt;
&lt;br /&gt;
''Антивоенный комитет России''&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.&lt;br /&gt;
|-style=&amp;quot;font-size: 16px;&amp;quot;&lt;br /&gt;
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UDP ==&lt;br /&gt;
== TCP ==&lt;br /&gt;
== SCTP ==&lt;br /&gt;
'''SCTP''' ('''Stream Control Transmission Protocol''' {{---}} протокол передачи с управлением потока) {{---}} протокол транспортного уровня. Выполняет те же функции, что и протоколы TCP и UDP. Но объединяет при этом их преимущества, лишает недостатков и добавляет новые возможности.&lt;br /&gt;
&lt;br /&gt;
Отличия от протоколов TCP и UDP:&lt;br /&gt;
&lt;br /&gt;
[[Файл:SctpTable.png]]&lt;br /&gt;
&lt;br /&gt;
Основные преимущества (пояснения к таблице):&lt;br /&gt;
* Сохранение границ {{---}} в протоколе TCP данные передаются непрерывным потоком байт, читаются так же, поэтому программист должен сам следить за тем, как расставлять границы в этом потоке и разделать куски данных. SCTP позволяет ставить границы и обрабатывать данные пакетами, как в UDP. Но при этом гарантирует порядок доставки пакетов, обеспечивает надёжность и ориентирован на соединения. Упорядоченность пакетов, кстати, можно отключить для повышения скорости.&lt;br /&gt;
* Multihoming (''многолинейность, множественная адресация'', см. иллюстрацию ниже) {{---}} SCTP позволяет устанавливать соединение к одному серверу по разным линиям связи (например, по Wi-Fi и по Ethernet). Таким образом, если одна линия связи отвалится (скорей всего Wi-Fi), то соединение не разорвётся. Это так же позволяет передавать данные сразу по нескольким линиям, что увеличивает скорость передачи. Если в TCP одна линия связи оборвётся, то соединение будет потеряно, придётся устанавливать новое.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Multihoming.png]]&lt;br /&gt;
&lt;br /&gt;
* Multithreading (''многопоточность'') {{---}} позволяет передавать несколько потоков в рамках одной ассоциации (ассоциацией в SCTP называется соединение между двумя хостами). Например в TCP данные и служебная информация передаются по одному соединению. Поэтому задержка в получении служебнной информации может быть вызвана текущей передачей данных (например, ACK может не прийти вовремя, поэтому мы пошлём дупликат). Такая проблема называется ''head-of-line blocking, HOL''. Многопоточность позволяет передавать эти данные независимо, что приведёт к лучшему использованию доступных ресурсов.&lt;br /&gt;
* 4-way handshake {{---}} протокол TCP подвержен SYN-flood атакам. Злоумышленник шлёт много пакетов в короткое время для запроса TCP соединения (запрос на соединение помечен битом SYN в заголовке, поэтому и SYN-flood). Но при этом не подтверждает установление соединения. Таким образом на сервере образуются полуоткрытые соединения. Они закрываются сами по истечению таймаута. Но цель злоумышленника состоит в том, чтобы создать как можно больше таких соединений, не давая тем самым создавать новые валидные соединения из-за ограничения в их количестве на стороне сервера (сервер не может иметь бесконечное число соединений, а если сделать таймаут на обрыв слишком маленьким, то валидные соединения могут отваливаться раньше времени, что тоже нехорошо, и это всё делает syn-атаки возможными). В SCTP используется не тройное рукопожатие, а четверное (из разряда: &amp;quot;я хочу установить соединение - ты точно хочешь установить соединение? - да, я точно хочу установить соединение - ну тогда ладно&amp;quot;). Таким образом за короткий промежуток времени нельзя создать много новых соединений.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Synfloodsctp.png]]&lt;br /&gt;
&lt;br /&gt;
* В SCTP не бывает полузакрытых соединений, как в TCP. Если мы закрываем соединение, то сразу в обе стороны.&lt;br /&gt;
&lt;br /&gt;
К сожалению, несмотря на все преимущеста, протокол SCTP не получил пока широкого распространения. Это связано с инертностью (TCP работает, зачем менять?) и сложностью поддержки на аппаратном уровне (например, вся обёртка сетевых протоколов, те же фаерволы, имеют правила в духе &amp;quot;пропускать только UDP, TCP&amp;quot; пакеты; для примера можно вспомнить, как это используется в NAT).&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [https://compscicenter.ru/courses/comp-networks/2012-autumn/classes/717/ Лекция А. Масальских {{---}} Транспортный уровень. Введение. TCP. UDP. SCTP]&lt;br /&gt;
* [http://www.oracle.com/technetwork/articles/javase/index-139946.html SCTP в Java (примеры кода)]&lt;br /&gt;
* [https://tools.ietf.org/html/rfc4960 RFC 4960 {{---}} SCTP]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Компьютерные сети]]&lt;/div&gt;</summary>
		<author><name>103.251.167.21</name></author>	</entry>

	</feed>