<?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=91.212.153.123&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=91.212.153.123&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/91.212.153.123"/>
		<updated>2026-06-11T14:17:22Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A6%D0%B5%D0%BD%D1%82%D1%80%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B4%D0%BB%D1%8F_WCP&amp;diff=83422</id>
		<title>Централизованный алгоритм для WCP</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A6%D0%B5%D0%BD%D1%82%D1%80%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B4%D0%BB%D1%8F_WCP&amp;diff=83422"/>
				<updated>2022-09-01T04:54:56Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
'''Централизованный алгоритм для WCP''' – алгоритм для поиска наименьшего (проще говоря, самого левого) [[Срез, согласованный срез|согласованного среза]] в котором выполняется [[Слабый конъюнктивный предикат (WCP)|слабый конъюнктивный предикат]].&lt;br /&gt;
Если есть хотя бы один согласованный срез, в котором выполняется слабый конъюнктивный предикат, то такой срез существует и единственен (см. [[слабый конъюнктивный предикат]]).&lt;br /&gt;
&lt;br /&gt;
В централизованном алгоритме используются [[Векторные часы|векторные часы]]. Срез задается набором векторных часов для всех процессов или просто вектором, в котором соответствующая компонента показывает время для соответствующего потока.&lt;br /&gt;
&lt;br /&gt;
Суть алгоритма:&lt;br /&gt;
* Есть один процесс-координатор, ответственный за поиск согласованного среза.&lt;br /&gt;
* Остальные процессы обычные, их задача — проверять свои локальные предикаты.&lt;br /&gt;
* Всякий раз, когда впервые с момента последнего отправленного сообщения локальный предикат становится true, оповещаем об этом координатора, указывая свое векторное время (впервые — чтобы не спамить, состояния процесса между посылками сообщений для системы неотличимы). Векторное время при этом увеличивается.&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;
[[Файл:wcp-search-central-good.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример с не найденным согласованным срезом, тут координатор сначала сделал зелёным $P$, потом сделал зелёным $S$, а потом получил мажорирующий их вектор от $Q$ и сделал всех красными, кроме $Q$:&lt;br /&gt;
&lt;br /&gt;
[[Файл:wcp-search-central-bad.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Итого центральному координатору требуется $O(N^2m)$ времени и памяти в сумме ($N$ — количество процессов, $m$ — количество сообщений от одного процесса).&lt;br /&gt;
Всего сообщений на алгоритм — $O(Nm)$.&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;
Доказательство: TODO (на лекции не было).&lt;/div&gt;</summary>
		<author><name>91.212.153.123</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%D0%B0%D1%8F_%D0%BF%D1%80%D0%B8%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D1%82%D0%BD%D0%B0%D1%8F_%D0%BE%D1%87%D0%B5%D1%80%D0%B5%D0%B4%D1%8C&amp;diff=83421</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%D0%B0%D1%8F_%D0%BF%D1%80%D0%B8%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D1%82%D0%BD%D0%B0%D1%8F_%D0%BE%D1%87%D0%B5%D1%80%D0%B5%D0%B4%D1%8C&amp;diff=83421"/>
				<updated>2022-09-01T04:54:48Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
'''Персистентная приоритетная очередь''' (англ. ''persistent priority queue'') {{---}} [[Приоритетные очереди|приоритетная очередь]], реализующая [[Персистентные структуры данных|персистентность]], то есть позволяющая получить доступ ко всем своим предыдущим версиям.&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;code&amp;gt;&lt;br /&gt;
 '''struct''' Node:&lt;br /&gt;
   '''Node''' left&lt;br /&gt;
   '''Node''' right&lt;br /&gt;
   '''T''' key&lt;br /&gt;
   Node(val : '''T''')                              &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;// конструктор для листов&amp;lt;/font&amp;gt;&lt;br /&gt;
   Node(leftChild : '''Node''', rightChild : '''Node''')  &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;// конструктор для узлов (присваивает полю key минимальное среди leftChild и rightChild)&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Реализуем следующие функции:&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathrm{build}&amp;lt;/tex&amp;gt; {{---}} построение дерева,&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathrm{insert}&amp;lt;/tex&amp;gt; {{---}} вставка нового элемента очереди,&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathrm{extractMin}&amp;lt;/tex&amp;gt; {{---}} удаление минимального элемента очереди,&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathrm{merge}&amp;lt;/tex&amp;gt; {{---}} слияние.&lt;br /&gt;
&lt;br /&gt;
Каждая функция возвращает корень нового дерева, которое потом можно будет снова изменять. При реализации можно хранить отдельный массив корней деревьев и при каждом новом изменении какой-либо из версий добавлять измененную в конец массива.&lt;br /&gt;
&lt;br /&gt;
==== build ====&lt;br /&gt;
&lt;br /&gt;
Дерево будет построено фиксированного размера. Стоит отметить, что при создании нескольких деревьев необходимо придерживаться одного максимального размера. Асимптотика построения дерева отрезков составит &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 '''Node''' build(left : '''uint''', right : '''uint'''):&lt;br /&gt;
   '''if''' left == right &lt;br /&gt;
     '''return''' Node(&amp;lt;tex&amp;gt;\infty&amp;lt;/tex&amp;gt;)&lt;br /&gt;
   '''uint''' mid = (left + right) / 2&lt;br /&gt;
   '''return''' Node(build(left, mid), build(mid + 1, right))&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== insert ====&lt;br /&gt;
&lt;br /&gt;
Вставлять новое значение мы будем в любой пустой лист. Лист считается пустым, если его значение равно &amp;lt;tex&amp;gt;\infty&amp;lt;/tex&amp;gt;. При этом не стоит забывать, что те узлы, которые подвергаются изменению, нужно сначала скопировать, а потом вставить новый на основе скопированного для сохранения предыдущих состояний очереди. Запрос вставки нового ключа создает &amp;lt;tex&amp;gt;O(\log n)&amp;lt;/tex&amp;gt; новых вершин и время его работы &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 '''Node''' insert(currentNode : '''Node''', newVal : '''T'''):&lt;br /&gt;
   '''if''' currentNode.left == ''null'' '''and''' currentNode.right == ''null'' '''and''' currentNode.val != &amp;lt;tex&amp;gt;\infty&amp;lt;/tex&amp;gt; &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;//если лист занят&amp;lt;/font&amp;gt;&lt;br /&gt;
     '''return''' ''null''&lt;br /&gt;
   '''if''' currentNode.left == ''null'' '''and''' currentNode.right == ''null'' '''and''' currentNode.val == &amp;lt;tex&amp;gt;\infty&amp;lt;/tex&amp;gt; &amp;lt;font color=&amp;quot;darkgreen&amp;quot;&amp;gt;//если лист свободен&amp;lt;/font&amp;gt;&lt;br /&gt;
     '''return''' Node(newVal)&lt;br /&gt;
   '''Node''' temp = insert(currentNode.left, newVal)&lt;br /&gt;
   '''if''' temp == ''null''&lt;br /&gt;
     temp = insert(currentNode.right, newVal)&lt;br /&gt;
     '''if''' temp == ''null'' &lt;br /&gt;
       '''return''' ''null''&lt;br /&gt;
     '''else'''&lt;br /&gt;
       '''return''' Node(currentNode.left, temp)&lt;br /&gt;
   '''else'''&lt;br /&gt;
     '''return''' Node(temp, currentNode.right)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== extractMin ====&lt;br /&gt;
&lt;br /&gt;
Учитывая тот факт, что корень дерева содержит ключ минимального элемента, можно найти путь к листу, содержащему этот элемент, и удалить его. Аналогично вставке, не стоит забывать о сохранении предыдущих состояний очереди. Вызов функции должен производиться указанием в качестве аргументов корня дерева и значения в корне дерева. Запрос удаления минимального ключа создает &amp;lt;tex&amp;gt;O(\log n)&amp;lt;/tex&amp;gt; новых вершин. &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 '''Node''' extractMin(currentNode : '''Node''', delVal : '''T'''):&lt;br /&gt;
   '''if''' currentNode.left == ''null'' '''and''' currentNode.right == ''null'' '''and''' currentNode.val == delVal&lt;br /&gt;
     '''return''' Node(&amp;lt;tex&amp;gt;\infty&amp;lt;/tex&amp;gt;)&lt;br /&gt;
   '''if''' currentNode.left.val == delVal:&lt;br /&gt;
     '''return''' Node(extractMin(currentNode.left, delVal), currentNode.right)&lt;br /&gt;
   '''else'''&lt;br /&gt;
     '''return''' Node(currentNode.left, extractMin(currentNode.right, delVal))&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== merge ====&lt;br /&gt;
&lt;br /&gt;
Слияние двух деревьев будет производить с помощью конструктора структуры. Поэтому оно выполняется за &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 '''Node''' merge(leftTree : '''Node''', rightTree : '''Node''')&lt;br /&gt;
   '''return''' Node(leftTree, rightTree)&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;O(n)&amp;lt;/tex&amp;gt;, что делает данную реализацию бесполезной на большом количестве данных. Такое же время работы можно было получить, если при каждом изменении [[Приоритетные очереди|приоритетной очереди]] просто копировать её и изменять.&lt;br /&gt;
Более эффективной реализацией является персистентная приоритетная очередь построенная на [[Дерево поиска, наивная реализация|двоичном дереве поиска]]. Все операции, кроме слияния, выполняются за &amp;lt;tex&amp;gt;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;
Будем хранить структуру:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 '''struct''' LeftistHeap:&lt;br /&gt;
   '''LeftistHeap''' left&lt;br /&gt;
   '''LeftistHeap''' right&lt;br /&gt;
   '''T''' key&lt;br /&gt;
   '''int''' dist&lt;br /&gt;
   LeftistHeap(leftChild : '''LeftistHeap''', rightChild : '''LeftistHeap''', val : '''T''')&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Приведём реализацию конструктора:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 LeftistHeap(leftChild : '''LeftistHeap''', rightChild : '''LeftistHeap''', val : '''T'''):&lt;br /&gt;
   key = val&lt;br /&gt;
   '''if''' leftChild.dist &amp;gt; rightChild.dist&lt;br /&gt;
     left = leftChild&lt;br /&gt;
     right = rightChild&lt;br /&gt;
   '''else'''&lt;br /&gt;
     left = rightChild&lt;br /&gt;
     right = leftChild&lt;br /&gt;
   dist = min(left.dist, right.dist) + 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Поддерживаемые операции ===&lt;br /&gt;
&lt;br /&gt;
Все операции практически (кроме &amp;lt;tex&amp;gt;\mathrm{merge}&amp;lt;/tex&amp;gt;) аналогичны операциям с [[Левосторонняя куча|левосторонней кучей]], только каждая из них возвращает корень измененной кучи. В частности &amp;lt;tex&amp;gt;\mathrm{extractMin}&amp;lt;/tex&amp;gt; возвращает пару из извлеченной вершины и измененной кучи.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{merge}&amp;lt;/tex&amp;gt; примет следующий вид:&lt;br /&gt;
&amp;lt;code&amp;gt;  &lt;br /&gt;
 '''LeftistHeap''' merge(x : '''LeftistHeap''', y : '''LeftistHeap'''):&lt;br /&gt;
   '''if''' x == &amp;lt;tex&amp;gt; \varnothing &amp;lt;/tex&amp;gt;: &lt;br /&gt;
       '''return''' y&lt;br /&gt;
   '''if''' y == &amp;lt;tex&amp;gt; \varnothing &amp;lt;/tex&amp;gt;: &lt;br /&gt;
       '''return''' x&lt;br /&gt;
   '''if''' y.key &amp;gt;= x.key:&lt;br /&gt;
     z = LeftistHeap(x.left, merge(x.right, y), x.key)&lt;br /&gt;
   '''else'''&lt;br /&gt;
     z = LeftistHeap(y.left, merge(y.right, x), y.key)&lt;br /&gt;
   '''return''' z&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;
* &amp;lt;tex&amp;gt;key&amp;lt;/tex&amp;gt; {{---}} ключ (вес) элемента,&lt;br /&gt;
* &amp;lt;tex&amp;gt;next&amp;lt;/tex&amp;gt; {{---}} указатель на следующий элемент,&lt;br /&gt;
* &amp;lt;tex&amp;gt;child&amp;lt;/tex&amp;gt; {{---}} указатель на ребенка с большим рангом,&lt;br /&gt;
* &amp;lt;tex&amp;gt;degree&amp;lt;/tex&amp;gt; {{---}} степень узла (количество дочерних узлов данного узла).&lt;br /&gt;
Доступ к куче осуществляется ссылкой на первый корень в списке корней. &lt;br /&gt;
&lt;br /&gt;
=== Операции ===&lt;br /&gt;
&lt;br /&gt;
==== getMinimum ====&lt;br /&gt;
&lt;br /&gt;
Для нахождения минимального элемента необходимо пройти по списку корней дерева. Можно это сделать за &amp;lt;tex&amp;gt;O(\log n)&amp;lt;/tex&amp;gt;, т.к. список корней содержит не более &amp;lt;tex&amp;gt;\log n&amp;lt;/tex&amp;gt; элементов. На рисунке это корень второго дерева в куче. &lt;br /&gt;
&lt;br /&gt;
[[File:PersistentBinomialHeapExample1_1.png]]&lt;br /&gt;
 &lt;br /&gt;
==== merge ====&lt;br /&gt;
&lt;br /&gt;
Проходим по корневым спискам и создаем новый, объединяя деревья одинакового ранга. &lt;br /&gt;
&lt;br /&gt;
Вспомогательная функция &amp;lt;tex&amp;gt;\mathrm{mergeTree}&amp;lt;/tex&amp;gt; объединят в одно деревья одинакового ранга. Для этого мы создаём два новых узла, один из которых {{---}} новый корень, другой из них {{---}} видоизмененный корень одного из деревьев.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 '''PersistentBinomialHeap''' mergeTree(t1 : '''PersistentBinomialHeap''', t2 : '''PersistentBinomialHeap'''):&lt;br /&gt;
   newRoot = PersistentBinomialHeap()&lt;br /&gt;
   tmp = PersistentBinomialHeap()&lt;br /&gt;
   newRoot.child = tmp&lt;br /&gt;
   newRoot.degree = t1.degree + t2.degree &lt;br /&gt;
   '''if''' (t1.key &amp;lt; t2.key)&lt;br /&gt;
     tmp = PersistentBinomialHeap(t2) &amp;lt;font color = &amp;quot;green&amp;quot;&amp;gt;// создаем новый узел путем копирования старого с помощью конструктора&amp;lt;/font&amp;gt;&lt;br /&gt;
     tmp.next = t1.child&lt;br /&gt;
     newRoot.key = t1.key&lt;br /&gt;
   '''else'''&lt;br /&gt;
     tmp = PersistentBinomialHeap(t1) &lt;br /&gt;
     tmp.next = t2.child&lt;br /&gt;
     newRoot.key = t2.key&lt;br /&gt;
   '''return''' newRoot&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Процесс слияния двух деревьев показан на рисунке. Первоначально было два дерева &amp;lt;tex&amp;gt;t1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;t2&amp;lt;/tex&amp;gt; (на рисунке выделены черным). Затем их слили, появились два новых узла, которые обращаются по прежнему к старым поддеревьям (выделено красным).&lt;br /&gt;
&lt;br /&gt;
[[File:PersistentBinomialHeapExample1_2.png]] &lt;br /&gt;
&lt;br /&gt;
Проход по корневым спискам выполнится за &amp;lt;tex&amp;gt;O(\log n)&amp;lt;/tex&amp;gt;, объединение деревьев выполняется за &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\mathrm{merge}&amp;lt;/tex&amp;gt; работает за &amp;lt;tex&amp;gt;O(\log n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== insert ====&lt;br /&gt;
&lt;br /&gt;
Общий принцип вставки нового элемента схож с принципом вставки в обычную [[Биномиальная куча|биномиальную кучу]]. Создаем кучу с деревом ранга &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;, в котором будет единственный элемент {{---}} тот самый, который нам нужно вставить. И затем сливаем две кучи в одну.  &lt;br /&gt;
&lt;br /&gt;
Есть два случая слияния:&lt;br /&gt;
&lt;br /&gt;
#Минимальный ранг дерева в куче равен нулю. Тогда сливаем две кучи в одну с помощью &amp;lt;tex&amp;gt;\mathrm{merge}&amp;lt;/tex&amp;gt;. Время работы &amp;lt;tex&amp;gt;O(\log n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Минимальный ранг дерева в куче отличен от нуля. Тогда присоединяем к созданной куче ту, в которую нужно добавить элемент. Время работы &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда амортизационная стоимость одной операции &amp;lt;tex&amp;gt;\mathrm{insert}&amp;lt;/tex&amp;gt; составляет &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 '''PersistentBinomialHeap''' insert(heap : '''PersistentBinomialHeap''', newVal : '''T'''):&lt;br /&gt;
   newRoot = PersistentBinomialHeap(newVal)&lt;br /&gt;
   '''if''' heap.degree == newRoot.degree:&lt;br /&gt;
     return merge(newRoot, heap)&lt;br /&gt;
   '''else'''&lt;br /&gt;
     newRoot.next = heap &lt;br /&gt;
     '''return''' newRoot&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Пример работы. =====&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! Описание !! Изображение&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|Исходная куча.&lt;br /&gt;
|[[File:PersistentBinomialHeapExample1_3.png]]&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
|Вставим в кучу элемент, с ключом, равным &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt;. В данном случае выполняется условие под пунктом &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|[[File:PersistentBinomialHeapExample1_4.png]]&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&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;
|[[File:PersistentBinomialHeapExample1_5.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== extractMinimum ====&lt;br /&gt;
&lt;br /&gt;
Работает так же как и в обычной [[Биномиальная куча|биномиальной куче]]. Проходим по списку корней и находим вершину с минимальным ключом. Затем извлекаем дерево, которое хранит минимальный ключ. Сортируем детей в дереве с минимальным ключом по возрастанию ранга. Сливаем две кучи. Функция возвращает минимальный ключ и новую кучу после извлечения минимума. Время работы операции &amp;lt;tex&amp;gt;O(\log n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Cм. также ==&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://compscicenter.ru/courses/advanced-algo/2013-spring/classes/723/ Лекция А.С. Станкевича по приоритетным очередям]&lt;br /&gt;
*[http://logic.pdmi.ras.ru/csclub/node/2734 Лекция П.Ю. Мавривна по персистентным структурам данных]&lt;br /&gt;
*[http://ru.wikipedia.org/wiki/Очередь_с_приоритетом_(программирование) Википедия {{---}} Очередь с приоритетом]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Приоритетные очереди]]&lt;br /&gt;
[[Категория: Структуры данных‏‎]]&lt;br /&gt;
[[Категория: Персистентные структуры данных]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Deepfake&amp;diff=83420</id>
		<title>Deepfake</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Deepfake&amp;diff=83420"/>
				<updated>2022-09-01T04:54:40Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
'''Deepfake''' (''дипфейк'') {{---}} результат работы ряда алгоритмов для синтеза изображений человеческого лица или голоса. Основные алгоритмы применяемые для решения данной задачи основаны на Генеративно-состязательных сетях. Современные алгоритмы позволяют генерировать не только лицо человека, но и его голос. C таким примером можно ознакомится по ссылке [https://www.youtube.com/watch?v=2svOtXaD3gg]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Deep_fake_title.png|thumb|1000px|Примеры дипфейков #1]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
Задача замены лиц или генерация Deepfake изображений состоит в том, чтобы перенести лицо с исходного (source) изображения на нужное (target) изображение. Такой перенос должен быть бесшовным и незаметным человеческому глазу.&lt;br /&gt;
Реконструкция лица заключается в изменении лица из source изображения, так чтобы мимика и любая лицевая геометрия была соблюдена и соответствовала target изображению.&lt;br /&gt;
Методы решаюшие данную задачу в прошлом были основаны на детектировании ключевых точек лица и соответствующей анимацией на основе построения триангуляции Делоне. В основе современных алгоритмов лежат Генеративно-Состязательные Сети с различными модификациями.&lt;br /&gt;
Так же некоторые из используюмых методов используют основаны на попытке аппроксимации некого распределения признаков. Данные методы пытаются вычисляют данное распределение и переносят с помощью нейронных сетей эти скрытые представления в результате генерируется новое фотореалистичное лицо, которое соответствует необходимым характеристикам и метрикам.&lt;br /&gt;
&lt;br /&gt;
Первые методы как было сказано выше были основаны на детектировании ключевых точек, одним из известных алгоритмов в этой области является Face2Face, метод вычисляет меш лица и с помощью алгоритма 3D morphable face model переносит геометрию. &lt;br /&gt;
Методам на основе Генеративно-состязательных сетей не требуется никакие многоуровеные эвристические методы, они берут исходное изображение и сразу делают перенос в end-to-end стиле.&lt;br /&gt;
&lt;br /&gt;
== Реконструкция лица и сегментация ==&lt;br /&gt;
Первый этап рассмотренного алгоритма является сегментацией лица в target и source изображениях, изменение геометрии из source лица, чтобы оно соответствовало target геометрии лица.  &lt;br /&gt;
Имея изображение $I \in {\rm I\!R}^{3 \times H \times W}$ и тепловую карту лицевых точек $H(p) \in {\rm I\!R}^{N \times H \times W}, p \in {\rm I\!R}^{N \times D}$, где $N$ - число точек, $D$ - размерность точек, обычно она равна 2, а число точек не превышает 70, мы обучаем генератор, чтобы он делал трансформацию данной тепловой карты и входного изображения в изображение с необходимой нам геометрией $G_r : \{ {\rm I\!R}^{3 \times H \times W}, {\rm I\!R}^{N \times H \times W} \} \to {\rm I\!R}^{3 \times H \times W} $&lt;br /&gt;
Пусть $v_s, v_t \in {\rm I\!R}^{70 \times 3}$ и $e_s, e_t \in {\rm I\!R}^{3}$ будут $3$ мерными ключевыми лицевыми точками лица и углами Эйлера в соответствии к $F_s$ и $F_t$. Тогда мы построим 2D проекцию $p_j$ интерполируя между $e_s$ и $e_t$ и центроидами $v_s$ и $v_t$ и используя промежуточные точки мы обратно спроецируем $v_s$ на $I_s$.&lt;br /&gt;
Другими словами алгоритм реконструкции является рекурсивным для каждой итерации &lt;br /&gt;
&lt;br /&gt;
$i &amp;lt; j &amp;lt; n$&lt;br /&gt;
&lt;br /&gt;
$I_{r_{j}}, S_{r_{j}} = G_r(I_{r_{j - 1}};H(p_j)), I_{r_{0}} = I_s$&lt;br /&gt;
&lt;br /&gt;
Наша модель $G_r$ имеет 2 выхода, первый на выходе выдает изображение с перенесенной геометрией, второй выход маску для сегментации. Так же стоить заметить что маска для сегментации умеет различать часть лица с кожей и часть с волосами отдельно. Такой подход позволяет увеличить точность.&lt;br /&gt;
&lt;br /&gt;
Такой генератор обучается следующую функцию потерь&lt;br /&gt;
&lt;br /&gt;
$Loss(G_r) = \lambda_{stepwise} Loss_{rec}(I_{r_{n}}, I_{t}) + \lambda_{rec}Loss_{rec}(I_{r}, I_{t}) + \lambda_{adv}Loss_{adv} + \lambda_{seg}Loss_{pixel}(S_r, S_t)$&lt;br /&gt;
&lt;br /&gt;
$Loss(G_s) = Loss_(CE) + \lambda_{reenact}Loss_{pixe}(S_t, S_{t}^{r})$&lt;br /&gt;
&lt;br /&gt;
Где $G_r$ - генератор переноса геометрии, $G_s$ - генератор сегментации лица.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Deep_fake_more_results.png|thumb|550px|Примеры дипфейков #2]]&lt;br /&gt;
&lt;br /&gt;
== Перенос сгенерированного лица ==&lt;br /&gt;
&lt;br /&gt;
Общеизвестным способ переноса одной геометрии одной текстуры на другую является перенос полигонов из сеток с одной геометрии на другую. Однако существуют более современные способы.&lt;br /&gt;
Имея множество исходных изображения $\{ I_{s_0}, ..., I_{s_{n}} \}$, углов Эйлера $ \{e_1, ..., e_n \}$ соответствующих лиц $\{ F_{s_{0}}, ..., F_{s_{n}} \}$ строится карта внешнего вида (appearance map).&lt;br /&gt;
Строится она следующим образом. &lt;br /&gt;
В начале проецируются соответствующие углы Эйлера на плоскость. Далее используя K-D дерево данные точки в пространстве сегментируются и удаляются слишком близкие, поскольку они не несут в себе много полезной информации, а вычислительная сложность разительно увеличивается. В конце используя оставшиеся точки мы строим меш лица используя триангуляцию Делоне.&lt;br /&gt;
Для каждого угла $e_t$ лица $F_t$ и точки $x_t$ мы ищем треугольник $T$ соответствующий данной точке.&lt;br /&gt;
Пусть $x_{i_{1}}, x_{i_{2}}, x_{i_{3}}$ будут трисом $T$ и $I_{s_{i_{1}}}, I_{s_{i_{2}}}, I_{s_{i_{3}}}$ соответствующие лица. Необходимо вычислить барицентрические координаты $\lambda_{1}, \lambda_{2}, \lambda_{3}$ от $x_t$ относительно $x_{i_{1}}, x_{i_{2}}, x_{i_{3}}$. Тогда результат интерполяции &lt;br /&gt;
&lt;br /&gt;
$I_r = \sum_{k=1}^{3} \lambda_k G_r(I_{s_{i_{k}}}; H(p_t))$&lt;br /&gt;
&lt;br /&gt;
где $p_t$ 2D ключевая точка лица $F_t$.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Deep_fake_view.png|right|thumb|700px|Карта переноса точек]]&lt;br /&gt;
&lt;br /&gt;
== Вписывание лица == &lt;br /&gt;
Поскольку из-за разницы в углах поворота или прически сегментированные маски могут отличаться видимыми регионами, поэтому нам необходимо &amp;quot;дорисовать&amp;quot; или &amp;quot;стереть&amp;quot; участки которые не могут быть перенесены напрямую.&lt;br /&gt;
Чтобы решить данную задачу мы обучим еще одну модель $G_c$. $G_c$ принимает в себя лицо $F_s$, такое что все необходимые участки будут дорисованы, а ненужные удалены. &lt;br /&gt;
Функция потерь такой сети &lt;br /&gt;
&lt;br /&gt;
$Loss(G_c) = \lambda_{rec}Loss_{rec}(I_c, I_t) + \lambda_{adv}Loss_{adv}$&lt;br /&gt;
&lt;br /&gt;
== Отрисовка полученного лица == &lt;br /&gt;
На самом последнем шаге мы уже имеем лицо которое правильно повернуто и на нем присутствуют только регионы лица, что и на нужном нам изображении. Нам остается только применить цветокоррекцию и последние минимальные правки чтобы отрисованное лицо выглядело натурально. &lt;br /&gt;
&lt;br /&gt;
Пусть $I_t$ будет исходным лицом, а $I_{r}^{t}$ будет нужным нам лицом для переноса и $S_t$ маской сегментации. Тогда используя уравнене Пуассона мы можем выполнить цветокоррекцию следующим образом&lt;br /&gt;
&lt;br /&gt;
$P(I_t;I_{r}^{t};S_t) = arg min ||\nabla f - \nabla I^{t}_{r}||^{2}_{2}$&lt;br /&gt;
&lt;br /&gt;
$f(i, j) = I_t(i, j), \forall S_t(i, j) = 0$&lt;br /&gt;
&lt;br /&gt;
$\nabla$ - оператор взятия градиента.&lt;br /&gt;
&lt;br /&gt;
Данное уравнения используется в качестве функции для оптимизации нашего генератора $G_b$, который и будет заниматься отрисовкой финальной версии нашего Deepfake изображения.&lt;br /&gt;
&lt;br /&gt;
$Loss(G_b) = \lambda_{rec}Loss_{rec}(I_t;I_{r}^{t};S_t), P(I_t;I_{r}^{t};S_t)) + \lambda_{adv}Loss_{adv}$&lt;br /&gt;
&lt;br /&gt;
== Данные для обучения и процесс обучения == &lt;br /&gt;
&lt;br /&gt;
[[Файл:Deep_fake_pipeline.png|thumb|center|750px|Общая схема алгоритма]]&lt;br /&gt;
&lt;br /&gt;
В качестве обучающего множества можно использовать множество датасетов с размеченными лицами, одним из таких служит IJB-C. На нем обучается генератор $G_r$. Данный датасет состоит из более чем $11$ тысяч видео, $5500$ из которых выского качества. Обучая наш алгоритм кадры из $I_s$ и $I_t$ берутся из двух случайных видео. Так же для начального шага нам был необходим perceptual loss, он может быть получен обучив VGG-19 модель или взяв готовую обученную на ImageNet или VGGFace2, второй датасет предпочтительный, поскольку для его обучения используются только лица.&lt;br /&gt;
В качестве оптимизатора рекомендуется использовать Adam с параметром скорости обучения (learning rate) = $0.0002$.&lt;br /&gt;
$\lambda_{perc} = 1, \lambda_{pixel} = 0.1, \lambda_{adv} = 0.001, \lambda_{seg} = 0.1, \lambda_{stepwise} = 1$, параметр $\lambda_{reenact}$ возрастает линейно от $0-1$.&lt;br /&gt;
&lt;br /&gt;
Общее время составляет около 2-3 дней на Nvidia Tesla V100.&lt;br /&gt;
Скорость работы всего алгоритма состовляет около ~$10$ fps на Nvidia Tesla V100.&lt;br /&gt;
&lt;br /&gt;
== Реализация == &lt;br /&gt;
Готовую реализацию можно найти по ссылке [https://github.com/YuvalNirkin/fsgan FSGAN], так же существуют альтернативные, но не менее продвинутые алгоритмы [https://github.com/iperov/DeepFaceLab DeepFaceLab], [https://github.com/deepfakes/faceswap faceswap].&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
# [https://arxiv.org/pdf/1908.05932.pdf Nirkin, Yuval, Yosi Keller, and Tal Hassner. &amp;quot;FSGAN: Subject agnostic face swapping and reenactment.&amp;quot; In Proceedings of the IEEE international conference on computer vision, pp. 7184-7193. 2019.]&lt;br /&gt;
# [https://arxiv.org/pdf/1704.06729 Nirkin, Y., Masi, I., Tuan, A. T., Hassner, T., &amp;amp; Medioni, G. (2018, May). On face segmentation, face swapping, and face perception. In 2018 13th IEEE International Conference on Automatic Face &amp;amp; Gesture Recognition (FG 2018) (pp. 98-105). IEEE.]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BE%D1%85%D0%B2%D0%B0%D1%82%D1%8B%D0%B2%D0%B0%D1%8E%D1%89%D0%B0%D1%8F_%D0%BE%D0%BA%D1%80%D1%83%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%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&amp;diff=83419</id>
		<title>Минимальная охватывающая окружность множества точек</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BE%D1%85%D0%B2%D0%B0%D1%82%D1%8B%D0%B2%D0%B0%D1%8E%D1%89%D0%B0%D1%8F_%D0%BE%D0%BA%D1%80%D1%83%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%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&amp;diff=83419"/>
				<updated>2022-09-01T04:54:31Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
{{ready}}&lt;br /&gt;
== Описание ==&lt;br /&gt;
Минимальная охватывающая окружность множества точек (smallest enclosing disc) - это задача, в которой необходимо по заданному набору точек найти окружность минимального радиуса, которая содержит все точки множества.&lt;br /&gt;
&lt;br /&gt;
==Алгоритм ==&lt;br /&gt;
Сперва приведем алгоритм, корректность которого позднее будет доказана.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим метод &amp;lt;tex&amp;gt; MinDisc &amp;lt;/tex&amp;gt;, который будет принимать на вход множество точек, а возвращать будет искомую охватывающую окружность. Идея метода в том, что он генерирует случайную перестановку из точек, которые поступили на вход и в получившимся порядке по одной добавляет их в текущую охватывающую окружность. Как будет доказано позднее, если на каком-то шаге алгоритма текущая точка оказалась вне текущей минимальной окружности, то утверждается, что она лежит на границе новой окружности, которая будет содержать в себе ее и все предыдущие точки. Опишем приведенный выше алгоритм псевдокодом:&lt;br /&gt;
&lt;br /&gt;
 MinDisc(S)&lt;br /&gt;
    Let P - random permutation of S&lt;br /&gt;
    Let D2 - be the smallest enclosing disc for {p1, p2}.&lt;br /&gt;
    for i = 3 to n {&lt;br /&gt;
        if pi &amp;lt;tex&amp;gt; \in &amp;lt;/tex&amp;gt; Di−1  then Di = Di−1 // point is inside. nothing to do here&lt;br /&gt;
                      else Di = MinDiscWithPoint ({p1,...,pi−1}, pi) // point is lying on the boundary of minimal circle&lt;br /&gt;
    }&lt;br /&gt;
    return Dn&lt;br /&gt;
&lt;br /&gt;
Как вы заметили, мы использовали выше метод &amp;lt;tex&amp;gt; MinDiscWithPoint &amp;lt;/tex&amp;gt; - это метод, который по множеству точек и еще одной точке возвращают искомую окружность. При этом выделенная точка (которая передается в качестве второго аргумента) ''обязательно'' лежит ''на'' окружности. Эта функция очень похожа на предыдущую, поэтому приведу лишь ее псевдокод:&lt;br /&gt;
&lt;br /&gt;
 MinDiscWithPoint(S, q)&lt;br /&gt;
    Let P - random permutation of S&lt;br /&gt;
    Let D1 - be the smallest enclosing disc for {p1, q}.&lt;br /&gt;
    for i = 2 to n {&lt;br /&gt;
        if pi &amp;lt;tex&amp;gt; \in &amp;lt;/tex&amp;gt; Di−1  then Di = Di−1 &lt;br /&gt;
                      else Di = MinDiscWith2Points ({p1,...,pi−1}, pi, q) &lt;br /&gt;
    }&lt;br /&gt;
    return Dn&lt;br /&gt;
&lt;br /&gt;
Как и в предыдущем случае мы использовали новый метод. &amp;lt;tex&amp;gt; MinDiscWith2Points &amp;lt;/tex&amp;gt; аналогичен &amp;lt;tex&amp;gt; MinDiscWithPoint &amp;lt;/tex&amp;gt;, но в нем уже передается две точки, которые будут лежать на построенной окружности. В этой функции шафлить инпут не требуется. Опишем его псевдоком:&lt;br /&gt;
&lt;br /&gt;
 MinDiscWith2Points(P, q1, q2)&lt;br /&gt;
    Let D0 - be the smallest enclosing disc for {q1, q2}.&lt;br /&gt;
    for i = 1 to n {&lt;br /&gt;
        if pi &amp;lt;tex&amp;gt; \in &amp;lt;/tex&amp;gt; Di−1  then Di = Di−1 &lt;br /&gt;
                      else Di = сircumcircle (прим. описанная окружность) of a triangle {pi, q1, q2} &lt;br /&gt;
    }&lt;br /&gt;
    return Dn&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 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; R &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;. &lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id= ==lemma==&lt;br /&gt;
|about=лемма 1&lt;br /&gt;
|statement=&lt;br /&gt;
Окружность минимального радиуса, содержащая все точки &amp;lt;tex&amp;gt; P &amp;lt;/tex&amp;gt; внутри себя и все точки &amp;lt;tex&amp;gt; R &amp;lt;/tex&amp;gt; на границе, ''уникальна''.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:MiniDisc.png|right|310px]]&lt;br /&gt;
Пусть это не так и существует две такие окружности &amp;lt;tex&amp;gt; D_0 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; D_1 &amp;lt;/tex&amp;gt;. Очевидно, что в таком случае все точки из &amp;lt;tex&amp;gt; P &amp;lt;/tex&amp;gt; должны лежать внутри &amp;lt;tex&amp;gt; D_0 \cap D_1 &amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; z &amp;lt;/tex&amp;gt; - точка пересечения окружностей (смотри рисунок). Рассмотрим некоторое семейство окружностей &amp;lt;tex&amp;gt; D(\lambda), 0&amp;lt;=\lambda &amp;lt;= 1 &amp;lt;/tex&amp;gt;. При этом центры этих окружностей лежат на отрезке, соединяющем центры &amp;lt;tex&amp;gt; D_0 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; D_1 &amp;lt;/tex&amp;gt;, и перемещаются очевидным образом в зависимости от параметра &amp;lt;tex&amp;gt;\lambda &amp;lt;/tex&amp;gt;. При этом радиус каждой из этих окружностей - расстояние от центра до точки &amp;lt;tex&amp;gt; z &amp;lt;/tex&amp;gt;, описанной выше. Рассмотрим окружность &amp;lt;tex&amp;gt; D(1/2) &amp;lt;/tex&amp;gt;. Заметим, что &amp;lt;tex&amp;gt; D_0 \cap D_1 &amp;lt;/tex&amp;gt; лежит целиком внутри нее (по построению окружности &amp;lt;tex&amp;gt; D(1/2) &amp;lt;/tex&amp;gt;), а так как &amp;lt;tex&amp;gt; D(1/2) &amp;lt;/tex&amp;gt; проходит через пересечение окружностей &amp;lt;tex&amp;gt; D_0 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; D_1 &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; лежат на &amp;lt;tex&amp;gt; \partial D_0 \cap \partial D_1 &amp;lt;/tex&amp;gt;.). Из этого следует, что эта окружность явлется допустимой для нашей теоремы и при этом обладает '''меньшим''' радиусом, то наше предположение неверно и искомая окружность единственная.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Далее будем называть искомую окружность &amp;lt;tex&amp;gt; md(P, R) &amp;lt;/tex&amp;gt;.''&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id= ==lemma==&lt;br /&gt;
|about=лемма 2&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt; p \in md(P \setminus \{p\}, R) &amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt; md(P, R) = md(P \setminus \{p\}, R) &amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Для множества &amp;lt;tex&amp;gt; P \setminus \{p\} &amp;lt;/tex&amp;gt; справедливо, что для него минимальный диск по определению - это &amp;lt;tex&amp;gt; md(P \setminus \{p\}, R) &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; P &amp;lt;/tex&amp;gt; существовал еще меньший диск, то он бы существовал бы и для &amp;lt;tex&amp;gt; P \setminus \{p\} &amp;lt;/tex&amp;gt;. Значит эти диски равны(в силу единственности) и &amp;lt;tex&amp;gt; md(P, R) = md(P \setminus \{p\}, R) &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id= ==lemma==&lt;br /&gt;
|about=лемма 3&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt; p \notin md(P \setminus \{p\}, R) &amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt; md(P, R) = md(P \setminus \{p\}, R \cup {p}) &amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; D_0 = md(P \setminus \{p\}, R) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; D_1 = md(P, R)  &amp;lt;/tex&amp;gt;. Рассмотрим аналогичное семейство множеств &amp;lt;tex&amp;gt; D(\lambda) &amp;lt;/tex&amp;gt; как в лемме 1. Зададим это семейство с помощью окружностей  &amp;lt;tex&amp;gt; D_0 &amp;lt;/tex&amp;gt;  и &amp;lt;tex&amp;gt; D_1 &amp;lt;/tex&amp;gt;. Заметим, что &amp;lt;tex&amp;gt; p \notin D_0 &amp;lt;/tex&amp;gt;, но &amp;lt;tex&amp;gt; p \in D_1 &amp;lt;/tex&amp;gt;. Значит найдется такое &amp;lt;tex&amp;gt; \lambda &amp;lt;/tex&amp;gt;, что точка &amp;lt;tex&amp;gt; p &amp;lt;/tex&amp;gt; лежит на границе окружности &amp;lt;tex&amp;gt; D(\lambda) &amp;lt;/tex&amp;gt;. Но в таком случае так как эта окружность удовлетворяет условиям теоремы и к тому же обладает не большим радиусом, чем &amp;lt;tex&amp;gt; D_1 &amp;lt;/tex&amp;gt; (которая в свою очередь является минимальной охватыающей окружностью), то &amp;lt;tex&amp;gt; \lambda = 1 &amp;lt;/tex&amp;gt;. Это означает, что &amp;lt;tex&amp;gt; D(\lambda) = D_1 &amp;lt;/tex&amp;gt;, то точка &amp;lt;tex&amp;gt; p &amp;lt;/tex&amp;gt; лежит на границе &amp;lt;tex&amp;gt; D_1 &amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt; md(P, R) = md(P \setminus \{p\}, R \cup {p}) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Эти три доказанные леммы полностью подтверждают корректность наших действий в приведенном выше алгоритме, ведь во всех трех методах в условном операторе мы используем леммы 2 и 3, корректность которых доказана. Другими словами, алгоритм действительно найдет искомую минимальную охватывающую окружность множества точек.&lt;br /&gt;
&lt;br /&gt;
==Память и время работы ==&lt;br /&gt;
Сначала разберемся с памятью. Тут все просто - никаких лишних затрат, кроме как на хранение точек нам требуется, то алгоритм требует &amp;lt;tex&amp;gt; O(n) &amp;lt;/tex&amp;gt; памяти.&lt;br /&gt;
&lt;br /&gt;
С временем работы дела обстоят интереснее. На самом деле приведенный алгоритм работает за линейное время. Докажем этот факт.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим некоторое множество &amp;lt;tex&amp;gt; P = \{p_1, ... p_i \} &amp;lt;/tex&amp;gt; и точку &amp;lt;tex&amp;gt; q &amp;lt;/tex&amp;gt;, которая лежит на границе построенной охватывающей окружности.  Тогда попробуем удалить одну точку из набора &amp;lt;tex&amp;gt; P &amp;lt;/tex&amp;gt;. Искомая окружность может измениться только в том случае, когда эта удаленная точка лежала на границе, а вероятность этого &amp;lt;tex&amp;gt; 2 / i &amp;lt;/tex&amp;gt; (так как точек, которые образуют нашу окружность не более трех. при этом одна из этих трех точек - &amp;lt;tex&amp;gt; q &amp;lt;/tex&amp;gt;).  &lt;br /&gt;
&lt;br /&gt;
То оценим время работы MinDiscWithPoint c помощью доказанного выше факта.  На каждой итерации цикла будет происходить проверка, которая пройдет в &amp;quot;else&amp;quot; с вероятностью &amp;lt;tex&amp;gt; 2 / i &amp;lt;/tex&amp;gt;. А сложность работы каждого &amp;quot;else&amp;quot; - &amp;lt;tex&amp;gt; O(i) &amp;lt;/tex&amp;gt;. То суммарное время работы MinDiscWithPoint вычисляется следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; O(n) + \sum_{i=1}^{n} O(i) * (2 / i ) = O(n) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Абсолютно аналогичным образом доказываем, что время работы &amp;lt;tex&amp;gt; MinDisc &amp;lt;/tex&amp;gt; есть &amp;lt;tex&amp;gt; O(n) &amp;lt;/tex&amp;gt;. То есть рассматриваемый алгоритм имеет линейную сложность.&lt;br /&gt;
&lt;br /&gt;
==Источники==&lt;br /&gt;
''Mark de Berg, Otfried Cheong, Marc van Kreveld, Mark Overmars-Computational Geometry Algorithms and Applications, p. 86&lt;br /&gt;
''&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%B1%D1%81%D0%BE%D0%BB%D1%8E%D1%82%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=83418</id>
		<title>Абсолютная погрешность</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%B1%D1%81%D0%BE%D0%BB%D1%8E%D1%82%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=83418"/>
				<updated>2022-09-01T04:54:24Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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^*) = |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>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=1ripmtnsumwc&amp;diff=83417</id>
		<title>1ripmtnsumwc</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=1ripmtnsumwc&amp;diff=83417"/>
				<updated>2022-09-01T04:54:16Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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>91.212.153.123</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%9A%D0%B0%D1%80%D0%B0%D1%82%D0%B5%D0%BE%D0%B4%D0%BE%D1%80%D0%B8&amp;diff=83416</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%9A%D0%B0%D1%80%D0%B0%D1%82%D0%B5%D0%BE%D0%B4%D0%BE%D1%80%D0%B8&amp;diff=83416"/>
				<updated>2022-09-01T04:54:07Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;]] [[Объём n-мерного прямоугольника|&amp;gt;&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Мы уже построили по мере на полукольце множеств внешнюю меру, а по ней - меру на σ-алгебре. Следующая теорема показывает, что при ее сужении на то полукольцо мы получим исходную меру.&lt;br /&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;(X, \mathcal{R}, m) \to (X, 2^X, \mu^*) \to (X, \mathcal{A}, \mu)&amp;lt;/tex&amp;gt; были выполнены так, как описывалось в предыдущих параграфах. Тогда:&lt;br /&gt;
# &amp;lt;tex&amp;gt;\mathcal{R} \subset \mathcal{A}&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\mu|_\mathcal{R} = m&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof= &lt;br /&gt;
Если мы докажем, что &amp;lt;tex&amp;gt;\mathcal{R} \subset \mathcal{A}&amp;lt;/tex&amp;gt;, то есть, любое множество из полукольца хорошо разбивает любое другое, то, взяв любое &amp;lt;tex&amp;gt;A \in \mathcal{R}&amp;lt;/tex&amp;gt;, так как &amp;lt;tex&amp;gt;\mathcal{R} \subset \mathcal{A}&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;\mu^*(A) = \mu(A)&amp;lt;/tex&amp;gt;. Но &amp;lt;tex&amp;gt;A\in \mathcal{A}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\mu^*&amp;lt;/tex&amp;gt; порождена &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; (&amp;lt;tex&amp;gt;\mu^* |_\mathcal{R} = m&amp;lt;/tex&amp;gt;), то есть, &amp;lt;tex&amp;gt;\mu^* A = mA &amp;lt;/tex&amp;gt;. Значит, &amp;lt;tex&amp;gt; \mu A = mA&amp;lt;/tex&amp;gt;, и второй пункт вытекает из первого. Докажем первый пункт.&lt;br /&gt;
&lt;br /&gt;
Для этого нам нужно показать, что для любого &amp;lt;tex&amp;gt;A \in \mathcal{R} &amp;lt;/tex&amp;gt; выполнялось &amp;lt;tex&amp;gt;\forall E \subset X: \mu^* E \geq \mu^*(E\cap A) + \mu^*(E\cap\overline A)&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;\mu^* E = +\infty&amp;lt;/tex&amp;gt;, то неравенство тривиально, поэтому считаем, что &amp;lt;tex&amp;gt;\mu^* E &amp;lt; +\infty&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;m&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\forall \varepsilon &amp;gt; 0\ \exists A_1, A_2 \ldots A_n \ldots \in \mathcal{R} : E \subset \bigcup\limits_j A_j,\ \sum\limits_j mA_j &amp;lt; \mu^∗E + \varepsilon&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;
&lt;br /&gt;
&amp;lt;tex&amp;gt;E \cap A \subset \bigcup\limits_j(A_j \cap A)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По аксиомам полукольца, &amp;lt;tex&amp;gt;A_j\cap A \in \mathcal{R}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит, мы получили покрытие этого множества элементами полукольца. &lt;br /&gt;
&lt;br /&gt;
Тогда, по определению &amp;lt;tex&amp;gt;\mu^*&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;\mu^*(E\cap A) \leq \sum\limits_j m(A_j\cap A)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При пересечении с &amp;lt;tex&amp;gt; \overline A &amp;lt;/tex&amp;gt; получим &amp;lt;tex&amp;gt;E\cap\overline A \subset \bigcup\limits_j(A_j\cap\overline A)&amp;lt;/tex&amp;gt;. Однако, здесь нет гарантий, что &amp;lt;tex&amp;gt;A_j\cap\overline A \in \mathcal{R}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_j\cap\overline A = A_j\setminus A = A_j\setminus (A\cap A_j)&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;A\cap A_j \in \mathcal{R}&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Тогда, по аксиомам полукольца, &amp;lt;tex&amp;gt;A_j\setminus (A\cap A_j) = \bigcup\limits_p D_{jp}&amp;lt;/tex&amp;gt; {{---}} дизъюнктны в &amp;lt;tex&amp;gt;\mathcal{R}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;E\cap\overline A \subset \bigcup\limits_j \bigcup\limits_p D_{jp}&amp;lt;/tex&amp;gt;, все &amp;lt;tex&amp;gt;D&amp;lt;/tex&amp;gt; {{---}} из полукольца.&lt;br /&gt;
&lt;br /&gt;
Значит, &amp;lt;tex&amp;gt;E\cap\overline A&amp;lt;/tex&amp;gt; покрывается элементами полукольца, так как &amp;lt;tex&amp;gt;\mu^*&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;\mu^*(E\cap\overline A) \leq \sum\limits_j \sum\limits_p mD_{jp}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A_j = (A_j \cap A) \cup \bigcup\limits_p D_{jp}&amp;lt;/tex&amp;gt; {{---}} из полукольца.&lt;br /&gt;
&lt;br /&gt;
Таким образом, &amp;lt;tex&amp;gt;A_j \in \mathcal{R}&amp;lt;/tex&amp;gt; разбивается в дизъюнктное объединение множеств из &amp;lt;tex&amp;gt;\mathcal{R}&amp;lt;/tex&amp;gt;. Отсюда, по &amp;lt;tex&amp;gt;\sigma&amp;lt;/tex&amp;gt;-аддитивности меры, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;mA_j = m(A\cap A_j) + \sum\limits_p mD_{jp}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\sum\limits_p mD_{jp} = mA_j - m(A\cap A_j)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда, &amp;lt;tex&amp;gt;\mu^*(E\cap\overline A)\leq \sum\limits_j (mA_j- m(A\cap A_j))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Складывая с предыдущим неравенством, получаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mu^*(E\cap A) + \mu^*(E\cap\overline A) \leq \sum\limits_j mA_j &amp;lt; \mu^*E+\varepsilon&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При &amp;lt;tex&amp;gt;\varepsilon \to 0&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;
|definition=Полученная мера &amp;lt;tex&amp;gt;\mu&amp;lt;/tex&amp;gt; {{---}} стандартное распространение по Каратеодори меры &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; с полукольца на &amp;lt;tex&amp;gt;\sigma&amp;lt;/tex&amp;gt;-алгебру.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Мы рассматриваем сигма-алгебру &amp;lt;tex&amp;gt;\mu^*&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;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;A \in \mathcal{A}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\mu A = 0&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;B\subset A&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \forall E\subset X&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверим, что &amp;lt;tex&amp;gt;\mu^*E\geq \mu^*(E\cap B) + \mu^*(E\cap\bar B)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;E\cap B \subset A&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда, по монотонности внешней меры, &amp;lt;tex&amp;gt;\mu^*(E\cap B) \leq \mu^*A = \mu A = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;E \cap\bar B \subset E&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\mu^*(E\cap\bar B) \leq \mu^*E&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значит, неравенство выполняется. Значит, &amp;lt;tex&amp;gt;B \in \mathcal A&amp;lt;/tex&amp;gt;, то есть измеримо.&lt;br /&gt;
&lt;br /&gt;
По монотонности меры, &amp;lt;tex&amp;gt;\mu B \leq \mu A&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;\mu A = 0 \Rightarrow \mu B = 0&amp;lt;/tex&amp;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;\mathcal{R}&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;\sigma&amp;lt;/tex&amp;gt;-алгебру приводит к полной мере.&lt;br /&gt;
&lt;br /&gt;
===Непрерывность===&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=Пусть &amp;lt;tex&amp;gt;E \subset X&amp;lt;/tex&amp;gt;; &amp;lt;tex&amp;gt;A\subset E\subset B&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;A, B&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;\mu&amp;lt;/tex&amp;gt;-измеримы, &amp;lt;tex&amp;gt;\mu(B\setminus A) = 0&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;E \in \mathcal{A}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=В силу написанного выше ясно, что &amp;lt;tex&amp;gt;E\setminus A\subset B\setminus A&amp;lt;/tex&amp;gt;. Последнее множество нульмерно. Значит, по полноте меры, &amp;lt;tex&amp;gt;E\setminus A \in \mathcal A&amp;lt;/tex&amp;gt;. Тогда, &amp;lt;tex&amp;gt;E\in \mathcal{A}&amp;lt;/tex&amp;gt;, так как &amp;lt;tex&amp;gt;E = A \cup (E\setminus A)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====Следствие====&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|about = Критерий &amp;lt;tex&amp;gt;\mu^*&amp;lt;/tex&amp;gt;-измеримости&lt;br /&gt;
|statement =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;E\subset X&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; — &amp;lt;tex&amp;gt;\mu^*&amp;lt;/tex&amp;gt;-измеримо &amp;lt;tex&amp;gt;\iff&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\forall\varepsilon &amp;gt; 0&amp;lt;/tex&amp;gt;  &amp;lt;tex&amp;gt; \exists (A_\varepsilon, B_\varepsilon), A_\varepsilon, B_\varepsilon\in\mathcal{A} : A_\varepsilon \subset E \subset B_\varepsilon : \mu(B_\varepsilon\setminus A_\varepsilon) &amp;lt; \varepsilon&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=Возьмём &amp;lt;tex&amp;gt;\varepsilon_n = \frac1n&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;A_n = A_{\varepsilon_n}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;B_n = B_{\varepsilon_n}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A = \bigcup\limits_{n = 1}^{\infty} A_n&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;B = \bigcap\limits_{n = 1}^{\infty} B_n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как мы работаем с &amp;lt;tex&amp;gt;\sigma&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;A_n \subset E \subset B_n&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;A \subset E \subset B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\forall n : B\setminus A \subset B_n\setminus A_n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда, по монотонности меры, &amp;lt;tex&amp;gt;\mu(B\setminus A)\leq \mu(B_n\setminus A_n) &amp;lt; \frac1n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;n \to \infty \Rightarrow \mu(B\setminus A) = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Мы нашли пару измеримых множеств, между которыми вставлено &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;\mu(B\setminus A) = 0&amp;lt;/tex&amp;gt;. Значит, по непрерывности &amp;lt;tex&amp;gt; \mu &amp;lt;/tex&amp;gt;, утверждение верно.&lt;br /&gt;
&lt;br /&gt;
Обратное верно, так как можно взять &amp;lt;tex&amp;gt;A=B=E&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Процесс Каратеодори==&lt;br /&gt;
Забавно: &amp;lt;tex&amp;gt;m, \mathcal{R} \to \mu^* \to \mu, \mathcal{A} \to \nu^*&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Построим &amp;lt;tex&amp;gt;\nu^*&amp;lt;/tex&amp;gt; {{---}} внешняя мера для &amp;lt;tex&amp;gt;\mu, \mathcal{A}&amp;lt;/tex&amp;gt; (&amp;lt;tex&amp;gt;\sigma&amp;lt;/tex&amp;gt;-алгебра {{---}} частный случай полукольца).&lt;br /&gt;
Возникает вопрос: &amp;quot;Построили ли мы что-то новое?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&amp;lt;tex&amp;gt;\mu^*=\nu^*&amp;lt;/tex&amp;gt; (повторное применение процесса Каратеодори не приводит нас к новой мере).&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt;\mu^*&amp;lt;/tex&amp;gt; строилось на базе покрытий из &amp;lt;tex&amp;gt;\mathcal{R}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\mathcal{R} \subset \mathcal{A}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\nu^*&amp;lt;/tex&amp;gt; строится на базе покрытий из &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt;. Это значит, что покрытий стало больше, то есть,&lt;br /&gt;
&amp;lt;tex&amp;gt;\forall E \subset X : \nu^* E \leq \mu^* E&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Осталось доказать, что &amp;lt;tex&amp;gt;\mu^* E \leq \nu^* E&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если новая мера бесконечна, то неравенство очевидно. Тогда, пусть она конечна.&lt;br /&gt;
&lt;br /&gt;
Раз она порождена &amp;lt;tex&amp;gt;\mu&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\forall \varepsilon&amp;lt;/tex&amp;gt; есть система измеримых множеств &amp;lt;tex&amp;gt;B_1, B_2, \ldots, B_n, \ldots \in \mathcal{A}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;E\subset\bigcup\limits_nB_n&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\sum\limits_n\mu B_n &amp;lt; \nu^*E+\varepsilon&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В частности, &amp;lt;tex&amp;gt;\forall n : \mu B_n &amp;lt; +\infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Но &amp;lt;tex&amp;gt;\mu B_n = \mu^* B_n&amp;lt;/tex&amp;gt;, и, раз она конечна и порождена мерой &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;, то &lt;br /&gt;
&amp;lt;tex&amp;gt;\exists A_{n_1}, A_{n_2}, \ldots, A_{n_j}, \ldots \in \mathcal{R} : \sum\limits_jmA_{n_j} &amp;lt; \mu B_n + \frac\varepsilon{2^n}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;B_n \subset \bigcup\limits_j A_{n_j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отсюда, в частности, получается, что &amp;lt;tex&amp;gt;E \subset \bigcup\limits_n B_n \subset \bigcup\limits_n \bigcup\limits_j A_{nj}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\sum\limits_n\mu B_n &amp;lt; \nu^*E + \varepsilon&amp;lt;/tex&amp;gt;. Заменяя каждое слагаемое ряда меньшей величиной, получаем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\sum\limits_n\left(\sum\limits_jmA_{nj} - \frac\varepsilon{2^n} \right) &amp;lt; \nu^* E + \varepsilon&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\sum\limits_n\sum\limits_j mA_{nj} &amp;lt; \nu^* E + 2\varepsilon&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;E \subset \bigcup\limits_n\bigcup\limits_j A_{nj}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\mu^*E \leq \sum\limits_n\sum\limits_j mA_{nj}&amp;lt;/tex&amp;gt; (по определению &amp;lt;tex&amp;gt;\mu^*&amp;lt;/tex&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Сопоставляя с предыдущим неравенством, &amp;lt;tex&amp;gt;\mu^*E \le \nu^* E + 2\varepsilon&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устремляя &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt; к нулю, побеждаем.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Мера, порожденная внешней мерой|&amp;lt;&amp;lt;]] [[Объём n-мерного прямоугольника|&amp;gt;&amp;gt;]]&lt;br /&gt;
[[Категория:Математический анализ 2 курс]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%B0%D1%8F_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F_%D0%BE_%D1%8F%D0%B7%D1%8B%D0%BAe&amp;diff=83415</id>
		<title>Основная информация о языкe</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%B0%D1%8F_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F_%D0%BE_%D1%8F%D0%B7%D1%8B%D0%BAe&amp;diff=83415"/>
				<updated>2022-09-01T04:53:59Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
== Java ==&lt;br /&gt;
'''Java''' - объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) вне зависимости от компьютерной архитектуры. Дата официального выпуска — 23 мая 1995 года.&lt;br /&gt;
&lt;br /&gt;
== Основные особенности ==&lt;br /&gt;
Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.&lt;br /&gt;
&lt;br /&gt;
Достоинство подобного способа выполнения программ — в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.&lt;br /&gt;
&lt;br /&gt;
Язык Java — язык номер один программирования бизнес-приложений. Бизнес-приложения — это многофункциональные программные системы и комплексы, предназначенные для автоматизации ключевых бизнес-функций и процессов внутри компании. Программисты бизнес-приложений получают в два раза больше программистов других приложений. Наличие таких приложений повышает эффективность ключевых бизнес-процессов предприятия, сократить сроки поиска и обработки информации, экономить материальные и человеческие ресурсы, автоматизировать типовые действия в рамках выполнения процессов и т.д.&amp;lt;ref&amp;gt;https://www.azone-it.ru/biznes-prilozheniya&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Часто к недостаткам концепции виртуальной машины относят то, что исполнение байт-кода виртуальной машиной может снижать производительность программ и алгоритмов, реализованных на языке Java. В последнее время был внесен ряд усовершенствований, которые несколько увеличили скорость выполнения программ на Java:&lt;br /&gt;
&lt;br /&gt;
*применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,&lt;br /&gt;
*широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках,&lt;br /&gt;
*аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).&lt;br /&gt;
&lt;br /&gt;
По данным сайта [http://shootout.alioth.debian.org shootout.alioth.debian.org], для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и бо́льшее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++.&lt;br /&gt;
&lt;br /&gt;
Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине. Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы .NET компанией Microsoft.&lt;br /&gt;
&lt;br /&gt;
== Hello world ==&lt;br /&gt;
 /*&lt;br /&gt;
  *Hello world на Java&lt;br /&gt;
  *Назовите файл &amp;quot;Hello.java&amp;quot;&lt;br /&gt;
  */&lt;br /&gt;
 public class Hello {&lt;br /&gt;
     // Программа начинается с обращения к main()&lt;br /&gt;
     public static void main(String[] args){&lt;br /&gt;
         System.out.println(&amp;quot;Hello world!&amp;quot;);&lt;br /&gt;
     }    &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Компиляция и запуск ==&lt;br /&gt;
Чтобы скомпилировать программу '''Hello''', запустите компилятор (''javac''), указав имя исходного файла, в консоли:&lt;br /&gt;
&lt;br /&gt;
 javac Hello.java&lt;br /&gt;
&lt;br /&gt;
Компилятор ''javac'' создаст файл '''Hello.class''', содержащий версию кода виртуальной машины программы. Чтобы действительно воспользоваться программой, необходимо воспользоваться программой запуска приложений Java, которая носит имя ''java''. При этом ей потребуется передать имя класса '''Hello''' в качестве аргумента в консоли:&lt;br /&gt;
&lt;br /&gt;
 java Hello&lt;br /&gt;
&lt;br /&gt;
При выполнении на экране отобразится следующий вывод:&lt;br /&gt;
 &lt;br /&gt;
 Hello world!&lt;br /&gt;
&lt;br /&gt;
== Средства разработки ==&lt;br /&gt;
*[http://www.oracle.com/technetwork/java/javase/overview/index.html JDK] - помимо набора библиотек для платформ Java SE и Java EE содержит компилятор командной строки javac и набор утилит, также работающих в режиме командной строки.&lt;br /&gt;
*[http://netbeans.org/ Netbeans IDE] - свободная интегрированная среда разработки для всех платформ Java — Java ME, Java SE и Java EE. Пропагандируется Sun Microsystems, разработчиком Java, как базовое средство для разработки ПО на языке Java и других языках (C, C++, PHP, Fortran и др.).&lt;br /&gt;
*[http://eclipse.org/ Eclipse IDE] - свободная интегрированная среда разработки для Java SE, Java EE и Java ME[40]. Пропагандируется IBM, одним из важнейших разработчиков корпоративного ПО, как базовое средство для разработки ПО на языке Java и других языках (C, C++, Ruby, Fortran и др.).&lt;br /&gt;
*[http://www.jetbrains.com/idea/ IntelliJ IDEA] - среда разработки для платформ Java SE, Java EE и Java ME. Разработчик — компания JetBrains. Распространяется в двух версиях: свободной бесплатной (Community Edition) и коммерческой проприетарной (Ultimate Edition).&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Java Java - Википедия]&lt;br /&gt;
* Г. Шилдт - Java. Полное руководство, 8-е изд.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Язык программирования Java]]&lt;br /&gt;
[[Категория: Введение в Java]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D0%BF%D1%80%D0%BE%D1%84%D0%B8%D0%BB%D1%8E&amp;diff=83414</id>
		<title>Динамическое программирование по профилю</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D0%BF%D1%80%D0%BE%D1%84%D0%B8%D0%BB%D1%8E&amp;diff=83414"/>
				<updated>2022-09-01T04:53:50Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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='''Динамическое программирование по профилю''' (англ. ''dynamic programming with profile'') {{---}} способ оптимизации перебора количества вариантов с помощью [[Динамическое программирование|динамического программирования]], когда одно из измерений небольшое.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Профиль''' (англ. ''profile'') {{---}} один из столбцов (строк), удовлетворяющий условию задачи. Обычно используется в качестве состояния динамики.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Общие принципы ==&lt;br /&gt;
Обычно дана таблица и надо посчитать количество замощений этой таблицы некоторыми фигурами (замощение шахматной доски доминошками). Можно перебрать все варианты и выбрать из них удовлетворяющие условию. Но можно воспользоваться методом динамического программирования по профилю и сократить время по одной размерности до линейной. Затем пусть у нас есть правило по которому надо заполнить и для него нам надо &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; предыдущих линий. Тогда можно перебрать все замощения  длиной &amp;lt;tex&amp;gt;k\times n&amp;lt;/tex&amp;gt;. В итоге нужно заполнить данную таблицу этими замощениями. Получается, что если перебирать все варианты нам понадобится &amp;lt;tex&amp;gt;O(a^{nm})&amp;lt;/tex&amp;gt; времени, а если перебирать только состояния и переходить по ним нам потребуется &amp;lt;tex&amp;gt;O(a^{kn}m)&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;
Найти количество способов замостить таблицу &amp;lt;tex&amp;gt;n\times m&amp;lt;/tex&amp;gt; с помощью доминошек размерами  &amp;lt;tex&amp;gt;1\times 2,2\times 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==='''Решение'''===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Домино.png|270px|thumb|right|Переходы (1-правильный переход, 2,3-неправильные)]]&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;1&amp;lt;/tex&amp;gt; будет означать, что домино лежит горизонтально и заканчивается на этом столбце, иначе &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;. Таких профилей будет &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;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;j&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;1&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;.&lt;br /&gt;
&lt;br /&gt;
* Можно доложить в оставшиеся клетки вертикальные домино. То есть оставшиеся &amp;lt;tex&amp;gt;0&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;d[i][j] = 1&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;0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть так же &amp;lt;tex&amp;gt;a[k][i]&amp;lt;/tex&amp;gt; {{---}} количество способов замощения первых &amp;lt;tex&amp;gt;k-1&amp;lt;/tex&amp;gt; столбцов и заканчивавшийся на &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ом профиле.&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;a[k][i]=\displaystyle \sum_{j=0}^{2^n -1} a[k-1][j]\cdot d[j][i]&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответом будет &amp;lt;tex&amp;gt; \sum a[m][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; имеют четные размеры).&lt;br /&gt;
&lt;br /&gt;
==='''Реализация'''===&lt;br /&gt;
 &amp;lt;font color=green&amp;gt;// n, m {{---}} размер таблицы &amp;lt;/font&amp;gt; &lt;br /&gt;
   '''for''' &amp;lt;tex&amp;gt;\mathtt{i} = \mathtt{0}..(\mathtt{1} &amp;lt;&amp;lt; \ \mathtt{n}) - \mathtt{1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;\mathtt{j} = \mathtt{0}..(\mathtt{1} &amp;lt;&amp;lt; \ \mathtt{n}) - \mathtt{1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' можно перейти из &amp;lt;tex&amp;gt;\mathtt{i}&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;\mathtt{j}&amp;lt;/tex&amp;gt; профиль &lt;br /&gt;
            &amp;lt;tex&amp;gt;\mathtt{d}[\mathtt{i}][\mathtt{j}] = \mathtt{1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
 	'''else''' &lt;br /&gt;
 	    &amp;lt;tex&amp;gt;\mathtt{d}[\mathtt{i}][\mathtt{j}] = \mathtt{0}&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &amp;lt;tex&amp;gt;\mathtt{a}[\mathtt{0}][\mathtt{0}] = \mathtt{1}&amp;lt;/tex&amp;gt; &amp;lt;font color=green&amp;gt;// Так как мы можем начать только с профиля где все клетки 0 &amp;lt;/font&amp;gt; &lt;br /&gt;
 '''for''' &amp;lt;tex&amp;gt;k = \mathtt{1}..\mathtt{m} - \mathtt{1} &amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;\mathtt{i} = \mathtt{0}..(\mathtt{1} &amp;lt;&amp;lt; \ \mathtt{n}) - \mathtt{1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''for''' &amp;lt;tex&amp;gt;\mathtt{j} = \mathtt{0}..(\mathtt{1} &amp;lt;&amp;lt; \ \mathtt{n}) - \mathtt{1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
 	    &amp;lt;tex&amp;gt;\mathtt{a}[\mathtt{k}][\mathtt{i}] = \mathtt{a}[\mathtt{k}][\mathtt{i}] + \mathtt{a}[\mathtt{k} - \mathtt{1}][\mathtt{j}]  \cdot  \mathtt{d}[\mathtt{j}][\mathtt{i}]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &amp;lt;tex&amp;gt;\mathtt{ans} = \mathtt{0}&amp;lt;/tex&amp;gt;&lt;br /&gt;
 '''for''' &amp;lt;tex&amp;gt;\mathtt{i} = \mathtt{0}..(\mathtt{1} \lt \lt \ \mathtt{n}) - \mathtt{1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' можно закончить &amp;lt;tex&amp;gt;\mathtt{i}&amp;lt;/tex&amp;gt; профилем&lt;br /&gt;
         &amp;lt;tex&amp;gt;\mathtt{ans} = \mathtt{ans} + \mathtt{a}[\mathtt{m} - \mathtt{1}][\mathtt{i}]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 '''return''' &amp;lt;tex&amp;gt;\mathtt{ans}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Оценка сложности: '''&lt;br /&gt;
подсчет &amp;lt;tex&amp;gt;d - 2^{2n}&amp;lt;/tex&amp;gt; , и подсчет &amp;lt;tex&amp;gt;a - 2^{2n}m&amp;lt;/tex&amp;gt; в итоге &amp;lt;tex&amp;gt;O(2^{2n}m)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
''' Оценка памяти: '''&lt;br /&gt;
&amp;lt;tex&amp;gt;O(2^{2n} + 2^{2n}m)&amp;lt;/tex&amp;gt;, так же можно заметить что в массиве &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; для &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; состояния нам нужно только &amp;lt;tex&amp;gt;k - 1&amp;lt;/tex&amp;gt; состояние, при такой реализации нужно будет &amp;lt;tex&amp;gt;O(2^{2n})&amp;lt;/tex&amp;gt;. Еще можно не считать массив &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;, а просто каждый раз перепроверять можем ли мы перейти в это состояние в итоге потребуется &amp;lt;tex&amp;gt;O(2^{n + 1})&amp;lt;/tex&amp;gt; памяти, но нам потребуется больше времени &amp;lt;tex&amp;gt;2^{2n}mf(i,j)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;f(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;n&amp;lt;/tex&amp;gt; и тогда время получается &amp;lt;tex&amp;gt;O(2^{2n}mn)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== '''Задача о симпатичных узорах''' ==&lt;br /&gt;
==='''Условие'''===&lt;br /&gt;
Дана таблица &amp;lt;tex&amp;gt;n\times m&amp;lt;/tex&amp;gt;, каждая клетка которой может быть окрашена в один из двух&lt;br /&gt;
цветов: белый или черный. Симпатичным узором называется такая раскраска, при&lt;br /&gt;
которой не существует квадрата &amp;lt;tex&amp;gt;2\times 2&amp;lt;/tex&amp;gt;, в котором все клетки одного цвета. Требуется найти количество симпатичных узоров для соответствующей таблицы.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Симпатичне узоры.png|240px|thumb|right|]]&lt;br /&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;1&amp;lt;/tex&amp;gt; будет означать что клетка закрашена в черный цвет, и &amp;lt;tex&amp;gt;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;j&amp;lt;/tex&amp;gt;-ый можно перейти если выполнено условие:&lt;br /&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;2\times 2&amp;lt;/tex&amp;gt; одного цвета&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;d[i][j] = 1&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;0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть так же &amp;lt;tex&amp;gt;a[k][i]&amp;lt;/tex&amp;gt; {{---}} количество способов раскрашивания первые &amp;lt;tex&amp;gt;k-1&amp;lt;/tex&amp;gt; столбцов и заканчивавшийся на &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ом профиле.&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;a[k][i]=\displaystyle \sum_{j=0}^{2^n -1} a[k-1][j]\cdot d[j][i]&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответом будет &amp;lt;tex&amp;gt; \displaystyle \sum_{i=0}^{2^n -1} a[m][i]&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Реализация'''===&lt;br /&gt;
 &amp;lt;font color=green&amp;gt;// n, m {{---}} размер таблицы &amp;lt;/font&amp;gt;  &lt;br /&gt;
 '''for''' &amp;lt;tex&amp;gt;\mathtt{i} = \mathtt{0}..(\mathtt{1} &amp;lt;&amp;lt; \ \mathtt{n}) - \mathtt{1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;\mathtt{j} = \mathtt{0}..(\mathtt{1} &amp;lt;&amp;lt; \ \mathtt{n}) - \mathtt{1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' можно перейти из &amp;lt;tex&amp;gt;\mathtt{i}&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;\mathtt{j}&amp;lt;/tex&amp;gt; профиль &lt;br /&gt;
             &amp;lt;tex&amp;gt;\mathtt{d}[\mathtt{i}][\mathtt{j}]\ =\ \mathtt{1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
 	'''else'''&lt;br /&gt;
 	    &amp;lt;tex&amp;gt;\mathtt{d}[\mathtt{i}][\mathtt{j}]\ =\ \mathtt{0}&amp;lt;/tex&amp;gt;&lt;br /&gt;
 '''for''' &amp;lt;tex&amp;gt;\mathtt{i} = \mathtt{0}..(\mathtt{1} &amp;lt;&amp;lt; \ \mathtt{n}) - \mathtt{1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;\mathtt{a}[0][\mathtt{i}]\ = \mathtt{1}&amp;lt;/tex&amp;gt; &amp;lt;font color=green &amp;gt;// Так как мы можем начать c любого профиля&amp;lt;/font&amp;gt;&lt;br /&gt;
 '''for''' &amp;lt;tex&amp;gt;\mathtt{k} = \mathtt{1}.. \mathtt{m} - \mathtt{1} &amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for'''  &amp;lt;tex&amp;gt;\mathtt{i} = \mathtt{0}..(\mathtt{1} &amp;lt;&amp;lt; \ \mathtt{n}) - \mathtt{1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''for''' &amp;lt;tex&amp;gt;\mathtt{j} = \mathtt{0}..(\mathtt{1} &amp;lt;&amp;lt; \ \mathtt{n}) - \mathtt{1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
 	     &amp;lt;tex&amp;gt;\mathtt{a}[\mathtt{k}][\mathtt{i}] = \mathtt{a}[\mathtt{k}][\mathtt{i}] + \mathtt{a}[\mathtt{k} - 1][\mathtt{j}] \cdot \mathtt{d}[\mathtt{j}][\mathtt{i}]&amp;lt;/tex&amp;gt;  &lt;br /&gt;
 &amp;lt;tex&amp;gt;\mathtt{ans} = \mathtt{0}&amp;lt;/tex&amp;gt;&lt;br /&gt;
 '''for''' &amp;lt;tex&amp;gt;\mathtt{i} = \mathtt{0}..(\mathtt{1} &amp;lt;&amp;lt; \ \mathtt{n}) - \mathtt{1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;\mathtt{ans} = \mathtt{ans} + \mathtt{a}[\mathtt{m} - \mathtt{1}][\mathtt{i}]&amp;lt;/tex&amp;gt; &amp;lt;font color=green&amp;gt;// Так как мы можем закончить любым профилем &amp;lt;/font&amp;gt;&lt;br /&gt;
 '''return''' &amp;lt;tex&amp;gt;\mathtt{ans}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Оценка сложности: '''&lt;br /&gt;
подсчет &amp;lt;tex&amp;gt;d - 2^{2n}&amp;lt;/tex&amp;gt; , и подсчет &amp;lt;tex&amp;gt;a - 2^{2n}m&amp;lt;/tex&amp;gt; в итоге &amp;lt;tex&amp;gt;O(2^{2n}m)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
''' Оценка памяти: '''&lt;br /&gt;
&amp;lt;tex&amp;gt;O(2^{2n}+2^{2n}m)&amp;lt;/tex&amp;gt;, так же можно заметить что в массиве &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; для &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; состояния нам нужно только &amp;lt;tex&amp;gt;k-1&amp;lt;/tex&amp;gt; состояние, при такой реализации нужно будет &amp;lt;tex&amp;gt;O(2^{2n})&amp;lt;/tex&amp;gt;. Еще можно не считать массив &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;, а просто каждый раз перепроверять можем ли мы перейти в это состояние в итоге потребуется &amp;lt;tex&amp;gt;O(2^{n + 1})&amp;lt;/tex&amp;gt; памяти, но нам потребуется больше времени &amp;lt;tex&amp;gt;2^{2n}mf(i,j)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;f(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;n&amp;lt;/tex&amp;gt; и тогда время получается &amp;lt;tex&amp;gt;O(2^{2n}mn)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Динамика по изломанному профилю ==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Изломанный профиль''' (англ. ''broken profile'') {{---}} обобщение прямого профиля на случай, когда обработанным является не целое число столбцов, а некоторое количество столбцов и несколько первых клеток следующего столбца.&lt;br /&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;-ю вертикаль сверху вниз, она переходит на предыдущую вертикаль и спускается до низу. Теперь профиль — это не только маска, но ещё и место излома.&lt;br /&gt;
[[Файл:img34.gif|300px|thumb|right|]]&lt;br /&gt;
Профилем будет пара &amp;lt;tex&amp;gt;(p, i)&amp;lt;/tex&amp;gt;, в &amp;lt;tex&amp;gt;p&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;i + 1&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;n - 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;d[pr_1][pr_2] = 1&amp;lt;/tex&amp;gt; если из профиля &amp;lt;tex&amp;gt;pr_1&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;(p_1, i_1)&amp;lt;/tex&amp;gt; можно перейти в &amp;lt;tex&amp;gt;pr_2 = (p_2, i_2)&amp;lt;/tex&amp;gt;, иначе &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Eсли &amp;lt;tex&amp;gt;i &amp;lt; n - 1&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;i_1 + 1 = i_2&amp;lt;/tex&amp;gt;, иначе &amp;lt;tex&amp;gt;i_2 = 0 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
* Mожно так положить доминошку, накрывающую квадратик с номером &amp;lt;tex&amp;gt;i + 1&amp;lt;/tex&amp;gt;, что после этого в &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; будет храниться в точности информация о соответствующих квадратиках.&lt;br /&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;(p, i)&amp;lt;/tex&amp;gt; логично отождествить с &amp;lt;tex&amp;gt;(p, i + 1)&amp;lt;/tex&amp;gt;. Условно пишется  {{---}} &amp;quot;&amp;lt;tex&amp;gt;i + 1&amp;lt;/tex&amp;gt;&amp;quot;, однако, нужно всегда иметь в виду возможность &amp;lt;tex&amp;gt;i = n - 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Легко заметить, что количество профилей увеличилось в &amp;lt;tex&amp;gt;2n&amp;lt;/tex&amp;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;2^n&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=green&amp;gt;//Для профиля (p, i) выводятся все переходы из него (нумерация горизонталей начинается с нуля и i = 0..n - 1)&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=green&amp;gt;// Функция bit(x,i), возвращающая единицу или ноль или i-й бит в двоичной записи числа x&amp;lt;/font&amp;gt;&lt;br /&gt;
 '''print_all_links'''(&amp;lt;tex&amp;gt;\mathtt{p}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\mathtt{i}&amp;lt;/tex&amp;gt;):&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt;\mathtt{bit}(\mathtt{p, \mathtt{i} + \mathtt{1}}) == \mathtt{0}&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;\mathtt{i} == \mathtt{n} - \mathtt{1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''println'''&amp;lt;tex&amp;gt;((\mathtt{p} - (\mathtt{2} &amp;lt;&amp;lt; \ \mathtt{i})) &amp;lt;&amp;lt; \ \mathtt{1}&amp;lt;/tex&amp;gt;, &amp;quot; &amp;quot;, &amp;lt;tex&amp;gt;\mathtt{0})&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''else'''&lt;br /&gt;
             '''println'''&amp;lt;tex&amp;gt;(\mathtt{p} - (\mathtt{2} &amp;lt;&amp;lt; \ \mathtt{i})&amp;lt;/tex&amp;gt;, &amp;quot; &amp;quot;, &amp;lt;tex&amp;gt;\mathtt{i} + \mathtt{1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''else''' &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;\mathtt{bit}(\mathtt{p}, \mathtt{i}) == \mathtt{0}&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''if''' &amp;lt;tex&amp;gt;\mathtt{i} == \mathtt{n} - \mathtt{1} &amp;lt;/tex&amp;gt;&lt;br /&gt;
                '''println'''&amp;lt;tex&amp;gt;((\mathtt{p} &amp;lt;&amp;lt; \ \mathtt{1})&amp;lt;/tex&amp;gt;, &amp;quot; &amp;quot;, &amp;lt;tex&amp;gt;\mathtt{0})&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''else'''   &lt;br /&gt;
                '''println'''&amp;lt;tex&amp;gt;(\mathtt{p} + (\mathtt{1} &amp;lt;&amp;lt; \ \mathtt{n})&amp;lt;/tex&amp;gt;, &amp;quot; &amp;quot;, &amp;lt;tex&amp;gt;(\mathtt{i} + \mathtt{1}) % \mathtt{n})&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt;\mathtt{i} &amp;lt; \mathtt{n} - \mathtt{1}&amp;lt;/tex&amp;gt; &amp;amp;&amp;amp; &amp;lt;tex&amp;gt;\mathtt{bit}(\mathtt{p, \mathtt{i} + \mathtt{2}}) == \mathtt{0}&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''println'''&amp;lt;tex&amp;gt;(\mathtt{p} + (\mathtt{4} &amp;lt;&amp;lt; \ \mathtt{i})&amp;lt;/tex&amp;gt;, &amp;quot; &amp;quot;, &amp;lt;tex&amp;gt;\mathtt{i} + \mathtt{1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
[[Файл:ok.jpg|640px|thumb|left|Возможные переходы]]&lt;br /&gt;
&lt;br /&gt;
При такой реализации существует немало профилей только с одним переходом (например, у которых &amp;lt;tex&amp;gt;(i + 1)&amp;lt;/tex&amp;gt;-й бит равен единице).&lt;br /&gt;
Отождествим все профили с один переходом с теми, кто их них получается. Это будет выглядеть так: пусть &amp;lt;tex&amp;gt;pr_2&amp;lt;/tex&amp;gt; (и только он) получается из &amp;lt;tex&amp;gt;pr_1&amp;lt;/tex&amp;gt;, который, в свою очередь, получается из &amp;lt;tex&amp;gt;pr_0&amp;lt;/tex&amp;gt;. Тогда имеются такие соотношения: &amp;lt;tex&amp;gt;d[pr_0, pr_1] = 1&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;d[pr_1, pr_2] = 1&amp;lt;/tex&amp;gt;. Отождествить &amp;lt;tex&amp;gt;pr_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;pr_2&amp;lt;/tex&amp;gt; {{---}} это, по сути, заменить эти два соотношение на одно, то есть теперь &amp;lt;tex&amp;gt;d[pr_0, pr_1] = 0&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;d[pr_1, pr_2] = 0&amp;lt;/tex&amp;gt;, но &amp;lt;tex&amp;gt;d[pr_0, pr_2] = 1&amp;lt;/tex&amp;gt;, и так далее.&lt;br /&gt;
&lt;br /&gt;
Таким образом, возможно сокращение профилей не менее чем вдвое. Хотя можно совершить дальнейшие оптимизации.&lt;br /&gt;
 &lt;br /&gt;
В итоге асимптотика составляет &amp;lt;tex&amp;gt;O(2^nnm)&amp;lt;/tex&amp;gt;. Это доказывает, что данный метод значительно лучше простого способа подсчёта динамики.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
*[[Динамическое программирование]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
*[http://informatics.mccme.ru/moodle/file.php/9/dyn_prof.pdf Динамическое программирование по профилю]&lt;br /&gt;
*[http://informatics.mccme.ru/mod/book/view.php?id=290&amp;amp;chapterid=78 Динамическое программирование по изломанному профилю]&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Динамическое программирование]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</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_2016_%D0%BE%D1%81%D0%B5%D0%BD%D1%8C&amp;diff=83413</id>
		<title>Список заданий по ДМ 2к 2016 осень</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_2016_%D0%BE%D1%81%D0%B5%D0%BD%D1%8C&amp;diff=83413"/>
				<updated>2022-09-01T04:53:43Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
# Петя придумал отношение средней связности: $u$ средне связана с $v$, если из $u$ достижима $v$ или из $v$ достижима $u$. Является ли это отношение отношением эквивалентности?&lt;br /&gt;
# Пусть граф $G$ - объединение двух различных простых путей из $u$ в $v$. Докажите, что в $G$ есть цикл.&lt;br /&gt;
# Харари 2.3&lt;br /&gt;
# Харари 2.5&lt;br /&gt;
# Харари 2.9&lt;br /&gt;
# Харари 2.13&lt;br /&gt;
# Харари 2.15&lt;br /&gt;
# Будем говорить, что $G$ связан короткими путями, если между любыми двумя вершинами в $G$ есть путь длины не более 3. Докажите, что либо $G$, либо $\overline G$ связан короткими путями.&lt;br /&gt;
# Харари 2.16&lt;br /&gt;
# Харари 2.20&lt;br /&gt;
# Харари 2.22&lt;br /&gt;
# Доказать или опровергнуть, что если ребро $uv$ - мост, то $u$ и $v$ - точки сочленения.&lt;br /&gt;
# Доказать или опровергнуть, что если $u$ и $v$ - точки сочленения, то $uv$ - мост.&lt;br /&gt;
# Какое максимальное число точек сочленения может быть в графе с $n$ вершинами?&lt;br /&gt;
# При каких соотношениях $a$, $b$, $n$, $m$, $k$ существует граф с $a$ точками сочленения, $b$ мостами, $n$ вершинами, $m$ рёбрами, $k$ компонентами связности?&lt;br /&gt;
# Рассмотрим отношение на рёбрах - $R$. $ab R cd$, если 1) $ab$ и $cd$ имеют общую вершину; 2) $ab$ и $cd$ лежат на цикле. Доказать, что вершинная двусвязность - это рефлексивно-транзитивное замыкание $R$.&lt;br /&gt;
# Доказать, что ребро $uv$ - мост тогда и только тогда, когда $uv$ вершинно двусвязно только с самим собой.&lt;br /&gt;
# Харари 4.2&lt;br /&gt;
# Харари 4.3&lt;br /&gt;
# Харари 2.29&lt;br /&gt;
# Харари 2.31&lt;br /&gt;
# Харари 2.32&lt;br /&gt;
# Харари 2.33&lt;br /&gt;
# Харари 2.35&lt;br /&gt;
# Харари 2.36&lt;br /&gt;
# Харари 7.2&lt;br /&gt;
# Харари 7.4&lt;br /&gt;
# Харари 7.5&lt;br /&gt;
# Харари 7.7&lt;br /&gt;
# Харари 7.9&lt;br /&gt;
# Харари 7.14&lt;br /&gt;
# Харари 7.17&lt;br /&gt;
# Харари 7.18&lt;br /&gt;
# Харари 3.2&lt;br /&gt;
# Наименьшее число вершин в кубическом графе, имеющем мост, равно 10. (Харари 3.3)&lt;br /&gt;
# Харари 3.4&lt;br /&gt;
# Харари 3.5&lt;br /&gt;
# Харари 3.6&lt;br /&gt;
# Харари 3.7&lt;br /&gt;
# Харари 3.9&lt;br /&gt;
# Посчитать хроматический многочлен цикла $C_n$&lt;br /&gt;
# Посчитать хроматический многочлен колеса $C_n + K_1$.&lt;br /&gt;
# Посчитать полного двудольного графа $K_{n,m}$.&lt;br /&gt;
# Харари 12.2&lt;br /&gt;
# Харари 12.3&lt;br /&gt;
# Харари 12.4&lt;br /&gt;
# Харари 12.5&lt;br /&gt;
# Харари 12.6&lt;br /&gt;
# Харари 12.12&lt;br /&gt;
# Доказать формулу Зыкова для хроматического многочлена графа $G$: $P_G(x)=\sum\limits_{i=1}^n pt(G,i)x^{\underline{i}}$, где $pt(G,i)$ — число способов разбить вершины $G$ на $i$ независимых множеств.&lt;br /&gt;
# Доказать формулу Уитни: пусть $G$ - обыкновенный $(n, m)$ - граф. Тогда коэффициент при $x^i$, где $1\le i\le n$ в хроматическом многочлене $P_G(x)$ равен $\sum \limits_{j=0}^{m}{(-1)^jN(i, j)}$, где $N(i, j)$ - число остовных подграфов графа $G$, имеющих $i$ компонент связности и $j$ рёбер.&lt;br /&gt;
# Харари 11.1&lt;br /&gt;
# Харари 11.2&lt;br /&gt;
# Харари 11.3&lt;br /&gt;
# Харари 11.7&lt;br /&gt;
# Харари 11.8&lt;br /&gt;
# Харари 11.9&lt;br /&gt;
# Харари 11.10&lt;br /&gt;
# Харари 11.14&lt;br /&gt;
# Харари 11.15&lt;br /&gt;
# Харари 11.25&lt;br /&gt;
# Харари 9.1&lt;br /&gt;
# Харари 9.3&lt;br /&gt;
# Харари 9.4&lt;br /&gt;
# Харари 9.5&lt;br /&gt;
# Харари 9.8&lt;br /&gt;
# Харари 9.9&lt;br /&gt;
# Харари 9.13&lt;br /&gt;
# Харари 8.1&lt;br /&gt;
# Харари 8.2&lt;br /&gt;
# Харари 8.3&lt;br /&gt;
# Харари 8.8&lt;br /&gt;
# Харари 8.9&lt;br /&gt;
# Харари 8.10&lt;br /&gt;
# Харари 8.11&lt;br /&gt;
# Матроид с выкинутым элементом. Пусть $M$ - матроид. Обозначим как $M\setminus x$ матроид, где из носителя выкинут элемент $x$. Множества, не содержавшие $x$, остаются независимыми. Формально, если $M = \langle X, I\rangle$, то $M\setminus x = \langle X \setminus x, \{A | A \in I, x \not\in A\}\rangle$. Докажите, что для любых $M$ и $x$ получившаяся конструкция $M\setminus x$ является матроидом.&lt;br /&gt;
# Матроид, стянутый по элементу. Пусть $M$ - матроид. Обозначим как $M/x$ матроид, где из носителя выкинут элемент $x$. Независимыми объявляются множества, которые ранее содержали $x$, после удаления из них этого элемента. Формально, если $M = \langle X, I\rangle$, то $M/x = \langle X \setminus x, \{A \setminus x | A \in I, x \in A\}\rangle$. Докажите, что для любых $M$ и $x$, таких что $\{x\}\in I$ получившаяся конструкция $M/x$ является матроидом.&lt;br /&gt;
# Прямая сумма матроидов. Пусть $M_1 = \langle X_1, I_1\rangle$ и $M_2=\langle X_2, I_2\rangle$ - матроиды с непересекающимися носителями ($X_1 \cap X_2 = \varnothing$). Обозначим как $M_1+M_2$ следующую конструкцию: $M_1 + M_2 = \langle X_1 \cup X_2, I = \{A \cup B|A \in I_1, B \in I_2\}$. Докажите, что сумма матроидов является матроидом.&lt;br /&gt;
# Разноцветные множества. Пусть $X$ - множество элементов, каждый из которых раскрашен в некоторый цвет. Будем называть независимыми множества, в которых все элементы разного цвета. Докажите, что эта конструкция является матроидом. Используйте определение матроида.&lt;br /&gt;
# Представьте конструкцию из предыдущего примера в виде прямой суммы универсальных матроидов.&lt;br /&gt;
# Является ли алгоритм Прима вариантом алгоритма Радо-Эдмондса?&lt;br /&gt;
# Является ли венгерский алгоритм вариантом алгоритма Радо-Эдмондса?&lt;br /&gt;
# Образуют ли паросочетания в полном графе семейство независимых множеств некоторого матроида?&lt;br /&gt;
# Рассмотрим кратчайшие пути из $s$ в $t$ в неориентированном невзвешенном графе. Назовем множество ребер независимым, если оно лежит на некотором кратчайшем пути. Образует ли эта конструкция семейство независимых множеств некоторого матроида?&lt;br /&gt;
# Верно ли, что в графовом матроиде любая база пересекается с любым циклом?&lt;br /&gt;
# Верно ли, что в матричном матроиде любая база пересекается с любым циклом?&lt;br /&gt;
# Верно ли, что в любом матроиде любая база пересекается с любым циклом?&lt;br /&gt;
# Обратная аксиома баз. Докажите, что если $B_1$ и $B_2$ - базы матроида, то для любого $y \in B_2 \setminus B_1$ найдется $x \in B_1 \setminus B_2$, такой что $B_1 \setminus x \cup y$ тоже база.&lt;br /&gt;
# Двойственный матроид. Пусть $M = \langle X, I \rangle$ - матроид. Обозначим как $M^*$ следующую констркуцию: $M^* = \langle X, \{A | \exists B $ - база $M,  A \cap B = \varnothing\}\rangle$. Докажите, что $M^*$ является матроидом.&lt;br /&gt;
# Циклы двойственного матроида называются коциклами. Докажите, что любая база пересекается с любым коциклом?&lt;br /&gt;
# Урезанный матроид. Пусть $M = \langle X, I \rangle$ - матроид. Обозначим как $M|_k$ следующую констркуцию: $M|_k = \langle X, \{A | A \in I, |A| \le k \}\rangle$. Докажите, что $M|_k$ является матроидом.&lt;br /&gt;
# Будем называть предматроидом пару $\langle X, I \rangle$, для которой выполнены аксимомы нетривиальности ($\varnothing \in I$) и наследования независимости ($A \subset B$, $B \in I$, тогда $A \in I$). Пусть в предматроиде для любой весовой функции верно работает жадный алгоритм Радо-Эдмондса. Докажите, что такой предматроид является матроидом.&lt;br /&gt;
# Пусть $M$ - предматроид. Как и в матроиде будем называть базой множества максимальное подмножество из $I$. Докажите, что если для каждого множества $A$ все его базы равномощны, то $M$ - матроид.&lt;br /&gt;
# Будем называть два элемента $x$ и $y$ матроида параллельными, если пара $\{x, y\}$ образует цикл. Докажите, что если $A$ независимо $x \in A$, а $x$ и $y$ параллельны, то $A\setminus x\cup y$ также независимо.&lt;br /&gt;
# Рассмотрим носитель некоторого матроида, упорядочим произвольным образом его элементы: $X = \{x_1, x_2, \ldots, x_n\}$. Пусть $Y = \left\{x_k  \,|\, rank(\{x_1, \ldots, x_{k-1}, x_k\}) &amp;gt; rank(\{x_1, \ldots, x_{k-1}\})\right\}$. Докажите, что $Y$ независимо.&lt;br /&gt;
# Какие универсальные матроиды являются матричными?&lt;br /&gt;
# Докажите, что матроид Вамоса не является представимым ни над каким полем.&lt;br /&gt;
# Докажите, что двойственный к матричному матроид является матричным. Как устроена его матрица?&lt;br /&gt;
# Когда двойственный к графовому матроид является графовым?&lt;br /&gt;
# Задан многочлен $A(x) = \sum\limits_{i=0}^n a_i x^i$ степени $n$ и число $x_0$. Найдите представление $A(x)$ в виде $A(x) = q(x) \cdot (x - x_0) + r$, где $r$~--- число, а $q(x)$~--- многочлен степени $n-1$ за время $O(n)$.&lt;br /&gt;
# Предложите способ восстановления коэффициентов многочлена $A(x) = \sum\limits_{i=0}^n a_i x^i$ по заданным $n+1$ парам $\{(x_0, y_0), (x_1, y_1), \ldots (x_n, y_n)\}$, где $y_i = A(x_i)$ и все $x_i$ различны, за $O(n^2)$.&lt;br /&gt;
# Пусть заданы значения многочлена $A(x)$ степени $n$ для всех $x = 0, 1, \ldots, n$. Для заданного числа $t &amp;gt; n$ посчитайте $A(t)$ за $O(n)$.&lt;br /&gt;
# Докажите, что $DFT(DFT(\langle a_0, a_1, \ldots, a_{n-1} \rangle)) = n \cdot \langle a_0, a_{n-1}, a_{n-2}, \ldots, a_1 \rangle$&lt;br /&gt;
# Опишите модификацию алгоритма FFT для случая, когда размер массива является степенью тройки ($n = 3^k$). Какое будет рекуррентное соотношение для времени работы и само время работы в таком случае? Указание: как разделить на 3 многочлена и как скомпоновать результаты?&lt;br /&gt;
# Как за один вызов алгоритма FFT посчитать преобразование Фурье 2 многочленов $A$ и $B$ с вещественными коэффициентами? Указание: нужно объединить 2 многочлена степени $n$ в один многочлен $C$ степени $n$ с комплексными коэффициентами и восстановить $DFT(A)$ и $DFT(B)$ по $DFT(C)$.&lt;br /&gt;
# Для заданных $n$ различных чисел $x_0, x_1, \ldots, x_{n-1}$ постройте многочлен $n$-й степени, который имеет корни только в заданных $n$ точках за $O(n \log^2 n)$&lt;br /&gt;
# Пусть мы хотим считать преобразование Фурье не в поле комплексных чисел, а в поле остатков по модулю $p$, где $p$~--- простое число. Для каких $p$ такое преобразование можно сделать, как найти соответствующий корень $n$-й степени из единицы $\omega_n$, и как изменится сам алгоритм?&lt;br /&gt;
# Даны 2 числа в десятичной системе счисления, каждое состоит из $n$ десятичных цифр. Найдите их произведение за $O(n \log n)$.&lt;br /&gt;
# Даны две строки $p$ и $t$ из символов 0 и 1 ($|p| \le |t|$). Найдите расстояние Хэмминга между $p$ и всеми подстроками $t[i..i+|p|-1]$ длины $|p|$ за $O(n \log n)$.&lt;br /&gt;
# Задан многочлен $A(x) = \sum\limits_{i=0}^{n - 1} a_i x^i, a_0 \neq 0$. Найдите такой многочлен $B(x)$, что $A(x) \times B(x) = 1 + x^n Q(x)$ для какого-то многочлена $Q(x)$ за $O(n \log^2 n)$.&lt;br /&gt;
# То же самое за $O(n \log n)$.&lt;br /&gt;
# Каков критерий существования решения и алгоритм восстановления числа в КТО, если убрать требование взаимной простоты модулей $m_1$ и $m_2$?&lt;br /&gt;
# Чему равна сумма всех чисел от 0 до $n-1$, взаимнопростых с $n$?&lt;br /&gt;
# Найдите $\frac{n!}{p^k} \mod p$, где $k$ - максимальная степень вхождения простого $p$ в $n!$, за $O(p \log n)$&lt;br /&gt;
# Докажите, что $gcd$ последовательных чисел Фибоначчи равен 1.&lt;br /&gt;
# Докажите, что $gcd(F_n, F_m) = F_{gcd(n, m)}$.&lt;br /&gt;
# Для заданных $a$ и нечетного простого $p$, проверьте, что существует $x$: $x^2 \equiv a \mod p$ за $O(\log p)$&lt;br /&gt;
# Решите задачу дискретного логарифма для простого модуля $p$ вида  $2^k + 1$ за $O(\mathop{poly}(k))$.&lt;br /&gt;
# Докажите лемму о паросочетании в графе замен (формулировка тут: [http://neerc.ifmo.ru/wiki/index.php?title=%D0%9B%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%BF%D0%B0%D1%80%D0%BE%D1%81%D0%BE%D1%87%D0%B5%D1%82%D0%B0%D0%BD%D0%B8%D0%B8_%D0%B2_%D0%B3%D1%80%D0%B0%D1%84%D0%B5_%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD], доказательство неправильное - неверный индукционный переход)&lt;br /&gt;
# Рассмотрим два матроида $M_1$ и $M_2$. Как связаны максимальное независимое множество пересечения $M_1 \cap M_2$ и база $M_1 \cup M_2^*$? ($M_2^*$ - матроид, двойственный $M_2$)&lt;br /&gt;
# Докажите теорему Радо: пусть $M$ - матроид с ранговой функцией $r$, $X = X_1 \cup X_2 \cup ...\cup X_k$, причем все $X_i$ попарно не пересекаются. Будем называть независимой системой представителей независимое множество $A$, такое что $|A \cap X_i| \le 1$. Пусть $A_{max}$ - максимальная по мощности независимая система представителей. Тогда $|A_{max}|=\min_{Z\subset \{1,..,k\}}(r(\cup_{i\in Z} X_i)+k-|Z|)$.&lt;br /&gt;
# Предложите алгоритм построения максимальной независимой системы представителей.&lt;br /&gt;
# Докажите, что длина кратчайшего пути из $S$ в $T$ в алгоритме построения базы пересечения матроидов не убывает.&lt;br /&gt;
# Докажите, что число различных длин кратчайшего пути из $S$ в $T$, которые встречаются в алгоритме построения базы пересечения матроидов, есть $O(\sqrt n)$.&lt;br /&gt;
# Докажите, что сумма длин кратчайших пути из $S$ в $T$, которые встречаются в алгоритме построения базы пересечения матроидов, есть $O(n \log n)$.&lt;br /&gt;
# Игра Шеннона. Рассмотрим игру на связном графе с множеством ребер $E$. Играют два игрока, cut и link, первым ходит cut. Игроки по очереди добавляют себе ребра, не использованные на предыдущих ходах. В конце игры link выигрывает, если по его ребрам можно дойти от любой вершины до любой. Докажите, что link выигрывает при оптимальной игре, если и только если в графе существует два непересекающихся остовных дерева.&lt;br /&gt;
# Игра Шеннона на произвольном матроиде. Рассмотрим игру на матроиде $M$. Играют два игрока, cut и link, первым ходит cut. Игроки по очереди выбирают себе элементы носителя, не использованные на предыдущих ходах. В конце игры link выигрывает, если его множество содержит базу матроида. Докажите, что link выигрывает при оптимальной игре, если и только если в графе существует две непересекающихся базы.&lt;br /&gt;
# Пусть $M$ - невырожденная квадратная матрица над вещественными числами. Докажите, что для любого множества строк $R$ найдется множество столбцов той же мощности $C$, что миноры $R\times C$ и $\overline{R}\times \overline{C}$ - ненулевые (как $\overline T$ обозначено множество строк/столбцов, не входящих в $T$).&lt;br /&gt;
# Задан двудольный граф, каждая вершина имеет вес. Требуется выбрать паросочетание, чтобы суммарный вес покрытых вершин был максимален. Решите эту задачу, не используя сведение к обычной задаче о назначениях.&lt;br /&gt;
&amp;lt;/wikitex&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D1%8B%D0%B5_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=83412</id>
		<title>Комбинаторные объекты</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D1%8B%D0%B5_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=83412"/>
				<updated>2022-09-01T04:53:35Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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 = '''Комбинаторные объекты''' (англ. ''combinatorial objects'') — конечные множества, на элементы которых могут накладываться определённые ограничения, такие как: различимость или неразличимость элементов, возможность повторения одинаковых элементов и т. п.}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition = Если два комбинаторных объекта, различающихся только порядком элементов, считаются различными, то они называются '''упорядоченными''' (англ. ''ordered'').&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Примеры комбинаторных объектов ==&lt;br /&gt;
=== Битовые векторы ===&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''[[Получение объекта по номеру#Битовые векторы | Битовые векторы]]''' (англ. ''bit vectors'') &amp;amp;mdash; последовательность нулей и единиц заданной длины.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Перестановки ===&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Перестановки&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0 Википедия — Перестановки]&amp;lt;/ref&amp;gt;''' (англ. ''permutations'') &amp;amp;mdash; упорядоченный набор чисел &amp;lt;tex&amp;gt;1, 2,\ldots, n&amp;lt;/tex&amp;gt;, обычно трактуемый как биекция на множестве &amp;lt;tex&amp;gt;\{ 1, 2,\ldots, n \}&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;-й элемент из набора.&lt;br /&gt;
}}&lt;br /&gt;
Примером перестановки может служить задача о рассадке &amp;lt;tex&amp;gt;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;
|definition='''Перестановки с повторениями''' (англ. ''permutations with repetitions'') — те же перестановки, однако некоторые элементы могут встречаться несколько раз.&lt;br /&gt;
}}&lt;br /&gt;
В пример можно привести следующую задачу: имеется набор книг &amp;lt;tex&amp;gt;\{a_1, a_2, \ldots, a_n\}&amp;lt;/tex&amp;gt;, каждая из которых имеется в &amp;lt;tex&amp;gt;k_1, k_2, \ldots, k_n&amp;lt;/tex&amp;gt; экземплярах соответственно. Сколько существует способов переставить книги на полке?&lt;br /&gt;
&lt;br /&gt;
=== Размещения ===&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Размещение'''&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D0%BC%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D0%B5 Википедия — Размещения]&amp;lt;/ref&amp;gt; (англ. ''arrangement'') из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; по &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; &amp;amp;mdash; упорядоченный набор из &amp;lt;tex&amp;gt;k&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;k&amp;lt;/tex&amp;gt; человек за стол по &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; местам, где &amp;lt;tex&amp;gt;n &amp;gt; k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Размещения с повторениями ===&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition='''Размещение с повторениями''' (англ. ''arrangement with repetitions''), составленное из данных &amp;lt;tex&amp;gt;n&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; первых натуральных чисел &amp;lt;tex&amp;gt;1, 2, \ldots, k&amp;lt;/tex&amp;gt; в данное множество &amp;lt;tex&amp;gt;\{a_1, a_2, \ldots, a_n\}&amp;lt;/tex&amp;gt;.&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;
|definition='''Сочетания&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%87%D0%B5%D1%82%D0%B0%D0%BD%D0%B8%D0%B5 Википедия — Сочетания]&amp;lt;/ref&amp;gt;''' (англ. ''combinations'') из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; по &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; &amp;amp;mdash; набор &amp;lt;tex&amp;gt;k&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;k&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;
|definition='''Сочетания с повторениями''' (англ. ''combinations with repetitions'') — те же сочетания, только теперь даны &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;
В пример можно привести следующую задачу: имеется &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;
|definition=[[Нахождение количества разбиений числа на слагаемые | '''Разбиение''' числа '''на неупорядоченные слагаемые''']] (англ. ''partition'') &amp;amp;mdash; представление числа &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; в виде суммы слагаемых.&lt;br /&gt;
}}&lt;br /&gt;
{{main|Нахождение количества разбиений числа на слагаемые}}&lt;br /&gt;
&lt;br /&gt;
=== Разбиение на подмножества ===&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=[[Числа Стирлинга второго рода | '''Разбиение''' множества &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; '''на подмножества''']] (англ. ''partition of a set'') — семейство непустых множеств &amp;lt;math&amp;gt;\{U_{\alpha}\},{\alpha \in A}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; — некоторое множество индексов, если:&lt;br /&gt;
# &amp;lt;math&amp;gt;U_{\alpha} \cap U_{\beta} = \emptyset&amp;lt;/math&amp;gt; для любых &amp;lt;math&amp;gt;\alpha, \beta \in A&amp;lt;/math&amp;gt;, таких что &amp;lt;math&amp;gt;\alpha \not= \beta&amp;lt;/math&amp;gt;;&lt;br /&gt;
# &amp;lt;math&amp;gt;X = \bigcup\limits_{\alpha \in A} U_{\alpha}&amp;lt;/math&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{main|Числа Стирлинга второго рода}}&lt;br /&gt;
&lt;br /&gt;
== Число комбинаторных объектов ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border = 1&lt;br /&gt;
|'''Тип объекта'''||'''Число объектов'''&lt;br /&gt;
|-&lt;br /&gt;
|Битовые векторы||&amp;lt;tex&amp;gt;2^{n}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Перестановки||&amp;lt;tex&amp;gt;P_n = n!&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Перестановки с повторениями||&amp;lt;tex dpi = &amp;quot;150&amp;quot;&amp;gt;\frac{(k_1 + k_2 + \ldots + k_n)!}{k_1!k_2!\ldots k_n!}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Размещения||&amp;lt;tex dpi = &amp;quot;150&amp;quot;&amp;gt;A^{k}_n = \frac{n!}{(n - k)!}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Размещения с повторениями||&amp;lt;tex&amp;gt;n^k&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Сочетания||&amp;lt;tex dpi = &amp;quot;150&amp;quot;&amp;gt;C^{k}_n = \frac{n!}{k!(n - k)!}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Сочетания с повторениями||&amp;lt;tex dpi = &amp;quot;150&amp;quot;&amp;gt;\widetilde{C}^k_n = \frac{(n + k - 1)!}{k!(n - 1)!} = C^k_{n + 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;
==Соответствующие доказательства==&lt;br /&gt;
{{&lt;br /&gt;
Теорема | id=1&lt;br /&gt;
|statement=&lt;br /&gt;
Число различных битовых векторов длины &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; равно &amp;lt;tex&amp;gt;2^{n}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Число битовых векторов  {{---}} это частный случай [[#5 | размещения с повторениями]] &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; элементов по &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;. Таким образом, количество различных битовых векторов будет равно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{&lt;br /&gt;
Теорема | id=2&lt;br /&gt;
|statement=&lt;br /&gt;
Число различных перестановок из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; элементов равно &amp;lt;tex&amp;gt;P_n = n!&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Перестановка {{---}} это частный случай [[#4 | размещения]] &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; элементов по &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; при &amp;lt;tex&amp;gt;k = 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;
Теорема | id=3&lt;br /&gt;
|statement=&lt;br /&gt;
Число различных перестановок с повторениями из &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; элементов с &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; группами одинаковых элементов равно &amp;lt;tex&amp;gt;\overline{P_k} (k_1, k_2, \ldots, k_n) = \frac{(k_1 + k_2 + \ldots + k_n)!}{k_1!k_2!\ldots k_n!}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;k_i&amp;lt;/tex&amp;gt; {{---}} это количество одинаковых элементов в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;{{---}}ой группе.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть нужно найти количество перестановок с повторениями на множестве &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; элементов. Будем учитывать, что в этом множестве &amp;lt;tex&amp;gt;n&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;
&lt;br /&gt;
В каждой итоговой перестановке у нас будет несколько раз учитываться ситуации с одинаковыми элементами ровно столько раз, сколько можно получить перестановок из &amp;lt;tex&amp;gt;k_i&amp;lt;/tex&amp;gt;. Таким образом количество перестановок с одинаковым первым элементом будет равно &amp;lt;tex&amp;gt;k_1!&amp;lt;/tex&amp;gt;, для второго элемента {{---}} &amp;lt;tex&amp;gt;k_2!&amp;lt;/tex&amp;gt;. Общее количество идентичных перестановок будет равно произведению данных факториалов. Итого одинаковых перестановок &amp;lt;tex&amp;gt;k_1! \cdot k_2! \cdot \ldots \cdot k_n!&amp;lt;/tex&amp;gt;. Ответом будем являться частное количества всех перестановок и количества одинаковых. &lt;br /&gt;
Получаем, что итоговое количество равно &amp;lt;tex&amp;gt;\frac{k!}{k_1! \cdot k_2! \cdot \ldots \cdot k_n!} = \frac{(k_1 + k_2 + \ldots + k_n)!}{k_1! \cdot k_2! \cdot \ldots \cdot k_n!} &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{&lt;br /&gt;
Теорема | id=4&lt;br /&gt;
|statement=&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; равно &amp;lt;tex&amp;gt;A^{k}_n = \frac{n!}{(n - k)!}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Доказательство по индукции. База &amp;lt;tex&amp;gt;k = 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;n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
При &amp;lt;tex&amp;gt;k \geq 2&amp;lt;/tex&amp;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;(k - 1)&amp;lt;/tex&amp;gt;. Следовательно получаем рекуррентную формулу &amp;lt;tex&amp;gt;A_{n}^{k}=n \cdot A_{n-1}^{k-1}&amp;lt;/tex&amp;gt;. Отсюда получаем &amp;lt;tex&amp;gt;A_{n}^{k} = n \cdot (n-1) \cdot \ldots \cdot (n-k+1) = \frac{n!}{(n-k)!}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{&lt;br /&gt;
Теорема | id=5&lt;br /&gt;
|statement=&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; равно &amp;lt;tex&amp;gt;\overline{A_n^k} = n^k&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Докажем по индукции. База: &amp;lt;tex&amp;gt;k = 1&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt; \overline{A_n^1} = n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
При &amp;lt;tex&amp;gt;k \geq 2&amp;lt;/tex&amp;gt; воспользуемся правилом произведения. Выбрать первый элемент можно &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; различными способами. При каждом первом элементе, все что осталось образует размещение с повторениями  из того же самого множества, то есть из n элементов, по &amp;lt;tex&amp;gt;(k - 1)&amp;lt;/tex&amp;gt;. Следовательно получаем рекуррентную формулу &amp;lt;tex&amp;gt;\overline{A_n^k} = n \cdot \overline{A_{n}^{k-1}}&amp;lt;/tex&amp;gt;. Отсюда получаем &amp;lt;tex&amp;gt;\overline{A_n^k}=n \cdot n \ldots = n^k &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{&lt;br /&gt;
Теорема | id=6&lt;br /&gt;
|statement=&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; равно &amp;lt;tex&amp;gt;C^{k}_n = \frac{n!}{k!(n - k)!}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&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; равно &amp;lt;tex&amp;gt;A_n^k  = \frac{n!}{(n - k)!}&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; элементов, мы получим некоторые сочетания из данного множества по &amp;lt;tex&amp;gt;k&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;
&lt;br /&gt;
Так как размещения с одним и тем же набором выбранных &amp;lt;tex&amp;gt;k&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;, то итоговая формула будет равна &amp;lt;tex&amp;gt;C_n^k = \frac{A_n^k}{k!} = \frac{n!}{k!(n - k)!}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{&lt;br /&gt;
Теорема | id=7&lt;br /&gt;
|statement=&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; равно &amp;lt;tex&amp;gt;\overline{C^k_n} = \frac{(n + k - 1)!}{k!(n - 1)!} = C^k_{n + k - 1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим двоичный вектор из &amp;lt;tex&amp;gt;(n+k-1)&amp;lt;/tex&amp;gt; координат, в котором &amp;lt;tex&amp;gt;(n-1)&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;n&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;k_i&amp;lt;/tex&amp;gt; в сочетании с повторением, которое соответствует этому вектору, где &amp;lt;tex&amp;gt;k_i&amp;lt;/tex&amp;gt; {{---}} это элемент из изначального множества с номером i.&lt;br /&gt;
&lt;br /&gt;
Пример: Если у нас есть набор элементов 1 1 2 2 3, то &amp;lt;tex&amp;gt;k_2&amp;lt;/tex&amp;gt; = 2.&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; соответствует некоторый вектор из нулей и единиц с &amp;lt;tex&amp;gt;(n+k-1)&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; по &amp;lt;tex&amp;gt;k&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;(n+k-1)&amp;lt;/tex&amp;gt;. Таким образом, ответом будет являться число сочетаний из &amp;lt;tex&amp;gt;(n+k-1)&amp;lt;/tex&amp;gt; по &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;. Тогда количество равно &amp;lt;tex&amp;gt; \overline{C_n^k} = C_{n+k-1}^{k}&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;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://hijos.ru/izuchenie-matematiki/algebra-10-klass/19-razmeshheniya-perestanovki-sochetaniya-s-povtoreniyami-formula-vklyucheniya-isklyucheniya/ Математика, которая мне нравится — Размещения, перестановки, сочетания с повторениями. Формула включения – исключения]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Комбинаторика ]]&lt;br /&gt;
[[Категория: Комбинаторные объекты ]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B02&amp;diff=83411</id>
		<title>Тестовая страница2</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B02&amp;diff=83411"/>
				<updated>2022-09-01T04:53:28Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
Ряд &amp;lt;tex dpi='100'&amp;gt;\sum\limits_{n = 0}^\infty a_n&amp;lt;/tex&amp;gt; имеет сумму &amp;lt;tex dpi='100'&amp;gt;S&amp;lt;/tex&amp;gt; по '''методу средних арифметических''' (обозначают аббревиатурой с.а.), если &amp;lt;tex dpi='100'&amp;gt;S = \lim\limits_{n \rightarrow \infty} \frac 1{n + 1} \sum\limits_{k = 0}^n S_k&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
№2. Суммирование расходящихся рядов методом Абеля&lt;br /&gt;
Пусть дан ряд &amp;lt;tex dpi='100'&amp;gt;\sum\limits_{n = 0}^{\infty}a_n&amp;lt;/tex&amp;gt; и &amp;lt;tex dpi='100'&amp;gt; \forall t \in (0; 1) : \sum\limits_{n = 0}^{\infty}a_nt^n = f(t)&amp;lt;/tex&amp;gt; (в классическом смысле). Тогда этот ряд имеет сумму &amp;lt;tex dpi='100'&amp;gt; S &amp;lt;/tex&amp;gt; по '''методу Абеля''', если &amp;lt;tex dpi='100'&amp;gt; S = \lim\limits_{t \to 1 - 0} f(t)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
№3. Теорема Фробениуса&lt;br /&gt;
Условие&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt; \sum\limits_{n = 0}^\infty a_n = S &amp;lt;/tex&amp;gt; (с.а) &amp;lt;tex dpi='100'&amp;gt; \Rightarrow &amp;lt;/tex&amp;gt; &amp;lt;tex dpi='100'&amp;gt; \sum\limits_{n = 0}^\infty a_n = S &amp;lt;/tex&amp;gt; (А).&lt;br /&gt;
&lt;br /&gt;
№4. Тауберова теорема Харди&lt;br /&gt;
Условие&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\sum\limits_{k = 0}^\infty a_k = S&amp;lt;/tex&amp;gt;(с.а.)&lt;br /&gt;
Тогда, если существует такое &amp;lt;tex dpi='100'&amp;gt; M &amp;gt; 0 &amp;lt;/tex&amp;gt;, что &amp;lt;tex dpi='100'&amp;gt; \forall n \in \mathbb N: \sum\limits_{k = n + 1}^\infty a_k^2 \leq \frac{M}n &amp;lt;/tex&amp;gt;, то &amp;lt;tex dpi='100'&amp;gt; \sum\limits_{k=0}^\infty a_k = S&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
№5. Равномерная сходимость функционального ряда. Критерий Коши&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;f_1, f_2, \ldots&amp;lt;/tex&amp;gt; равномерно сходится к &amp;lt;tex dpi='100'&amp;gt;f(x)&amp;lt;/tex&amp;gt;, если &lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\forall \varepsilon\ &amp;gt; 0\ \exists N\ \forall n &amp;gt; N\ \forall x \in E : |f_n(x) - f(x)| &amp;lt; \varepsilon&amp;lt;/tex&amp;gt;&lt;br /&gt;
Пишут, что &amp;lt;tex dpi='100'&amp;gt;f_n \rightrightarrows f&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть на &amp;lt;tex dpi='100'&amp;gt;E&amp;lt;/tex&amp;gt; задан функциональный ряд &amp;lt;tex dpi='100'&amp;gt;\sum\limits_{n = 1}^\infty f_n&amp;lt;/tex&amp;gt;. Тогда он равномерно сходится к&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;f = \sum f_n&amp;lt;/tex&amp;gt;, если&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\forall\varepsilon\ &amp;gt; 0\ \exists N\ \forall n &amp;gt; N\ \forall x \in E : |S_n(x) - f(x)| &amp;lt; \varepsilon&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Критерий Коши равномерной сходимости&lt;br /&gt;
УсловиеРяд равномерно сходится на &amp;lt;tex dpi='100'&amp;gt;E&amp;lt;/tex&amp;gt; &amp;lt;tex dpi='100'&amp;gt;\iff&amp;lt;/tex&amp;gt; &amp;lt;tex dpi='100'&amp;gt;\forall\varepsilon\ &amp;gt; 0\ \exists N\ \forall m, n : m \geq n &amp;gt; N\ \forall x \in E : \left|\sum\limits_{k = n}^m f_k(x)\right| &amp;lt; \varepsilon&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
№6. Признак Вейерштрасса&lt;br /&gt;
Условие&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\sum\limits_{n = 1}^\infty f_n&amp;lt;/tex&amp;gt;, &amp;lt;tex dpi='100'&amp;gt;\forall n \in \mathbb{N} &amp;lt;/tex&amp;gt; , &amp;lt;tex dpi='100'&amp;gt; \forall x \in E : |f_n(x)| \leq a_n&amp;lt;/tex&amp;gt;, &amp;lt;tex dpi='100'&amp;gt;\sum\limits_{n = 1}^\infty a_n&amp;lt;/tex&amp;gt; - сходится.&lt;br /&gt;
Тогда &amp;lt;tex dpi='100'&amp;gt;\sum\limits_{n = 1}^\infty f_n&amp;lt;/tex&amp;gt; равномерно сходится на &amp;lt;tex dpi='100'&amp;gt;E&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
№7. Признак типа Абеля-Дирихле&lt;br /&gt;
Условие&lt;br /&gt;
Пусть: * &amp;lt;tex dpi='100'&amp;gt;\exists M: \forall x \in E \quad \forall N \in \mathbb N \quad \left |\sum\limits_{n = 1}^N b_n(x) \right| \le M&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex dpi='100'&amp;gt;\forall \varepsilon &amp;gt; 0 \quad \exists N \in \mathbb N \quad \forall n &amp;gt; N \quad \forall x \in E \quad |a_n(x)| &amp;lt; \varepsilon;\quad\exists N:\forall n&amp;gt;N\quad a_n \ge a_{n+1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
Тогда ряд &amp;lt;tex dpi='100'&amp;gt;\sum\limits_{n = 1}^\infty a_n(x)b_n(x)&amp;lt;/tex&amp;gt; равномерно сходится.&lt;br /&gt;
&lt;br /&gt;
№8. Предельный переход под знаком функционального ряда&lt;br /&gt;
Условие&lt;br /&gt;
Пусть на множестве &amp;lt;tex dpi='100'&amp;gt;E&amp;lt;/tex&amp;gt; заданы функции &amp;lt;tex dpi='100'&amp;gt;f_n&amp;lt;/tex&amp;gt;, &amp;lt;tex dpi='100'&amp;gt;a&amp;lt;/tex&amp;gt; - предельная точка этого множества и &lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\forall n \in \mathbb{N}\ \exists\ \lim \limits_{x \to a} f_n(x)&amp;lt;/tex&amp;gt;. Тогда если &amp;lt;tex dpi='100'&amp;gt;\sum \limits_{n = 0}^{\infty} f_n&amp;lt;/tex&amp;gt; - равномерно&lt;br /&gt;
сходится на &amp;lt;tex dpi='100'&amp;gt;E&amp;lt;/tex&amp;gt;, то выполняется равенство :&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\lim \limits_{x \to a} \sum \limits_{n = 0}^{\infty} f_n(x) = \sum \limits_{n = 0}^{\infty} \lim\limits_{x \to a} f_n(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№9. Условия почленного интегрирования функционального ряда&lt;br /&gt;
Условие&lt;br /&gt;
Пусть &amp;lt;tex dpi='100'&amp;gt; f_{n} &amp;lt;/tex&amp;gt; интегрируема и равномерно сходится к &amp;lt;tex dpi='100'&amp;gt; f &amp;lt;/tex&amp;gt; на &amp;lt;tex dpi='100'&amp;gt; [a; b] &amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex dpi='100'&amp;gt; f &amp;lt;/tex&amp;gt; тоже интегрируема, и&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt; \lim \limits_{n \to \infty} \int\limits_{a}^{b} f_{n}  = \int\limits_{a}^{b}f &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Условие&lt;br /&gt;
Пусть функциональный ряд состоит из &amp;lt;tex dpi='100'&amp;gt;f_n \in \mathcal{R}\left[ a, b \right ]&amp;lt;/tex&amp;gt; и равномерно сходится на этом отрезке.&lt;br /&gt;
Тогда сумма ряда будет интегрируемой функцией, и будет выполняться:&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\int\limits_{a}^{b} \sum\limits_{n = 1}^{\infty} f_{n}(x)dx = &lt;br /&gt;
\sum\limits_{n = 1}^{\infty} \int\limits_{a}^{b} f_{n}(x)dx&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№10. Условия почленного дифференцирования функционального ряда&lt;br /&gt;
Условие&lt;br /&gt;
Пусть на &amp;lt;tex dpi='100'&amp;gt; (a, b) &amp;lt;/tex&amp;gt; задан функциональный ряд &amp;lt;tex dpi='100'&amp;gt;\sum\limits_{n = 1}^{\infty} f_n&amp;lt;/tex&amp;gt;, &amp;lt;tex dpi='100'&amp;gt;\exists c \in \langle a, b \rangle, \sum\limits_{n = 1}^{\infty}f_n(c)&amp;lt;/tex&amp;gt; - сходится.&lt;br /&gt;
Пусть также &amp;lt;tex dpi='100'&amp;gt;\exists f_n'&amp;lt;/tex&amp;gt; - непрерывна на &amp;lt;tex dpi='100'&amp;gt;\langle a, b \rangle&amp;lt;/tex&amp;gt; и&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\sum\limits_{n = 1}^{\infty} f_n'&amp;lt;/tex&amp;gt; - равномерно сходится на &amp;lt;tex dpi='100'&amp;gt;\langle a, b\rangle&amp;lt;/tex&amp;gt;, тогда на &amp;lt;tex dpi='100'&amp;gt;\langle a, b \rangle&amp;lt;/tex&amp;gt; выполняется :&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;(\sum\limits_{n = 1}^{\infty} f_n(x))' = \sum\limits_{n = 1}^{\infty}f_n'(x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
№11. Лемма Абеля&lt;br /&gt;
Условие&lt;br /&gt;
Пусть для некоторого &amp;lt;tex dpi='100'&amp;gt;x_0&amp;lt;/tex&amp;gt; &amp;lt;tex dpi='100'&amp;gt;\sum\limits_{n = 0}^{\infty} a_n x_0^n&amp;lt;/tex&amp;gt; - сходится. &lt;br /&gt;
Тогда &amp;lt;tex dpi='100'&amp;gt;\forall x_1 : |x_1| &amp;lt; |x_0|&amp;lt;/tex&amp;gt; ряд &amp;lt;tex dpi='100'&amp;gt;\sum\limits_{n = 0}^\infty |a_n x_1^n|&amp;lt;/tex&amp;gt; сходится. &lt;br /&gt;
&lt;br /&gt;
№12. Теорема о радиусе сходимости&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;R = \sup \{|x| : \sum\limits_{n = 0}^\infty a_n x^n&amp;lt;/tex&amp;gt; - сходится &amp;lt;tex dpi='100'&amp;gt;\}&amp;lt;/tex&amp;gt;. Заметим, что возможны случаи &amp;lt;tex dpi='100'&amp;gt;R = 0&amp;lt;/tex&amp;gt; и &amp;lt;tex dpi='100'&amp;gt;R = \infty&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Условие&lt;br /&gt;
Пусть есть ряд &amp;lt;tex dpi='100'&amp;gt;\sum\limits_{n = 0}^\infty a_n x^n&amp;lt;/tex&amp;gt; и &amp;lt;tex dpi='100'&amp;gt;R&amp;lt;/tex&amp;gt; - его радиус сходимости. Тогда&lt;br /&gt;
1) &amp;lt;tex dpi='100'&amp;gt;|x| &amp;lt; R&amp;lt;/tex&amp;gt; &amp;lt;tex dpi='100'&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; ряд абсолютно сходится.&lt;br /&gt;
2) &amp;lt;tex dpi='100'&amp;gt;\forall [a; b] \in (-R; R)&amp;lt;/tex&amp;gt; ряд сходится абсолютно и равномерно.&lt;br /&gt;
3) &amp;lt;tex dpi='100'&amp;gt;|x| &amp;gt; R&amp;lt;/tex&amp;gt; &amp;lt;tex dpi='100'&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; ряд расходится. &lt;br /&gt;
4) &amp;lt;tex dpi='100'&amp;gt;|x| = R&amp;lt;/tex&amp;gt; - неопределённость. &lt;br /&gt;
&lt;br /&gt;
№13. Вычисление радиуса сходимости&lt;br /&gt;
Условие&lt;br /&gt;
Пусть есть &amp;lt;tex dpi='100'&amp;gt;\sum\limits_{n = 0}^\infty a_n x^n&amp;lt;/tex&amp;gt;, &amp;lt;tex dpi='100'&amp;gt;R&amp;lt;/tex&amp;gt; - его радиус сходимости. Тогда:&lt;br /&gt;
1) Если &amp;lt;tex dpi='100'&amp;gt;\exists q = \lim\limits_{n \to \infty} \left|\frac{a_n}{a_{n + 1} }\right|&amp;lt;/tex&amp;gt;, то &amp;lt;tex dpi='100'&amp;gt;R = q&amp;lt;/tex&amp;gt;.&lt;br /&gt;
2) Если &amp;lt;tex dpi='100'&amp;gt;\exists q = \lim\limits_{n \to \infty} \sqrt[n]{a_n}&amp;lt;/tex&amp;gt;, то &amp;lt;tex dpi='100'&amp;gt;R = \frac1q&amp;lt;/tex&amp;gt;&lt;br /&gt;
Замечание: на самом деле, есть формула Коши-Адамара, применимая в любом случае: &amp;lt;tex dpi='100'&amp;gt;R = \frac1{\overline{\lim} \sqrt[n]{|a_n|} }&amp;lt;/tex&amp;gt;. &amp;lt;s&amp;gt; Но она сложная и никому не нужна. &amp;lt;/s&amp;gt; Формула теоретическая, верхний предел вычислить часто невозможно.&lt;br /&gt;
&lt;br /&gt;
№14. Дифференцирование и интегрирование степенных рядов&lt;br /&gt;
Вопрос: &amp;quot;Каковы будут радиусы сходимости почленно проинтегрированных или продифференцированных рядов?&amp;quot;&lt;br /&gt;
Ответ: &amp;quot;Почленное интегрирование или дифференцирование не меняет радиуса сходимости ряда&amp;quot;.&lt;br /&gt;
утв:&lt;br /&gt;
УсловиеПромежуток сходимости степенного ряда совпадает с промежутком сходимости продифференцированного степенного ряда&lt;br /&gt;
&lt;br /&gt;
№15. Степенной ряд, как ряд Тейлора своей суммы&lt;br /&gt;
&amp;lt;wikitex&amp;gt;&lt;br /&gt;
Пусть $ f(x) = \sum\limits_{n = 0}^{\infty} a_n (x - x_0)^n, \qquad R &amp;gt; 0 \qquad (x_0 - R; x_0 + R) $.&lt;br /&gt;
$ \sum\limits_{n = 0}^{\infty} \frac{f^{(n)}(x_0)}{n!} (x - x_0)^n $ - ряд Тейлора функции по степеням $ (x - x_0) $.&lt;br /&gt;
Сопоставим ряд с формулой Тейлора функции, которую можно писать для любого $ n $.&lt;br /&gt;
$ f(x) = \sum\limits_{k = 0}^{n} \frac{f^{(k)}(x_0)}{k!} (x - x_0)^k + r_n(x) \Rightarrow $ ряд получается из формулы при $ n \to \infty $. Если $ r_n(x) \rightarrow 0 $ при $ n \rightarrow \infty $, то можно перейти к пределу.&lt;br /&gt;
$ f(x) = \sum\limits_{k = 0}^{\infty} \frac{f^{(k)}(x_0)}{k!} (x - x_0)^k $, что является разложением функции в степенной ряд в точке $ x $. &lt;br /&gt;
Если при всех x из некоторой окрестности точки $ x_0 $ функция разлагается в степенной ряд, то это будет обязательно ряд Тейлора.&lt;br /&gt;
Если разложение возможно, то единственно. Изучается с помощью поведения остатка $ r_n(x) $.&lt;br /&gt;
&amp;lt;/wikitex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№16. Достаточное условие разложимости функции в ряд Тейлора&lt;br /&gt;
Для того, чтобы функция была разложима в ряд Тейлора, достаточно чтобы  &amp;lt;tex dpi='100'&amp;gt; r_n \xrightarrow[n \to \infty]{} 0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№17. Разложение в степенной ряд  показательной и логарифмической функций &lt;br /&gt;
&amp;lt;wikitex&amp;gt;&lt;br /&gt;
$e^x \stackrel{def}{=} \sum\limits_{k = 0}^{\infty} \frac{x^k}{k!} $&lt;br /&gt;
$ \ln(1 + x) = \sum\limits_{k = 1}^n (-1)^{k - 1} \frac{x^k}k + r_n(x) $, причем  $ r_n(x) = \frac{\ln^{(n + 1)} (1 + \theta_n x)}{(n + 1)!} x^{n + 1}, \theta_n \in (0; 1) $&lt;br /&gt;
&amp;lt;/wikitex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№18. Разложение в степенной ряд тригонометрических функций &lt;br /&gt;
&amp;lt;wikitex&amp;gt;&lt;br /&gt;
$\sin(x) = \sum\limits_{n = 0}^{\infty} {(-1)}^n \frac{x^{2n + 1}}{(2n + 1)!}$&lt;br /&gt;
$\cos(x) = \sum\limits_{n = 0}^{\infty} {(-1)}^n \frac{x^{2n}}{(2n)!}$&lt;br /&gt;
&amp;lt;/wikitex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№19. Биномиальный ряд Ньютона &lt;br /&gt;
&amp;lt;wikitex&amp;gt;&lt;br /&gt;
$ (1 + x)^{\alpha} = \sum\limits_{k = 1}^{\infty} \left[ \frac{\alpha (\alpha - 1) \dots (\alpha - k + 1)}{k!} x^k \right] + 1, \alpha \in \mathbb{R} $&lt;br /&gt;
$ r_n(x) = \frac{a (a - 1) \dots (a - n + 1) (a - n) (1 + \theta x)^{a - n - 1}}{n!} (1 - \theta)^n x^{n + 1} $ (в форме Коши)&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;
$ n! = \sqrt{2 \pi n} {\left ( \frac ne \right )}^n e^{\frac{\theta_n}{12n}} $&lt;br /&gt;
&amp;lt;/wikitex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№21. Нормированное пространство: арифметика предела&lt;br /&gt;
Условие&lt;br /&gt;
Пусть &amp;lt;tex dpi='100'&amp;gt;x_n&amp;lt;/tex&amp;gt;, &amp;lt;tex dpi='100'&amp;gt;y_n&amp;lt;/tex&amp;gt; — последовательности точек нормированного пространства &amp;lt;tex dpi='100'&amp;gt;(X, \|\cdot\|)&amp;lt;/tex&amp;gt;, а &amp;lt;tex dpi='100'&amp;gt;\alpha_n&amp;lt;/tex&amp;gt; — вещественная последовательность. Известно, что &amp;lt;tex dpi='100'&amp;gt;x_n \rightarrow x&amp;lt;/tex&amp;gt;, &amp;lt;tex dpi='100'&amp;gt;y_n \rightarrow y&amp;lt;/tex&amp;gt;, &amp;lt;tex dpi='100'&amp;gt;\alpha_n \rightarrow \alpha&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда:&lt;br /&gt;
# &amp;lt;tex dpi='100'&amp;gt;x_n + y_n \rightarrow x + y&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex dpi='100'&amp;gt;\alpha_n x_n \rightarrow \alpha x&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex dpi='100'&amp;gt;\|x_n\| \rightarrow \|x\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№22. Ряды в банаховых пространствах&lt;br /&gt;
Нормированное пространство &amp;lt;tex dpi='100'&amp;gt;(X, \|\cdot\|)&amp;lt;/tex&amp;gt; называется '''B-пространством''', если для любой последовательности элементов &amp;lt;tex dpi='100'&amp;gt;X&amp;lt;/tex&amp;gt;, для которых из &amp;lt;tex dpi='100'&amp;gt;\|x_n - x_m\| \to 0&amp;lt;/tex&amp;gt; при &amp;lt;tex dpi='100'&amp;gt;n, m \to \infty&amp;lt;/tex&amp;gt; вытекает существование предела последовательности.&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\left \| \sum\limits_{k = 1}^\infty x_k \right \| \le \sum\limits_{k = 1}^\infty \| x_k \|&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№23. Унитарные пространства, неравенство Шварца&lt;br /&gt;
Линейное множество со скалярным произведением называется унитарным пространством.&lt;br /&gt;
утв&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;|(x, y)| \le \sqrt{(x, x)}\sqrt{(y, y)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№24. Гильбертовы пространства, экстремальное свойство ортонормированных систем&lt;br /&gt;
Среди нормированных пространств выделяется подкласс так называемых гильбертовых пространств.&lt;br /&gt;
Пусть &amp;lt;tex dpi='100'&amp;gt;H&amp;lt;/tex&amp;gt; — линейное пространство. Величина &amp;lt;tex dpi='100'&amp;gt;(x, y) \in \mathbb R&amp;lt;/tex&amp;gt; называется скалярным произведением точек множества &amp;lt;tex dpi='100'&amp;gt;H&amp;lt;/tex&amp;gt;, если она удовлетворяет следующим трём аксиомам:&lt;br /&gt;
# &amp;lt;tex dpi='100'&amp;gt;(x, x) \ge 0&amp;lt;/tex&amp;gt;, &amp;lt;tex dpi='100'&amp;gt;(x, x) = 0 \iff x = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex dpi='100'&amp;gt;(x, y) = (y, x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex dpi='100'&amp;gt;(\alpha x + \beta y, z) = \alpha(x, z) + \beta(y, z)&amp;lt;/tex&amp;gt;&lt;br /&gt;
Базируясь на этом неравенстве, определим норму &amp;lt;tex dpi='100'&amp;gt;\|x\| = \sqrt{(x, x)}&amp;lt;/tex&amp;gt;. &lt;br /&gt;
Доказанное неравенство треугольника превращает &amp;lt;tex dpi='100'&amp;gt;H&amp;lt;/tex&amp;gt; в нормированное пространство. Если оно является B-пространством, то его называют '''гильбертовым пространством'''.&lt;br /&gt;
&lt;br /&gt;
Теорема Бесселя&lt;br /&gt;
Условие&lt;br /&gt;
Пусть &amp;lt;tex dpi='100'&amp;gt; l_1 \dots \l_n \dots &amp;lt;/tex&amp;gt; - ОНС в &amp;lt;tex dpi='100'&amp;gt; H &amp;lt;/tex&amp;gt; и &amp;lt;tex dpi='100'&amp;gt; x \in H &amp;lt;/tex&amp;gt;, тогда &lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt; \sum \limits_{k=1}^{\infty} (x, l_k)^2 \le \|x\|^2&amp;lt;/tex&amp;gt;&lt;br /&gt;
Экстремальное свойства ряда Фурье заключается в следующем: &amp;lt;tex dpi='100'&amp;gt;\sum \limits_{k=1}^{\infty} (x, l_k)^2&amp;lt;/tex&amp;gt; располагается ближе всего к &amp;lt;tex dpi='100'&amp;gt;\|x\|^2&amp;lt;/tex&amp;gt;, если &amp;lt;tex dpi='100'&amp;gt;l_k&amp;lt;/tex&amp;gt; — ряд Фурье &amp;lt;tex dpi='100'&amp;gt;x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
№25. Ортогональные ряды в гильбертовых пространствах.&lt;br /&gt;
Ряд &amp;lt;tex dpi='100'&amp;gt; \sum\limits_{k = 1}^{\infty} x_k &amp;lt;/tex&amp;gt; является '''ортогональным''', если &amp;lt;tex dpi='100'&amp;gt; \forall n \ne m \Rightarrow (x_n, x_m) = 0 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
В частности, так как &amp;lt;tex dpi='100'&amp;gt; l_1, \dots, l_n, \dots &amp;lt;/tex&amp;gt; - ОНС в &amp;lt;tex dpi='100'&amp;gt; H &amp;lt;/tex&amp;gt;(гильбертово), то &amp;lt;tex dpi='100'&amp;gt; \sum\limits_{k = 1}^{\infty} \alpha_k l_k &amp;lt;/tex&amp;gt; - ортогональный ряд.&lt;br /&gt;
&lt;br /&gt;
Условие&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\sum\limits_{k = 1}^{\infty} x_k &amp;lt;/tex&amp;gt; - сходящийся ортогональный ряд &amp;lt;tex dpi='100'&amp;gt; \Leftrightarrow \sum\limits_{k = 1}^{\infty} \| x_k \|^2 &amp;lt; + \infty &amp;lt;/tex&amp;gt;.&lt;br /&gt;
При этом, если x - сумма ряда, то выполняется теорема Пифагора: &amp;lt;tex dpi='100'&amp;gt; \| x \|^2 = \sum\limits_{k = 1}^{\infty} \| x_k \|^2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№26. Принцип сжатия Банаха&lt;br /&gt;
Пусть &amp;lt;tex dpi='100'&amp;gt;X&amp;lt;/tex&amp;gt; - B-пространство. Пусть &amp;lt;tex dpi='100'&amp;gt;\overline V&amp;lt;/tex&amp;gt; - замкнутый шар в &amp;lt;tex dpi='100'&amp;gt;X&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt; \mathcal{T} : \overline V \to \overline V&amp;lt;/tex&amp;gt; - '''сжатие''' на шаре &amp;lt;tex dpi='100'&amp;gt;\overline V&amp;lt;/tex&amp;gt;, если &amp;lt;tex dpi='100'&amp;gt;\exists q \in (0;1) \ \forall x',x'' \in \overline V&amp;lt;/tex&amp;gt; &amp;lt;tex dpi='100'&amp;gt; : \| \mathcal{T}x''-\mathcal{T}x' \| \le q \|x''-x'\|&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Теорема Банаха&lt;br /&gt;
У любого сжимающего отображения существует ровно одна неподвижная точка &amp;lt;tex dpi='100'&amp;gt;x^*=\mathcal{T}x^*&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
№27. Линейные операторы в НП: непрерывность и ограниченность&lt;br /&gt;
Пусть &amp;lt;tex dpi='100'&amp;gt;X&amp;lt;/tex&amp;gt;, &amp;lt;tex dpi='100'&amp;gt;Y&amp;lt;/tex&amp;gt; — нормированные пространства, &amp;lt;tex dpi='100'&amp;gt;~\mathcal{A}\colon X \to Y&amp;lt;/tex&amp;gt;. &amp;lt;tex dpi='100'&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt; называется линейным оператором, если &amp;lt;tex dpi='100'&amp;gt;\mathcal{A} (\alpha x + \beta y ) = \alpha \mathcal{A} \left( x \right) + \beta \mathcal{A} \left( y \right), \forall \alpha, \beta \in \mathbb {R}, \forall x, y \in X&amp;lt;/tex&amp;gt;&lt;br /&gt;
Л.о. называется ограниченным, если &amp;lt;tex dpi='100'&amp;gt;\exists m \in \mathbb {R} \ge 0: \forall x \in X \left \| \mathcal{A} \left( x \right) \right \| \le m \left \| x \right \|&amp;lt;/tex&amp;gt;&lt;br /&gt;
Л.о. непрерывен в X, если &amp;lt;tex dpi='100'&amp;gt;\lim \limits_{\mathcal {4} x \to 0} \mathcal{A} \left( x + \mathcal{4}x \right) = \mathcal{A} \left( x \right) &amp;lt;/tex&amp;gt;&lt;br /&gt;
Условие&lt;br /&gt;
Линейный оператор непрерывен тогда и только тогда, когда он ограничен.&lt;br /&gt;
&lt;br /&gt;
№28. Норма линейного оператора&lt;br /&gt;
Нормой ограниченного оператора &amp;lt;tex dpi='100'&amp;gt;\left \| \mathcal{A} \right \|&amp;lt;/tex&amp;gt; является &amp;lt;tex dpi='100'&amp;gt;\sup \limits_{\left \| x \right \| \le 1} \left \| \mathcal{A}x \right \|&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
№29. Линейные функционалы в унитарном пространстве, разделение точек&lt;br /&gt;
'''Линейный функционал''' - линейный оператор вида &amp;lt;tex dpi='100'&amp;gt; \mathcal{A}: H \rightarrow \mathbb{R} &amp;lt;/tex&amp;gt;, где &amp;lt;tex dpi='100'&amp;gt; H &amp;lt;/tex&amp;gt; - гильбертово пространство.&lt;br /&gt;
Условие&lt;br /&gt;
Для любого &amp;lt;tex dpi='100'&amp;gt; x_0 \in H &amp;lt;/tex&amp;gt; существует ограниченный линейный функционал &amp;lt;tex dpi='100'&amp;gt;f \colon H \to \mathbb{R}&amp;lt;/tex&amp;gt;, обладающий такими свойствами:&lt;br /&gt;
# &amp;lt;tex dpi='100'&amp;gt;f \left ( x_0 \right ) = \left \| x_0 \right \|&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex dpi='100'&amp;gt;\left \| f \right \| = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
Условие&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\forall x \ne y\ \exists&amp;lt;/tex&amp;gt; линейный функционал &amp;lt;tex dpi='100'&amp;gt;\mathcal{A} : \mathcal{A}x \ne \mathcal{A}y&amp;lt;/tex&amp;gt;&lt;br /&gt;
Рассмотрим &amp;lt;tex dpi='100'&amp;gt;x-y&amp;lt;/tex&amp;gt;. &amp;lt;tex dpi='100'&amp;gt;\exists \mathcal{A} : \mathcal{A}(x - y) = \| x- y\|&amp;lt;/tex&amp;gt;. &lt;br /&gt;
По линейности, &amp;lt;tex dpi='100'&amp;gt;\mathcal{A}(x - y) = \mathcal{A}x - \mathcal{A}y&amp;lt;/tex&amp;gt;. Значит, &amp;lt;tex dpi='100'&amp;gt;\mathcal{A}x \ne \mathcal{A}y&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
№30. Пространство R^n :  покоординатная сходимость&lt;br /&gt;
утв покоординатная сходимость в &amp;lt;tex dpi='100'&amp;gt;\mathbb R^n&amp;lt;/tex&amp;gt;&lt;br /&gt;
Условие&lt;br /&gt;
Пусть дана последовательность &amp;lt;tex dpi='100'&amp;gt;\overline x^{(m)} \in \mathbb R^n&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex dpi='100'&amp;gt;\overline x^{(m)} \rightarrow \overline x&amp;lt;/tex&amp;gt; в &amp;lt;tex dpi='100'&amp;gt;\mathbb R^n&amp;lt;/tex&amp;gt; тогда и только тогда, когда для любого &amp;lt;tex dpi='100'&amp;gt;j \in 1,\dots,n&amp;lt;/tex&amp;gt; последовательность &amp;lt;tex dpi='100'&amp;gt;\overline x_j^{(m)} \rightarrow \overline x_j&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№31. Полнота R^n&lt;br /&gt;
Условие&lt;br /&gt;
Пространство &amp;lt;tex dpi='100'&amp;gt;\mathbb R^n&amp;lt;/tex&amp;gt; с евклидовой нормой является B-пространством.&lt;br /&gt;
док-во&lt;br /&gt;
Надо установить, что из сходимости в себе следует существование предела по норме &amp;lt;tex dpi='100'&amp;gt;\mathbb R^n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если &amp;lt;tex dpi='100'&amp;gt;\|\overline x^{(m)} - \overline x^{(p)}\| \rightarrow 0&amp;lt;/tex&amp;gt;, то для любого &amp;lt;tex dpi='100'&amp;gt;j&amp;lt;/tex&amp;gt; выполняется &amp;lt;tex dpi='100'&amp;gt;|x_j^{(m)} - x_j^{(p)}| \rightarrow 0&amp;lt;/tex&amp;gt;. По критерию Коши для числовых последовательностей из этого следует, что каждая из последовательностей &amp;lt;tex dpi='100'&amp;gt;x_j^{(m)}&amp;lt;/tex&amp;gt; имеет предел, то есть, последовательность точек сходится покоординатно.&lt;br /&gt;
Но по доказанному ранее утверждению из покоординатной сходимости следует сходимость по норме, что и требовалось доказать.&lt;br /&gt;
&lt;br /&gt;
№32. Критерий компактности в R^n&lt;br /&gt;
Условие&lt;br /&gt;
Множество &amp;lt;tex dpi='100'&amp;gt; X &amp;lt;/tex&amp;gt; в &amp;lt;tex dpi='100'&amp;gt; R^n &amp;lt;/tex&amp;gt; компактно тогда и только тогда, когда оно замкнуто и ограничено.&lt;br /&gt;
&lt;br /&gt;
Ворпос №33. Непрерывные отображения в R^n: координатные функции, непрерывность линейных операторов&lt;br /&gt;
Л.о. непрерывен в X, если &amp;lt;tex dpi='100'&amp;gt;\lim \limits_{\mathcal {4} x \to 0} \mathcal{A} \left( x + \mathcal{4}x \right) = \mathcal{A} \left( x \right) &amp;lt;/tex&amp;gt;&lt;br /&gt;
Также, непрерывность л.о. совпадает с его непрерывностью в нуле.&lt;br /&gt;
В &amp;lt;tex dpi='100'&amp;gt;\mathbb{R}^n&amp;lt;/tex&amp;gt; сходимость покоординатная. &amp;lt;tex dpi='100'&amp;gt;\left | \sum \limits_{k=1}^m a_{jk} x_k \right | \le \sum \limits_{k=1}^m \left | a_{jk} \right | \left | x_k \right | \le \sqrt {\sum \limits_{k=1}^m \left | a_{jk} \right | ^ 2} \left \| \overline x \right \|&amp;lt;/tex&amp;gt; (по неравенству Коши для сумм), таким образом, из &amp;lt;tex dpi='100'&amp;gt;\overline x \to 0&amp;lt;/tex&amp;gt; неизбежно следует &amp;lt;tex dpi='100'&amp;gt;\sum \limits_{k=1}^m a_{jk} x_k \to 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
Утв Условие&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\left \| \mathcal{A} \right \| \le \sqrt{\sum \limits_{k=1}^n \sum \limits_{j=1}^m a_{jk}^2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
док-во&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\overline y = \mathcal{A} \overline x, y_j = \sum \limits_{k=1}^n a_{jk} x_k&amp;lt;/tex&amp;gt; — здесь отчётливо видно правило умножения матриц. Отсюда понятно, почему часто устанавливают связь между линейными операторами и матрицами: &amp;lt;tex dpi='100'&amp;gt;\mathcal{A} \colon \mathbb{R}^n \to \mathbb{R}^m \longleftrightarrow \mathcal{A} = \left ( a_{jk} \right )&amp;lt;/tex&amp;gt;, где &amp;lt;tex dpi='100'&amp;gt;j&amp;lt;/tex&amp;gt; и &amp;lt;tex dpi='100'&amp;gt;k&amp;lt;/tex&amp;gt; пробегают от &amp;lt;tex dpi='100'&amp;gt;1&amp;lt;/tex&amp;gt; до &amp;lt;tex dpi='100'&amp;gt;n&amp;lt;/tex&amp;gt; и &amp;lt;tex dpi='100'&amp;gt;m&amp;lt;/tex&amp;gt; соответственно, а &amp;lt;tex dpi='100'&amp;gt;\mathcal{A} \overline x &amp;lt;/tex&amp;gt; — результат действия л.о. &amp;lt;tex dpi='100'&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt; на точку &amp;lt;tex dpi='100'&amp;gt;\overline x&amp;lt;/tex&amp;gt; можно представить в виде произведения матрицы &amp;lt;tex dpi='100'&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt; и столбца &amp;lt;tex dpi='100'&amp;gt;x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
В &amp;lt;tex dpi='100'&amp;gt;\mathbb{R}^n&amp;lt;/tex&amp;gt; сходимость покоординатная. &amp;lt;tex dpi='100'&amp;gt;\left | \sum \limits_{k=1}^m a_{jk} x_k \right | \le \sum \limits_{k=1}^m \left | a_{jk} \right | \left | x_k \right | \le \sqrt {\sum \limits_{k=1}^m \left | a_{jk} \right | ^ 2} \left \| \overline x \right \|&amp;lt;/tex&amp;gt; (по неравенству Коши для сумм), таким образом, из &amp;lt;tex dpi='100'&amp;gt;\overline x \to 0&amp;lt;/tex&amp;gt; неизбежно следует &amp;lt;tex dpi='100'&amp;gt;\sum \limits_{k=1}^m a_{jk} x_k \to 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
Итак, линейный оператор, действующий из одного конечномерного пространства в другое, всегда непрерывен.&lt;br /&gt;
&lt;br /&gt;
№34. Дифференциал отображения и частные производные,  дифференцируемость суперпозиции&lt;br /&gt;
Пусть &amp;lt;tex dpi='100'&amp;gt;V_{r}(x)&amp;lt;/tex&amp;gt; -шар в &amp;lt;tex dpi='100'&amp;gt;X, \quad \mathcal{F} : V_r(x) \to Y &amp;lt;/tex&amp;gt;. &amp;lt;tex dpi='100'&amp;gt;\mathcal{F}&amp;lt;/tex&amp;gt; - '''дифференцируема''' в точке &amp;lt;tex dpi='100'&amp;gt;x&amp;lt;/tex&amp;gt;, если существует зависящий от &amp;lt;tex dpi='100'&amp;gt; x &amp;lt;/tex&amp;gt; ограниченный линейный оператор &amp;lt;tex dpi='100'&amp;gt;\mathcal{A} : X \to Y&amp;lt;/tex&amp;gt;, такой, что если &amp;lt;tex dpi='100'&amp;gt;\left \| \Delta x \right \| &amp;lt; r \quad (x + \Delta x \in V_r(x))&amp;lt;/tex&amp;gt;, то:&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt; \mathcal{F}(x + \Delta x) - \mathcal{F}(x) = \mathcal{A}(\Delta x) + \alpha(\Delta x) \left \| \Delta x \right \| &amp;lt;/tex&amp;gt;, &lt;br /&gt;
причем &amp;lt;tex dpi='100'&amp;gt; \alpha(\Delta x) \rightarrow 0&amp;lt;/tex&amp;gt; при &amp;lt;tex dpi='100'&amp;gt;\Delta x \rightarrow 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
Тогда &amp;lt;tex dpi='100'&amp;gt;\mathcal{A}(x) = \mathcal{F}'(x)&amp;lt;/tex&amp;gt; - '''производная Фреше''' отображения &amp;lt;tex dpi='100'&amp;gt;\mathcal{F}&amp;lt;/tex&amp;gt; в точке &amp;lt;tex dpi='100'&amp;gt;x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Условие&lt;br /&gt;
Композиция дифференцируемых отображений дифференцируема. Производная Фреше равна композиции производных Фреше отображений.&lt;br /&gt;
Пусть &amp;lt;tex dpi='100'&amp;gt;\mathcal{F} : V_r(x) \to Y, y = \mathcal{F}(x), \mathcal{G} : V_{r_1}(y) \to Z \quad \exists \mathcal{F}'(x), \mathcal{G}'(y), \mathcal{T} = \mathcal{G} \circ \mathcal{F}&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex dpi='100'&amp;gt;\exists \mathcal{T}'(x) = \mathcal{G}'(y)\mathcal{F}'(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
Данный предел называется '''частной производной''' первого порядка функции &amp;lt;tex dpi='100'&amp;gt;\mathcal{F}_i&amp;lt;/tex&amp;gt; по переменной &amp;lt;tex dpi='100'&amp;gt;x_j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;140&amp;quot;&amp;gt;A_{ij} = \lim\limits_{h \to 0} \frac{\mathcal{F}_i(\overline{x} + h\overline{e_j}) - \mathcal{F}_i(x)}{h} = \frac{\partial \mathcal{F}_i}{\partial x_j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№35. Формула конечных приращений для функции многих переменных&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\mathcal{F}_i(\overline{a}) - \mathcal{F}_i(\overline{b}) = \mathcal{F}'_i(\theta_i\overline{a}+(1-\theta_i)\overline{b})(\overline{a}-\overline{b})&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№36. Неравенство Лагранжа&lt;br /&gt;
Условие&lt;br /&gt;
Пусть &amp;lt;tex dpi='100'&amp;gt;V&amp;lt;/tex&amp;gt; - шар в &amp;lt;tex dpi='100'&amp;gt;\mathbb{R}^n, \quad \mathcal{F} : V \to \mathbb{R}^m, \quad \mathcal{F}&amp;lt;/tex&amp;gt; -дифференцируема в каждой точке шара, тогда:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\forall  \overline{a},\overline{b} \in V : \left|\left| \mathcal{F}(\overline{b}) - \mathcal{F}(\overline{a})\right|\right| \le M\left|\left|\overline{b}-\overline{a}\right|\right|&amp;lt;/tex&amp;gt;, где &amp;lt;tex dpi='100'&amp;gt;M = \sup\limits_{x \in [\overline{a},\overline{b}]} \left|\left|\mathcal{F}'(\overline{x})\right|\right| &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№37. Достаточное условие дифференцируемости функции многих переменных&lt;br /&gt;
Условие&lt;br /&gt;
Пусть &amp;lt;tex dpi='100'&amp;gt;V(a) \subset \mathbb{R}^n&amp;lt;/tex&amp;gt; &amp;lt;tex dpi='100'&amp;gt;y = f(x_1,...,x_n)&amp;lt;/tex&amp;gt;, &amp;lt;tex dpi='100'&amp;gt;y : V \to \mathbb{R}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\forall x \in V: \ \exists \frac{\partial f}{\partial x_j}&amp;lt;/tex&amp;gt;, каждая из которых, как функция &amp;lt;tex dpi='100'&amp;gt;n&amp;lt;/tex&amp;gt; переменных, непрерывна в &amp;lt;tex dpi='100'&amp;gt;\overline{a} :\lim\limits_{\overline{x} \to \overline{a}}\frac{\partial f}{\partial x_j}(\overline{x}) &lt;br /&gt;
= \frac{\partial f}{\partial x_j}(\overline{a})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда существует дифференциал этой функции в точке &amp;lt;tex dpi='100'&amp;gt;a&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
№38. Дифференциалы высших порядков, теорема о смешанных производных&lt;br /&gt;
Определим частные производные и дифференциалы высших порядков.&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\frac \partial{\partial x_j}&amp;lt;/tex&amp;gt; — оператор, дифференцирующий функцию по &amp;lt;tex dpi='100'&amp;gt;x_j&amp;lt;/tex&amp;gt;. Последовательное применение такого рода оператора даёт нам частные производные высших порядков. &lt;br /&gt;
Пусть &amp;lt;tex dpi='100'&amp;gt;z = f(x,y)&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex dpi='100'&amp;gt;\frac \partial{\partial y} \left ( \frac {\partial f}{\partial x} \right )\stackrel{\mathrm{def}}{=}\frac {\partial^2 f}{\partial x \partial y}&amp;lt;/tex&amp;gt; — частная производная второго порядка функции &amp;lt;tex dpi='100'&amp;gt;f&amp;lt;/tex&amp;gt;. Дифференцирование осуществляется по переменной в знаменателе, слева направо.&lt;br /&gt;
Пусть в двумерном шаре у функции &amp;lt;tex dpi='100'&amp;gt;z = f(x,y)&amp;lt;/tex&amp;gt; существуют смешанные производные второго порядка и каждая из них непрерывна в некоторой точке &amp;lt;tex dpi='100'&amp;gt;\overline a&amp;lt;/tex&amp;gt; этого шара. Тогда в &amp;lt;tex dpi='100'&amp;gt;\overline a&amp;lt;/tex&amp;gt;: &amp;lt;tex dpi='100'&amp;gt;\frac {\partial^2 f}{\partial x \partial y} (\overline a)=\frac {\partial^2 f}{\partial y \partial x}(\overline a)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№39. Формула Тейлора для функции многих переменных&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;f(\overline a+t\Delta \overline a)-f(\overline a)=\sum \limits_{k=1}^n \frac {d^{k}f(\overline a)}{k!}+\frac {d^{n+1}f(\overline a+\theta\Delta \overline a)}{(n+1)!}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№40. Безусловный экстремум: необходимое и достаточное условия&lt;br /&gt;
Опр: Пусть задан линейный функционал &amp;lt;tex dpi='100'&amp;gt;y = f(x_1, x_2, \dots, x_n) &amp;lt;/tex&amp;gt; на &amp;lt;tex dpi='100'&amp;gt; V(\overline{a}) \subset R^n &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если при &amp;lt;tex dpi='100'&amp;gt;\| \Delta \overline{a} \| \le \delta&amp;lt;/tex&amp;gt;, &amp;lt;tex dpi='100'&amp;gt;\delta \approx 0 \Rightarrow f(\overline{a} + \Delta \overline{a}) \le f(\overline{a})&amp;lt;/tex&amp;gt;, то &amp;lt;tex dpi='100'&amp;gt;a&amp;lt;/tex&amp;gt; {{---}} '''точка локального максимума'''. Аналогично определяется точка локального минимума.&lt;br /&gt;
Аналог теоремы Ферма&lt;br /&gt;
Пусть &amp;lt;tex dpi='100'&amp;gt;f&amp;lt;/tex&amp;gt; дифференцируема в точке локального экстремума &amp;lt;tex dpi='100'&amp;gt;a&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex dpi='100'&amp;gt;\forall j = 1..n : \frac{\partial{f}}{\partial{x_j}} \overline{a} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№41. Локальная теорема о неявном отображении&lt;br /&gt;
О неявном отображении&lt;br /&gt;
Условие&lt;br /&gt;
Пусть для &amp;lt;tex dpi='100'&amp;gt;f&amp;lt;/tex&amp;gt; поставлена задача о неявном отображении, с начальными данными &amp;lt;tex dpi='100'&amp;gt;(x_0,y_0)&amp;lt;/tex&amp;gt;. Известно, что в окрестности начальных данных&amp;lt;tex dpi='100'&amp;gt;f_{\overline y}'&amp;lt;/tex&amp;gt; непрерывно зависит от &amp;lt;tex dpi='100'&amp;gt;\overline x,\overline y&amp;lt;/tex&amp;gt; и непрерывно обратима в &amp;lt;tex dpi='100'&amp;gt;(x_0,y_0)&amp;lt;/tex&amp;gt;. Тогда в некоторой окрестности начальных данных неявное отображение существует.&lt;br /&gt;
{{TODO | t = здесь надо еще написать что-нибудь типа определения неявного отображения&lt;br /&gt;
&lt;br /&gt;
№42. Исследование функции многих переменных на условный экстремум&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;z=f(\overline x, \overline y),~\overline x=(x_1,\dots x_n),~\overline y=(y_1,\dots y_m)&amp;lt;/tex&amp;gt;. Пусть заданы «уравнения связи» в количестве m: &lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\begin{cases} g_1(\overline x,\overline y)=0\\&lt;br /&gt;
              g_2(\overline x,\overline y)=0\\&lt;br /&gt;
              \dots\\&lt;br /&gt;
              g_m(\overline x,\overline y)=0 \end{cases};&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;(\overline{x_0},\overline{y_0})&amp;lt;/tex&amp;gt; — '''условный максимум''' функции &amp;lt;tex dpi='100'&amp;gt;f&amp;lt;/tex&amp;gt;, если для всех &amp;lt;tex dpi='100'&amp;gt;\overline x \approx \overline{x_0},~\overline y \approx \overline{y_0}&amp;lt;/tex&amp;gt; и &amp;lt;tex dpi='100'&amp;gt;(\overline x,\overline y)&amp;lt;/tex&amp;gt;, удовлетворяющих уравнениям связи, выполняется неравенство &amp;lt;tex dpi='100'&amp;gt;f(\overline x,\overline y)\le f(\overline {x_0},\overline {y_0})&amp;lt;/tex&amp;gt;. Если же &amp;lt;tex dpi='100'&amp;gt;f(\overline x,\overline y)\ge f(\overline {x_0},\overline {y_0}),~(\overline{x_0},\overline{y_0})&amp;lt;/tex&amp;gt; — '''условный минимум'''.&lt;br /&gt;
&lt;br /&gt;
№43. Определенный интеграл, зависящий от параметра: непрерывность, интегрирование и дифференцирование&lt;br /&gt;
&amp;lt;wikitex&amp;gt;&lt;br /&gt;
Рассматриваем $ z = f(x, y) $, заданную на прямоугольнике $ a \le x \le b; \quad c \le y \le d $.&lt;br /&gt;
$ f $ непрерывна. &lt;br /&gt;
$ F(y) = \int\limits_a^b f(x, y) dx $ - интеграл, зависящий от параметра. &lt;br /&gt;
# $ F(y) $ - непрерывна на $ [c; d] $.&lt;br /&gt;
# Если существует непрерывная $ \frac{\partial f}{\partial y} $, то cуществует $ F'(y) = \int\limits_a^b \frac{\partial f}{\partial y} (x, y) dx $ - формула Лейбница.&lt;br /&gt;
# $ \int\limits_c^d F(y) dy = \int\limits_a^b dx \int\limits_c^d f(x, y) dy $ - формула читается справа налево, является повторным интегралом и по сути означает смену местами интегралов по двум переменным.&lt;br /&gt;
&amp;lt;/wikitex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№44. Равномерная сходимость несобственного интеграла, зависящего от параметра, признак Вейерштрасса&lt;br /&gt;
&amp;lt;wikitex&amp;gt;&lt;br /&gt;
Если выполняется следующее условие: $ f $ непрерывна, $ \forall \varepsilon &amp;gt; 0 : \exists A_0 : \forall A &amp;gt; A_0 , \forall y_0 \in [c; d] \Rightarrow | \int\limits_A^{\infty} f(x, y_0) dx | &amp;lt; \varepsilon $, то $ F(y) = \int\limits_a^{\infty} f(x, y) dx $ равномерно сходится на $ [c; d] $.&lt;br /&gt;
Вейерштрасс Признак равномерной сходимости несобственных интегралов&lt;br /&gt;
Условие&lt;br /&gt;
Пусть $ |f(x, y) | \le g(x)\ \forall x \ge a, \forall y \in [c; d] $.&lt;br /&gt;
Пусть $ \int\limits_a^{\infty} g(x) dx $ - сходится. Тогда соответствующий интеграл равномерно сходится на $ [c; d] $.&lt;br /&gt;
&amp;lt;/wikitex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№45. Несобственный интеграл, зависящий от параметра:  непрерывность&lt;br /&gt;
&amp;lt;wikitex&amp;gt;&lt;br /&gt;
$ F(y) = \int\limits_a^{\infty} f(x, y) dx \stackrel{?}{\Rightarrow} \Delta F(y) \xrightarrow[\Delta y \to 0]{} 0 $&lt;br /&gt;
&amp;lt;/wikitex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№46. Несобственный интеграл, зависящий от параметра: интегрирование&lt;br /&gt;
&amp;lt;wikitex&amp;gt;&lt;br /&gt;
$ \int\limits_c^d dy \int\limits_a^{\infty} f(x, y) dx  = \int\limits_a^{\infty} dx \int\limits_c^d f(x,y) dy $&lt;br /&gt;
&amp;lt;/wikitex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№47. Несобственный интеграл, зависящий от параметра: дифференцирование&lt;br /&gt;
&amp;lt;wikitex&amp;gt;&lt;br /&gt;
$ \int\limits_a^{\infty} \frac{\partial f}{\partial y} (x, y) dx = \left( \int\limits_c^{y} g(t) dt \right)' = \left( \int\limits_a^{\infty} f(x, y) dx \right)' $&lt;br /&gt;
&amp;lt;/wikitex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№48. Понятие о Гамма и Бета функциях Эйлера&lt;br /&gt;
&amp;lt;wikitex&amp;gt;&lt;br /&gt;
$ B (a, b) = \int\limits_0^1 x^{a - 1} (1 - x)^{b - 1} dx $&lt;br /&gt;
$ \Gamma (a) = \int\limits_0^{\infty} x^{a - 1} e^{-x} dx $&lt;br /&gt;
В обоих случаях: интегралы, зависящие от параметра.&lt;br /&gt;
Легко понять, что $ B (a, b) $ Сходится при $ a, b &amp;gt; 0 $;  $ \Gamma(a) $ сходится при $ a &amp;gt; 0 $.&lt;br /&gt;
&amp;lt;/wikitex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№49. Интеграл Римана по прямоугольнику: критерий существования&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;(\bar{x_i}, \bar{y_i}) \in \Pi_{ij}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\sigma(f, \tau) = \sum\limits_{i= 0}^{n - 1} \sum\limits_{j = 0}^{m - 1} f(\bar{x_i}, \bar{y_j}) \delta x_i \delta y_j&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;|\Pi_{ij}| = \delta x_i \delta y_j&amp;lt;/tex&amp;gt;&lt;br /&gt;
Двойной интеграл &amp;lt;tex dpi='100'&amp;gt;\iint\limits_\Pi f = \iint\limits_\Pi f(x, y) dx dy = \lim\limits_{\operatorname{rang} \tau \to 0} \sigma(f, \tau)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\underline{s}(f, \tau) = \sum\limits_{i, j} m_{ij} \delta x_i \delta y_j&amp;lt;/tex&amp;gt;, &lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\overline{s}(f, \tau) = \sum\limits_{i, j} M_{ij} \delta x_i \delta y_j&amp;lt;/tex&amp;gt;&lt;br /&gt;
если &amp;lt;tex dpi='100'&amp;gt;f&amp;lt;/tex&amp;gt; - непрерывна на &amp;lt;tex dpi='100'&amp;gt; \Pi &amp;lt;/tex&amp;gt;, то существует &amp;lt;tex dpi='100'&amp;gt;\iint\limits_\Pi f&amp;lt;/tex&amp;gt;(достаточное условие интегрируемости).&lt;br /&gt;
&lt;br /&gt;
№50. Аддитивность интеграла по прямоугольнику&lt;br /&gt;
* &amp;lt;tex dpi='100'&amp;gt;\exists \iint\limits_\Pi f \iff \forall m \ \exists \int\limits_{\Pi_m} f&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex dpi='100'&amp;gt;\iint\limits_\Pi f = \sum\limits_{m = 1}^p \, \iint\limits_{\Pi_m} f&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№52. Критерий квадрируемости фигуры по Жордану&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;E \subset \mathbb{R}^2&amp;lt;/tex&amp;gt; '''квадрируема по Жордану''', если существует &amp;lt;tex dpi='100'&amp;gt;\iint\limits_E 1&amp;lt;/tex&amp;gt;. Значение этого интеграла называется 'площадью фигуры'.&lt;br /&gt;
&lt;br /&gt;
№53. Условие существования интеграла по квадрируемому компакту&lt;br /&gt;
Условие&lt;br /&gt;
Пусть &amp;lt;tex dpi='100'&amp;gt;E&amp;lt;/tex&amp;gt; - квадрируемый компакт на плоскости, &amp;lt;tex dpi='100'&amp;gt;f&amp;lt;/tex&amp;gt; непрерывна на &amp;lt;tex dpi='100'&amp;gt;E&amp;lt;/tex&amp;gt;. Тогда существует &amp;lt;tex dpi='100'&amp;gt;\iint\limits_E f&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
№55. Вычисление площади фигуры в криволинейных координатах&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\int \int dx dy  = \int \int | J(u, v) | du dv &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№56. Замена переменных интегрирования в двойном интеграле&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\mathcal{J}(u_1, \ldots, u_n) = \left|\begin{array}{ccc}\frac{\partial x_1}{\partial u_1} &amp;amp; \cdots &amp;amp; \frac{\partial x_1}{\partial u_n} \\\vdots &amp;amp; \ddots &amp;amp; \vdots \\\frac{\partial x_n}{\partial u_1} &amp;amp; \cdots &amp;amp; \frac{\partial x_n}{\partial u_n} \\\end{array}\right| \ne 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex dpi='100'&amp;gt;\int\limits_E f(\bar x) d \bar x = \int\limits_{E'} f(\bar x(\bar u)) |\mathcal{J}(\bar u)| d \bar u&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
№57. Обзор формул для многократных интегралов&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%BA%D1%81%D1%82%D1%8B_%D0%B8_%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BC%D0%BE%D0%BD%D0%BE%D0%B8%D0%B4%D1%8B&amp;diff=83410</id>
		<title>Контексты и синтаксические моноиды</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%BA%D1%81%D1%82%D1%8B_%D0%B8_%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BC%D0%BE%D0%BD%D0%BE%D0%B8%D0%B4%D1%8B&amp;diff=83410"/>
				<updated>2022-09-01T04:53:19Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
'''Правым контекстом''' (англ. ''right context'') &amp;lt;tex&amp;gt;C_L^R(y)&amp;lt;/tex&amp;gt; слова &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; в языке &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; называется множество &amp;lt;tex&amp;gt;\{z \mid yz \in L\}&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;L&amp;lt;/tex&amp;gt; {{---}} регулярный &amp;lt;tex&amp;gt;\Leftrightarrow&amp;lt;/tex&amp;gt; множество &amp;lt;tex&amp;gt;\{C_L^R(y) \mid y \in \Sigma^*\}&amp;lt;/tex&amp;gt; его правых контекстов конечно.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Автомат и правые контексты 1.png|315px|thumb|right|Автомат на правых контекстах. Легенда: &amp;lt;font color=orchit&amp;gt;начальное&amp;lt;/font&amp;gt; / &amp;lt;font color=orange&amp;gt;промежуточное&amp;lt;/font&amp;gt; / &amp;lt;font color=red&amp;gt;дьявольское&amp;lt;/font&amp;gt; / &amp;lt;font color=yelloworange&amp;gt;терминальное&amp;lt;/font&amp;gt; состояния; &amp;lt;font color=grey&amp;gt;контекст&amp;lt;/font&amp;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;\left( C_L^R(\varepsilon) = L \right)&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;
:: 1. &amp;lt;tex&amp;gt; u \quad \leftrightarrow \quad C_L^R(x) ,\ v \quad \leftrightarrow \quad C_L^R(xc) \quad \leftrightarrow \quad \langle u,c \rangle \vdash \langle v, \varepsilon \rangle &amp;lt;/tex&amp;gt;&lt;br /&gt;
:: 2. &amp;lt;tex&amp;gt; s \quad \leftrightarrow \quad C_L^R(\varepsilon), &amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt; {{---}} стартовое состояние.&lt;br /&gt;
:: 3. &amp;lt;tex&amp;gt; \varepsilon \in C_L^R(\omega) \quad \Leftrightarrow \quad v \in T \quad ( v \quad \leftrightarrow \quad C_L^R(\omega) ) &amp;lt;/tex&amp;gt;&lt;br /&gt;
:Из 1 следует&lt;br /&gt;
:: 1*. &amp;lt;tex&amp;gt; u \quad \leftrightarrow \quad C_L^R(x) ,\ v \quad \leftrightarrow \quad C_L^R(x \omega) \quad \Leftrightarrow \quad \langle u,\omega \rangle \vdash^* \langle v, \varepsilon \rangle &amp;lt;/tex&amp;gt;&lt;br /&gt;
:Положив &amp;lt;tex&amp;gt; s = u &amp;lt;/tex&amp;gt; и учтя 2, получим&lt;br /&gt;
:: &amp;lt;tex&amp;gt; v \quad \leftrightarrow \quad C_L^R(\omega) \quad \Leftrightarrow \quad \langle s,\omega \rangle \vdash^* \langle v, \varepsilon \rangle &amp;lt;/tex&amp;gt;&lt;br /&gt;
:Теперь зафиксируем за состоянием &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; контекст &amp;lt;tex&amp;gt; C_L^R(\omega) &amp;lt;/tex&amp;gt;. Тогда левая часть 3 равносильна &amp;lt;tex&amp;gt; \omega \in L &amp;lt;/tex&amp;gt;, а правая, с учётом &amp;lt;tex&amp;gt; \langle s,\omega \rangle \vdash^* \langle v, \varepsilon \rangle &amp;lt;/tex&amp;gt;, означает, что автомат допускает &amp;lt;tex&amp;gt; \omega &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Пусть &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; {{---}} регулярный. В таком случае существует автомат &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt;, распознающий его. &lt;br /&gt;
:Рассмотрим произвольное слово &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;. Положим &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; {{---}} такое состояние &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt;, в которое можно перейти из начального по слову &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;C_L^R(y)&amp;lt;/tex&amp;gt; совпадает с множеством слов, по которым из состояния &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; можно попасть в допускающее. &lt;br /&gt;
:Причем если по какому-то слову &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt; тоже можно перейти из начального состояния в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;C_L^R(y) = C_L^R(z)&amp;lt;/tex&amp;gt;. Наоборот, если &amp;lt;tex&amp;gt;C_L^R(y) = C_L^R(z)&amp;lt;/tex&amp;gt;, то состояния, в которые можно перейти по словам &amp;lt;tex&amp;gt;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;
=== Примеры === &lt;br /&gt;
Здесь будем понимать под &amp;lt;tex&amp;gt; C_L^R(X) = Y &amp;lt;/tex&amp;gt; не стандартное отображение множества в множество, а &amp;lt;tex&amp;gt; \forall x \in X :\ C_L^R(x) = Y &amp;lt;/tex&amp;gt;. Рассмотрим правые контексты следующих языков:&lt;br /&gt;
[[Файл:Автомат и правые контексты 2.png|500px|thumb|right|Автомат к языку &amp;lt;tex&amp;gt; \{ 001, 111, 100 \} &amp;lt;/tex&amp;gt;]] &lt;br /&gt;
==== Пример 1 ====&lt;br /&gt;
&amp;lt;tex&amp;gt; \{ 001, 111, 100 \} &amp;lt;/tex&amp;gt;&lt;br /&gt;
: Возникающие контексты:&lt;br /&gt;
:: &amp;lt;tex&amp;gt;a) C_L^R(\varepsilon) = \{ 001, 111, 100 \} &amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:: &amp;lt;tex&amp;gt;b) C_L^R(0) = \{ 01 \} &amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:: &amp;lt;tex&amp;gt;c) C_L^R(00) = \{ 1 \} &amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:: &amp;lt;tex&amp;gt;d) C_L^R(001) = \{ \varepsilon \} &amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:: &amp;lt;tex&amp;gt;e) C_L^R(1) = \{ 11, 00 \} &amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:: &amp;lt;tex&amp;gt;f) C_L^R(10) = \{ 0 \} &amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:: &amp;lt;tex&amp;gt;g) C_L^R(100) = \{ \varepsilon \} &amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:: &amp;lt;tex&amp;gt;h) C_L^R(11) = \{ 1 \} &amp;lt;/tex&amp;gt;  &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:: &amp;lt;tex&amp;gt;j) C_L^R(111) = \{ \varepsilon \} &amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:: &amp;lt;tex&amp;gt;k) C_L^R(X) = \varnothing &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; {{---}} множество остальных аргументов. &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
: Начальное состояние {{---}} &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; . Допускающие состояния: &amp;lt;tex&amp;gt;d, g, j&amp;lt;/tex&amp;gt; (в них &amp;lt;tex&amp;gt; \varepsilon \in C_L^R(\ldots) &amp;lt;/tex&amp;gt;). Состояние &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; {{---}} [[Детерминированные_конечные_автоматы#допускает|дьявольское]]. Всего 8 состояний (именно столько имеется различных контекстов).&lt;br /&gt;
:[[Файл:Автомат и правые контексты 3.png|350px|thumb|right|Автомат к языку &amp;lt;tex&amp;gt; 0^*11 &amp;lt;/tex&amp;gt;]]&lt;br /&gt;
==== Пример 2  ====&lt;br /&gt;
&amp;lt;tex&amp;gt; 0^*11 &amp;lt;/tex&amp;gt;&lt;br /&gt;
: Возможные контексты (аргументы упорядочены в лексикографическом порядке):&lt;br /&gt;
:: &amp;lt;tex&amp;gt;a) C_L^R(0^*) = 0^*11 &amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:: &amp;lt;tex&amp;gt;b) C_L^R(0^*1) = 1 &amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:: &amp;lt;tex&amp;gt;c) C_L^R(0^*10(0|1)^*) = \varnothing &amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:: &amp;lt;tex&amp;gt;d) C_L^R(0^*11) = \varepsilon &amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:: &amp;lt;tex&amp;gt;e) C_L^R(0^*11(0|1)^+) = \varnothing &amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
: Итого 4 состояния; начальное состояние &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;c&amp;lt;/tex&amp;gt;&amp;amp;&amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} дьявольское.&lt;br /&gt;
&lt;br /&gt;
=== Левый контекст ===&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым контекстом''' (англ. ''left context'') &amp;lt;tex&amp;gt;C_L^L(y)&amp;lt;/tex&amp;gt; слова &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; в языке &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; называется множество &amp;lt;tex&amp;gt;\{z \mid zy \in L\}&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;L&amp;lt;/tex&amp;gt; {{---}} регулярный &amp;lt;tex&amp;gt;\Leftrightarrow&amp;lt;/tex&amp;gt; множество &amp;lt;tex&amp;gt;\{C_L^L(y) \mid y \in \Sigma^*\}&amp;lt;/tex&amp;gt; его левых контекстов конечно.&lt;br /&gt;
|proof=&lt;br /&gt;
Поскольку множество регулярных языков замкнуто относительно операции разворота, то из того, что &amp;lt;tex&amp;gt;C_L^L(y) = \overleftarrow{C_{\overleftarrow{L}}^R(\overleftarrow{y})}&amp;lt;/tex&amp;gt; и аналогичного утверждения о правых контекстах получаем требуемое.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Двухсторонний контекст ===&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Двухсторонним контекстом''' (англ. ''two-sided context'') &amp;lt;tex&amp;gt;C_L(y)&amp;lt;/tex&amp;gt; слова &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; в языке &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; называется множество &amp;lt;tex&amp;gt;\{\langle x,z\rangle \mid xyz \in L\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
'''Любопытное замечание:''' &amp;lt;tex&amp;gt;C_L(\varepsilon)&amp;lt;/tex&amp;gt; состоит из всех пар строк, которые при конкатенации дают слово из языка. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для доказательства последующих утверждений будем использовать бинарное отображение &amp;lt;tex&amp;gt; (\cdot) :\ Q \times \Sigma^* \rightarrow Q &amp;lt;/tex&amp;gt; со свойством &amp;lt;tex&amp;gt; q \cdot \omega = q' \Leftrightarrow \langle q,\omega \rangle \vdash^* \langle q', \varepsilon \rangle&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; {{---}} регулярный &amp;lt;tex&amp;gt;\Leftrightarrow&amp;lt;/tex&amp;gt; множество &amp;lt;tex&amp;gt;\{C_L(y) \mid y \in \Sigma^*\}&amp;lt;/tex&amp;gt; его двухсторонних контекстов конечно.&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt;\Leftarrow&amp;lt;/tex&amp;gt;&lt;br /&gt;
:Заметим, что &amp;lt;tex&amp;gt; \{ z \mid \langle \varepsilon, z \rangle \in C_L(y) \} = C_L^R(y) &amp;lt;/tex&amp;gt;. Следовательно, если множество двухсторонних контекстов языка конечно, то конечно и множество его правых контекстов, а это значит, что язык регулярный.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt;&lt;br /&gt;
:Пусть &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; {{---}} регулярный. В таком случае существует детерминированный автомат &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt;, распознающий его. Понятно, что для любого слова &amp;lt;tex&amp;gt; xyz &amp;lt;/tex&amp;gt;, допускаемого автоматом, существуют &amp;lt;tex&amp;gt; u ,\ v &amp;lt;/tex&amp;gt; такие, что &amp;lt;tex&amp;gt; s \cdot x = u ,\ u \cdot y = v ,\ v \cdot z \in T &amp;lt;/tex&amp;gt; (где &amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt; {{---}} начальное состояние). &lt;br /&gt;
:Тогда справедливо равенство &amp;lt;tex&amp;gt; C_L(y) = \bigcup\limits_{(u, v) :\ u \cdot y = v} \{ \langle x, z \rangle \mid s \cdot x = u ,\ v \cdot z \in T \} &amp;lt;/tex&amp;gt;. Учитывая &amp;lt;tex&amp;gt; | \{ (u, v) \mid u,v \in Q \} | = |Q|^2 &amp;lt;/tex&amp;gt;, получаем &amp;lt;tex&amp;gt; | \{ C_L(y) \mid y \in \Sigma^* \} | \leqslant 2^{|Q|^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=&lt;br /&gt;
'''Синтаксическим моноидом''' (англ. ''syntactic monoid'') &amp;lt;tex&amp;gt;M(L)&amp;lt;/tex&amp;gt; языка &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; называется множество, состоящее из его классов эквивалентности &amp;lt;tex&amp;gt;[[x]] = \{ y \in \Sigma^* \mid C_L(x) = C_L(y) \} \ &amp;lt;/tex&amp;gt;, с введённым на нём операцией конкатенации &amp;lt;tex&amp;gt;\circ&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;[[x]]\circ[[y]] = [[xy]] \ \ &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;
|definition=&lt;br /&gt;
'''Групповой язык''' (англ. ''group language'') {{---}} это язык, синтаксический моноид которого является [[Группа|группой]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Свойства ===&lt;br /&gt;
Синтаксический моноид &amp;lt;tex&amp;gt;M(L)&amp;lt;/tex&amp;gt; определён для любого &amp;lt;tex&amp;gt;L \in \Sigma^*&amp;lt;/tex&amp;gt;, однако некоторые свойства языка можно определить по структуре его синтаксического моноида. Размер синтаксического моноида является мерой структурной сложности языка.&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; {{---}} регулярный &amp;lt;tex&amp;gt;\Leftrightarrow&amp;lt;/tex&amp;gt; его синтаксический моноид &amp;lt;tex&amp;gt;M(L)&amp;lt;/tex&amp;gt; конечен.&lt;br /&gt;
|proof=&lt;br /&gt;
Размер синтаксического моноида &amp;lt;tex&amp;gt;M(L)&amp;lt;/tex&amp;gt; языка &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; равен количеству его различных двухсторонних контекстов &amp;lt;tex&amp;gt;C_L&amp;lt;/tex&amp;gt;. Применяя лемму, доказанную ранее, получаем:&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; {{---}} регулярный &amp;lt;tex&amp;gt;\Leftrightarrow&amp;lt;/tex&amp;gt; множество &amp;lt;tex&amp;gt;\{C_L(y) \mid y \in \Sigma^*\}&amp;lt;/tex&amp;gt; его двухсторонних контекстов конечно &amp;lt;tex&amp;gt;\Leftrightarrow&amp;lt;/tex&amp;gt; его синтаксический моноид &amp;lt;tex&amp;gt;M(L)&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;L&amp;lt;/tex&amp;gt; распознается [[Детерминированные конечные автоматы|ДКА]] &amp;lt;tex&amp;gt;\mathcal{A} = \langle \Sigma,Q,s,T,\delta  \rangle&amp;lt;/tex&amp;gt;. Тогда размер его синтаксического моноида &amp;lt;tex&amp;gt;M(L)&amp;lt;/tex&amp;gt; не превосходит &amp;lt;tex&amp;gt;|Q|^{|Q|}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Введём следующее отношение эквивалентности на строках:&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;tex&amp;gt;x \cong y \Leftrightarrow \forall q \in Q: q \cdot x = q \cdot y&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;Оценим количество классов, на которые отношение &amp;lt;tex&amp;gt;\cong&amp;lt;/tex&amp;gt; разбивает язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;. Для этого пронумеруем состояния, и каждому слову &amp;lt;tex&amp;gt;  \omega&amp;lt;/tex&amp;gt; сопоставим вектор &amp;lt;tex&amp;gt; a_{\omega} \in Q^{|Q|} &amp;lt;/tex&amp;gt; такой, что &amp;lt;tex&amp;gt; a_{\omega}[i] = q_j \Leftrightarrow q_i \cdot \omega = q_j &amp;lt;/tex&amp;gt;. Количество различных таких векторов {{---}} &amp;lt;tex&amp;gt; {|Q|}^{|Q|} &amp;lt;/tex&amp;gt;&amp;lt;!--- (поскольку &amp;lt;tex&amp;gt; \forall i = 1 \ldots |Q| :\ a[i] = 1 \ldots |Q| &amp;lt;/tex&amp;gt;) ---&amp;gt;. В то же время неэквивалентным словам соответствуют разные &amp;lt;tex&amp;gt; a &amp;lt;/tex&amp;gt;, тогда количество классов эквивалентности также ограничено &amp;lt;tex&amp;gt; {|Q|}^{|Q|} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Остаётся показать, что существует взаимно-однозначное соответствие между нашими классами эквивалентности и синтаксическими моноидами. Смотрим:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;tex&amp;gt; x \cong y &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;tex&amp;gt; \Leftrightarrow &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;tex&amp;gt; s \cdot (uxv) = ((s \cdot u) \cdot x) \cdot v = ((s \cdot u) \cdot y) \cdot v = s \cdot (uyv) \ &amp;lt;/tex&amp;gt; (пусть &amp;lt;tex&amp;gt; s \cdot u = q &amp;lt;/tex&amp;gt; из определения &amp;lt;tex&amp;gt; \cong &amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt; (s \cdot u) \cdot x = q \cdot x = q' = q \cdot y = (s \cdot u) \cdot y \ &amp;lt;/tex&amp;gt;)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;tex&amp;gt; \Leftrightarrow &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;tex&amp;gt; s \cdot (uxv) \in T \Leftrightarrow s \cdot (uyv) \in T &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;tex&amp;gt; \Leftrightarrow &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;tex&amp;gt; uxv \in L \Leftrightarrow uyv \in L &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;tex&amp;gt; \Leftrightarrow &amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;tex&amp;gt; [[x]] = [[y]] &amp;lt;/tex&amp;gt;&lt;br /&gt;
(&amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt; {{---}} начальное состояние).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;\mathcal{A} = \langle \Sigma,Q,s,T,\delta \rangle&amp;lt;/tex&amp;gt; {{---}} [[Детерминированные конечные автоматы|ДКА]]. Каждое слово &amp;lt;tex&amp;gt;\omega \in \Sigma^*&amp;lt;/tex&amp;gt; порождает отображение &amp;lt;tex&amp;gt;f_\omega : Q \rightarrow Q&amp;lt;/tex&amp;gt;, определённое следующим образом: &amp;lt;tex&amp;gt;f_\omega(q) = q \cdot \omega&amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Моноидом переходов''' (англ. ''transition monoid'') &amp;lt;tex&amp;gt;M(\mathcal{A})&amp;lt;/tex&amp;gt; называется множество отображений &amp;lt;tex&amp;gt;f_\omega&amp;lt;/tex&amp;gt; с операцией композиции. &amp;lt;tex&amp;gt;f_x \cdot f_y = f_{xy}&amp;lt;/tex&amp;gt;. Нейтральным элементом в данном моноиде является отображение &amp;lt;tex&amp;gt;f_\varepsilon&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;\mathcal{A} = \langle \Sigma,Q,s,T,\delta \rangle&amp;lt;/tex&amp;gt; {{---}} минимальный [[Детерминированные конечные автоматы|ДКА]], задающий язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;M(\mathcal{A})&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;M(L)&amp;lt;/tex&amp;gt; изоморфны.&lt;br /&gt;
|proof=&lt;br /&gt;
Покажем, что &amp;lt;tex&amp;gt;f_x = f_y \quad \Leftrightarrow \quad [[x]] = [[y]]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Данный факт был показан в доказательстве предыдущей леммы, он не требует минимальности автомата.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Leftarrow&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br/&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;q \in Q&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;q = s \cdot u&amp;lt;/tex&amp;gt; для некоторого слова &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;q_1 = f_x(q) = s \cdot ux&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;q_2 = f_y(q) = s \cdot uy&amp;lt;/tex&amp;gt;. Поскольку &amp;lt;tex&amp;gt;[[x]] = [[y]]&amp;lt;/tex&amp;gt;, справедливо &amp;lt;tex&amp;gt;uxv \in L \quad \Leftrightarrow \quad uyv \in L&amp;lt;/tex&amp;gt;. Следовательно, &amp;lt;tex&amp;gt;q_1 \cdot v \in T \Leftrightarrow q_2 \cdot v \in T&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;q_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;q_2&amp;lt;/tex&amp;gt; эквивалентны. Значит, &amp;lt;tex&amp;gt;q_1 = q_2&amp;lt;/tex&amp;gt;, так как автомат &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt; минимален. То есть, &amp;lt;tex&amp;gt;f_x = f_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;L = \{\omega \mid |\omega| \bmod 2 = 0 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\{\langle u, v \rangle \mid uxv \in L\}&amp;lt;/tex&amp;gt; {{---}} это множество всех пар &amp;lt;tex&amp;gt;\langle u,v \rangle&amp;lt;/tex&amp;gt;, таких что &amp;lt;tex&amp;gt;|u| + |v| = |x| \ (\mathrm{mod} \ 2 )&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит, &amp;lt;tex&amp;gt;M(L)&amp;lt;/tex&amp;gt; состоит из двух элементов: множества слов чётной длины и множества слов нечётной длины. Нейтральным элементом в данном моноиде является множество слов чётной длины. &lt;br /&gt;
&lt;br /&gt;
Оба элемента являются обратными самим себе, значит &amp;lt;tex&amp;gt;M(L)&amp;lt;/tex&amp;gt; является группой, следовательно &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; {{---}} групповой язык.&lt;br /&gt;
&lt;br /&gt;
====Язык над алфавитом из 0 и 1, заданный регулярным выражением 1(0|1)*====&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; над алфавитом &amp;lt;tex&amp;gt;\Sigma = \{0,1\}&amp;lt;/tex&amp;gt; задан регулярным выражением &amp;lt;tex&amp;gt;1(0|1)^*&amp;lt;/tex&amp;gt;. Его синтаксический моноид &amp;lt;tex&amp;gt;M(L)&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;[[\varepsilon]] \ &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;[[0]] \ &amp;lt;/tex&amp;gt; содержит все строки, распознаваемые регулярным выражением &amp;lt;tex&amp;gt;0(0|1)^*&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;\forall x \in [[0]]: C_L(x) = \{\langle u, v \rangle \mid u \in L, v \in \Sigma^* \}&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;[[1]] \ &amp;lt;/tex&amp;gt; содержит все строки, принадлежащие языку, то есть, распознаваемые регулярным выражением &amp;lt;tex&amp;gt;1(0|1)^*&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;\forall x \in [[1]]: C_L(x) = C_L(\varepsilon) \cup \{\langle \varepsilon, v \rangle \mid v \in \Sigma^* \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Заметим, что &amp;lt;tex&amp;gt;[[0]] \ &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;[[1]] \ &amp;lt;/tex&amp;gt; не имеют обратных элементов в данном моноиде, так как нейтральный элемент содержит только пустую строку, а её невозможно получить из непустой с помощью конкатенации. Следовательно &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; не является групповым языком.&lt;br /&gt;
&lt;br /&gt;
====Язык из последовательных N нулей и N единиц====&lt;br /&gt;
Язык &amp;lt;tex&amp;gt;L = 0^n1^n&amp;lt;/tex&amp;gt; задан над алфавитом &amp;lt;tex&amp;gt;\Sigma = \{0,1\}&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Балансом слова &amp;lt;tex&amp;gt;|\omega|_b&amp;lt;/tex&amp;gt; назовём число, равное разности между количеством нулей и единиц, встречающихся в данном слове. Если слово &amp;lt;tex&amp;gt;\omega = uxv&amp;lt;/tex&amp;gt; принадлежит языку &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;|x|_b = -(|u|_b + |v|_b)&amp;lt;/tex&amp;gt;. Но &amp;lt;tex&amp;gt;|x|_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;M(L)&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;
* ''Howard Straubing'' Finite automata, formal logic, and circuit complexity, 1994. ISBN 3-7643-3719-2. {{---}} C. 53.&lt;br /&gt;
* ''James A. Anderson'' Automata theory with modern applications, 2006. ISBN 0-521-61324-8. {{---}} С. 72.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Syntactic_monoid Wikipedia {{---}} Syntactic monoid]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Автоматы и регулярные языки]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D0%9C%D0%BE%D0%BD%D1%82%D0%B3%D0%BE%D0%BC%D0%B5%D1%80%D0%B8&amp;diff=83409</id>
		<title>Умножение по Монтгомери</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D0%9C%D0%BE%D0%BD%D1%82%D0%B3%D0%BE%D0%BC%D0%B5%D1%80%D0%B8&amp;diff=83409"/>
				<updated>2022-09-01T04:53:12Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
Был предложен в 1985 году Питером Монтгомери.&lt;br /&gt;
&lt;br /&gt;
По данным целым числам ''a, b &amp;lt; n'', ''r'', [[Наибольший общий делитель|НОД]]&amp;lt;tex&amp;gt;(r,n)=1&amp;lt;/tex&amp;gt; алгоритм Монтгомери вычисляет&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;MonPro(a,b) = a \cdot b \cdot r^{-1} \mod{n}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Умножение Монтгомери ==&lt;br /&gt;
Положим &amp;lt;tex&amp;gt;r=2^k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Определим ''n''{{---}}остаток числа &amp;lt;tex&amp;gt;a &amp;lt; n&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;\bar{a} = a \cdot r \mod{n}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Алгоритм Монтгомери использует свойство, что множество &amp;lt;tex&amp;gt;\{ a \cdot r \mod{n} \mid 0 \leqslant a \leqslant n-1 \}&amp;lt;/tex&amp;gt; является [[Сравнения, система вычетов, решение линейных систем по модулю|полной системой вычетов]], то есть содержит все числа от ''0'' до ''n-1''.&lt;br /&gt;
&lt;br /&gt;
MonPro вычисляет &amp;lt;tex&amp;gt;\bar{c} = \bar{a} \cdot \bar{b} \cdot r^{-1} \mod{n}&amp;lt;/tex&amp;gt;. Результат является n{{---}}остатком от &amp;lt;tex&amp;gt;c = a \cdot b \mod{n}&amp;lt;/tex&amp;gt;, так как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\bar{c} = \bar{a} \cdot \bar{b} \cdot r^{-1} \mod{n} = a \cdot r \cdot b \cdot r \cdot r^{-1} \mod{n} = c \cdot r \mod{n}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определим n' так, что &amp;lt;tex&amp;gt;r \cdot r^{-1} - n \cdot n' = 1&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;r^{-1}&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;MonPro(\bar{a},\bar{b})&amp;lt;/tex&amp;gt;&lt;br /&gt;
 1. &amp;lt;tex&amp;gt;t = \bar{a} \cdot \bar{b}&amp;lt;/tex&amp;gt;&lt;br /&gt;
 2. &amp;lt;tex&amp;gt;u = (t + (t \cdot n' \mod{r} ) \cdot n ) / r&amp;lt;/tex&amp;gt;&lt;br /&gt;
 3. '''if''' &amp;lt;tex&amp;gt;u &amp;gt; n&amp;lt;/tex&amp;gt; '''then return''' &amp;lt;tex&amp;gt;u-n&amp;lt;/tex&amp;gt; '''else return''' &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Операции умножения и деления на r выполняются очень быстро, так как при &amp;lt;tex&amp;gt;r=2^{k}&amp;lt;/tex&amp;gt; представляют собой просто сдвиги бит. Таким образом алгоритм Монтгомери быстрее обычного вычисления &amp;lt;tex&amp;gt;a \cdot b \mod{n}&amp;lt;/tex&amp;gt;, которое содержит деление на n. Однако вычисление n' и перевод чисел в n{{---}}остатки и обратно — трудоёмкие операции, вследствие чего применять алгоритм Монтгомери при вычислении произведения двух чисел представляется неразумным.&lt;br /&gt;
&lt;br /&gt;
== Возведение в степень Монтгомери ==&lt;br /&gt;
Использование алгоритма Монтгомери оправдывает себя при возведении числа в степень по модулю &amp;lt;tex&amp;gt;a^{e} \mod{n}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Функция &amp;lt;tex&amp;gt;ModExp(a,e,n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
 1. &amp;lt;tex&amp;gt;\bar{a} = a \cdot r \mod{n}&amp;lt;/tex&amp;gt;&lt;br /&gt;
 2. &amp;lt;tex&amp;gt;\bar{x} = 1 \cdot r \mod{n}&amp;lt;/tex&amp;gt;&lt;br /&gt;
 3. for i=j-1 downto 0&lt;br /&gt;
      &amp;lt;tex&amp;gt;\bar{x} = MonPro(\bar{x},\bar{x})&amp;lt;/tex&amp;gt;&lt;br /&gt;
      if &amp;lt;tex&amp;gt;e_{i}=1&amp;lt;/tex&amp;gt; then &amp;lt;tex&amp;gt;\bar{x}=MonPro(\bar{x},\bar{a})&amp;lt;/tex&amp;gt;&lt;br /&gt;
 4. return &amp;lt;tex&amp;gt;x = MonPro(\bar{x},1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возведение числа в степень битовой длины k [[Быстрое возведение в степень|алгоритмом быстрого возведения в степень]] включает в себя от k до 2k умножений, где k имеет порядок сотен или тысяч бит.&lt;br /&gt;
При использовании алгоритма возведения в степень Монтгомери объём дополнительных вычислений фиксирован (вычисления &amp;lt;tex&amp;gt;n'&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\bar{a}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\bar{x}&amp;lt;/tex&amp;gt; в начале и &amp;lt;tex&amp;gt;MonPro(\bar{x},1)&amp;lt;/tex&amp;gt; в конце), а&lt;br /&gt;
операция MonPro выполняется быстрее обычного умножения по модулю,&lt;br /&gt;
поэтому алгоритм возведения в степень Монтгомери даст выигрыш в производительности по сравнению с [[Быстрое возведение в степень|алгоритмом быстрого возведения в степень]].&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
[http://guan.cse.nsysu.edu.tw/note/montg.pdf Montgomery multiplication]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D1%8F%D1%89%D0%B5%D0%B9_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9_%D0%B2_%D0%B2%D0%B8%D0%B4%D0%B5_%D0%BD%D0%B5%D0%BF%D1%80%D0%B5%D1%80%D1%8B%D0%B2%D0%BD%D1%8B%D1%85_%D0%B4%D1%80%D0%BE%D0%B1%D0%B5%D0%B9&amp;diff=83408</id>
		<title>Представление производящей функций в виде непрерывных дробей</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D1%8F%D1%89%D0%B5%D0%B9_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9_%D0%B2_%D0%B2%D0%B8%D0%B4%D0%B5_%D0%BD%D0%B5%D0%BF%D1%80%D0%B5%D1%80%D1%8B%D0%B2%D0%BD%D1%8B%D1%85_%D0%B4%D1%80%D0%BE%D0%B1%D0%B5%D0%B9&amp;diff=83408"/>
				<updated>2022-09-01T04:53:04Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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='''Непрерывная дробь''' (англ. ''continued fraction'') — это конечное или бесконечное математическое выражение вида&lt;br /&gt;
&amp;lt;tex&amp;gt;a_0+\cfrac{b_1}{a_1+\cfrac{b_2}{a_2+\cfrac{b_3}{a_3+\ldots}}} = \biggl[ a_0;\cfrac{b_1}{a_1},\cfrac{b_2}{a_2},\cfrac{b_3}{a_3}, \cdots \biggr]\;&amp;lt;/tex&amp;gt;&lt;br /&gt;
где &amp;lt;tex&amp;gt;a_{0}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b_n&amp;lt;/tex&amp;gt; есть целые числа, а &amp;lt;tex&amp;gt;a_n&amp;lt;/tex&amp;gt; — натуральные числа (положительные целые).}}&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;b_i = 1&amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, выражение называется [[Цепная_дробь | простой непрерывной дробью]] (англ. ''regular continued fraction'').&lt;br /&gt;
&lt;br /&gt;
В некоторой литературе вместо термина «непрерывная дробь» используют термин '''«цепная дробь»'''. &lt;br /&gt;
&lt;br /&gt;
{{Определение &lt;br /&gt;
|definition='''Конечная непрерывная дробь''' (англ. ''finite continued fraction'')  — это непрерывная дробь, которая состоит из конечных наборов &amp;lt;tex&amp;gt;\langle a_0, a_1, a_2, a_3,\ldots, a_n \rangle&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\langle b_1, b_2, b_3,\ldots, b_n \rangle.&amp;lt;/tex&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Определение &lt;br /&gt;
|definition='''K-подходящей дробью''' (англ. ''k-suitable fraction'')  непрерывной дроби &amp;lt;tex&amp;gt; \biggl[ a_0;\cfrac{b_k}{a_k} \biggr]^{n}_{1} &amp;lt;/tex&amp;gt; называют обыкновенную дробь &amp;lt;tex&amp;gt;\cfrac{P_k}{Q_k} \equiv \biggl[ a_0;\cfrac{b_1}{a_1},\cdots,\cfrac{b_k}{a_k} \biggr] (k = 1,2\cdots)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;k \leqslant n&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;P_i, Q_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;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
[[Теорема_о_связи_между_рациональностью_производящей_функции_и_линейной_рекуррентностью_задаваемой_ей_последовательности| Дробно-рациональная производящая функция]] всегда раскладывается в конечную непрерывную дробь.&lt;br /&gt;
|proof = Если у нас есть дробно-рациональная производящая функция&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\; f(x) = \cfrac{c_{1,0}+c_{1,1}x+c_{1,2}x^2+\cdots}{c_{0,0}+c_{0,1}x+c_{0,2}x^2+\cdots},&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
то в общем случае:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\; f(x) = \cfrac{1}{\cfrac{c_{0,0}}{c_{1,0}}+\cfrac{c_{0,0}+c_{0,1}x+c_{0,2}x^2+\cdots}{c_{1,0}+c_{1,1}x+c_{1,2}x^2+\cdots}-\cfrac{c_{0,0}}{c_{1,0}}} = \cfrac{c_{1,0}}{c_{0,0}+xf_1(x)},&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\; f_1(x) = \cfrac{c_{2,0}+c_{2,1}x+c_{2,2}x^2+\cdots}{c_{1,0}+c_{1,1}x+c_{1,2}x^2+\cdots}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\; c_{2,k} = c_{1,0} \cdot c_{0,k+1} - c_{0,0} \cdot c_{1,k+1} \; (k=0,1, \cdots).&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Аналогично&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\; f_1(x) = \cfrac{c_{2,0}}{c_{1,0}+xf_2(x)},&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\; f_1(x) = \cfrac{c_{3,0}+c_{3,1}x+c_{3,2}x^2+\cdots}{c_{2,0}+c_{2,1}x+c_{2,2}x^2+\cdots}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\; c_{3,k} = c_{2,0} \cdot c_{1,k+1} - c_{1,0} \cdot c_{2,k+1} \; (k=0,1, \cdots)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и так далее. Таким Образом&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\; f(x) = \cfrac{c_{1,0}}{c_{0,0}+\cfrac{c_{2,0}x}{c_{1,0}+\cfrac{c_{3,0}}{c_{2,0}+\ldots}}} = \biggl[ 0;\cfrac{c_{1,0}}{c_{0,0}},\cfrac{c_{2,0}x}{c_{1,0}},\cfrac{c_{3,0}x}{c_{2,0}}, \cdots , \cfrac{c_{n,0}x}{c_{n-1,0}} \biggr], &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;Cat(s) = c_0 + c_1s + c_2s^2 + \cdots = 1 + s + 2s^2 + 5s^3 + \cdots&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;sCat^2(s) = c^2_0s + (c_0c_1 + c_1c_0)s^2 + (c_0c_2 + c_1c_1 + c_2c_0)s^3 + \cdots = s + 2s^2 + 5s^3 + 14s^4 + \cdots = Cat(s) − 1,&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
что дает нам квадратное уравнение на производящую функцию&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;sCat^{2}(s) − Cat(s) + 1 = 0.&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Перепишем это уравнение в виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;Cat(s) - sCat^{2}(s)= 1,&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
или&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;Cat(s) = \cfrac{1}{1 - sCat(s)}.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подставив выражение для &amp;lt;tex&amp;gt;Cat(s)&amp;lt;/tex&amp;gt; из левой части равенства в&lt;br /&gt;
правую часть того же равенства, получим&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;Cat(s) = \cfrac{1}{1 - \cfrac{s}{1 - sCat(s)}}.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подставляя вновь выражение для &amp;lt;tex&amp;gt;Cat(s)&amp;lt;/tex&amp;gt; в получившееся равенство и продолжая этот процесс, мы получаем представление для&lt;br /&gt;
функции Каталана в виде непрерывной дроби:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;Cat(s) = \cfrac{1}{1 - \cfrac{s}{1 - \cfrac{s}{1 - \cdots}}}.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Полученное разложение нужно понимать следующим образом. Если мы оборвем непрерывную дробь на &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;-м шаге (оставив вместо нее конечную непрерывную дробь, которая представляет собой рациональную функцию), то коэффициенты разложения полученной функции по степеням &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; будут совпадать с коэффициентами разложения функции &amp;lt;tex&amp;gt;Cat(s)&amp;lt;/tex&amp;gt; вплоть до члена &amp;lt;tex&amp;gt;s^{n}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Заметим, что из-за наличия множителя &amp;lt;tex&amp;gt;s&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;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\cfrac{1}{1 - s} = \boldsymbol{1 + s} + s^2 + s^3 + s^4 + \cdots,&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\cfrac{1}{1 - \cfrac{s}{1 - s}} = \boldsymbol{1 + s + 2s^2} + 4s^3 + 8s^4 + \cdots,&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\cfrac{1}{1 - \cfrac{s}{1 - \cfrac{s}{1 - s}}} = \boldsymbol{1 + s + 2s^2 + 5s^3} + 13s^4 + \cdots&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;(1, 1)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;(1, −1)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:R3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Изменим несколько треугольник Дика, поставив на стрелках числа. А именно, поставим на каждой стрелке номер того ряда, в котором она находится. Номер на стрелке&lt;br /&gt;
мы будем интерпретировать как ее кратность, то есть как число различных стрелок, проходящих в данном направлении. В результате одному пути в треугольнике Дика отвечает несколько «различных» путей в треугольнике с кратностями. Их число равно произведению кратностей всех ребер, входящих в данный путь. То есть значение элемента треугольника, которому раньше соответствовал путь в точку плоскости &amp;lt;tex&amp;gt;(m;n)&amp;lt;/tex&amp;gt;, теперь равно следующему: &amp;lt;tex&amp;gt;c_{m,n} = (n+1)c_{m-1,n+1}+nc_{m-1,n-1}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:R6.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=Производящая функция &amp;lt;tex&amp;gt;F_{0}(s) = 1 + s^2 + 5s^4 + 61s^6 + 1385s^8 + \cdots&amp;lt;/tex&amp;gt; для нижней стороны треугольника Дика представляется в&lt;br /&gt;
виде непрерывной дроби&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;F_{0}(s) = \cfrac{1}{1 - \cfrac{1^2s^{2}}{1 - \cfrac{2^2s^2}{1 - \cfrac{3^2s^2}{1 - \cdots}}}}.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=Производящая функция &amp;lt;tex&amp;gt;F_0(s)&amp;lt;/tex&amp;gt; перечисляет различные пути с началом и концом на высоте &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;. Обозначим через &amp;lt;tex&amp;gt;F_i(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;, по их длине.&lt;br /&gt;
Тогда&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;F_0(s) = \cfrac{1}{1 - s^2F_1(s)}.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Действительно, каждый путь с началом и концом на высоте &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; единственным образом разбивается на такие участки, что&lt;br /&gt;
#Концы пути на каждом участке лежат на высоте &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;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;
&amp;lt;tex&amp;gt;F_1(s) = \cfrac{1}{1 - 4s^2F_2(s)}.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Появление четверки в коэффициенте при &amp;lt;tex&amp;gt;s^2&amp;lt;/tex&amp;gt; объясняется тем, что к данному пути, начало и конец которого лежат на высоте &amp;lt;tex&amp;gt;2&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;F_k(s) = \cfrac{1}{1 - (k+1)^2s^2F_{k+1}(s)},&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и непрерывная дробь теперь выписывается очевидным образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;F_0(s) = \cfrac{1}{1 - s^2F_1(s)} = \cfrac{1}{1 - \cfrac{s^2}{1 - 4s^2F_2(s)}} =  \cfrac{1}{1 - \cfrac{1s^{2}}{1 - \cfrac{4s^2}{1 - \cfrac{9s^2}{1 - \cdots}}}}.&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;
* [https://www.mccme.ru/free-books/lando/lando-genfunc.pdf Лекции о производящих функциях]&lt;br /&gt;
* [https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%BF%D1%80%D0%B5%D1%80%D1%8B%D0%B2%D0%BD%D0%B0%D1%8F_%D0%B4%D1%80%D0%BE%D0%B1%D1%8C Непрерывная дробь]&lt;br /&gt;
* Демидович Б. П., Марон И. А. Основы вычислительной математики. — Изд. 2-е. — М.: Физматлит, 1963. — С. 53—73. — 660 с.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Производящая функция]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D0%BE%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=83407</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%B8_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D0%BE%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=83407"/>
				<updated>2022-09-01T04:52:56Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;amp;mdash; набор из чисел &amp;lt;tex&amp;gt;x_0 &amp;lt; x_1 &amp;lt; x_2 &amp;lt; \ldots &amp;lt; x_n&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;y_0, y_1, y_2, \ldots ,y_n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Дана система узлов. Требуется найти полином &amp;lt;tex&amp;gt;P_n&amp;lt;/tex&amp;gt; степени не выше &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; такой, что &amp;lt;tex&amp;gt;P_n(x_k) = y_k, k=\overline{0,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;\tilde P_n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Рассмотрим полином &amp;lt;tex&amp;gt;M_n = P_n - \tilde P_n&amp;lt;/tex&amp;gt;. Тогда&amp;amp;nbsp;&amp;lt;tex&amp;gt;M_n(x_k) = y_k - y_k = 0, k = \overline{0,n}&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;\deg M_n \le 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;
|definition=&lt;br /&gt;
Фундаментальные полиномы &amp;lt;tex&amp;gt;\Phi_j(x)&amp;lt;/tex&amp;gt; степени не выше &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; &amp;amp;mdash; полиномы, отвечающие заданной &lt;br /&gt;
системе узлов &amp;lt;tex&amp;gt;x_0 &amp;lt; x_1 &amp;lt; x_2 &amp;lt;\ldots &amp;lt; x_n&amp;lt;/tex&amp;gt; такие, что&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\Phi_j(x_k) = \left\{&lt;br /&gt;
	\begin{aligned}&lt;br /&gt;
		1 &amp;amp; ,\quad k = j\\&lt;br /&gt;
		0 &amp;amp; ,\quad k \ne j\\&lt;br /&gt;
	\end{aligned}\right.&lt;br /&gt;
&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Для его построения обозначим за &amp;lt;tex&amp;gt;\omega_n(x) = \prod\limits_{j = 0}^n (x - x_j)&amp;lt;/tex&amp;gt;. Это полином степени &amp;lt;tex&amp;gt;n + 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Составим выражение &amp;lt;tex dpi = &amp;quot;150&amp;quot;&amp;gt;\frac{\omega_n(x)}{(x - x_j) \cdot \omega_n'(x_j)}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;x \ne x_j&amp;lt;/tex&amp;gt;. В этом случае дробь корректно определена.&lt;br /&gt;
При &amp;lt;tex&amp;gt;x \to x_j&amp;lt;/tex&amp;gt; получаем неопределённость &amp;lt;tex dpi = &amp;quot;150&amp;quot;&amp;gt;\frac00&amp;lt;/tex&amp;gt;. Раскроем её по правилу Лопиталя: &amp;lt;tex dpi = &amp;quot;150&amp;quot;&amp;gt;\frac{\omega'_n(x)}{\omega_n'(x_j)} = 1&amp;lt;/tex&amp;gt; при &amp;lt;tex&amp;gt;x \to x_j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда доопределим по непрерывности дробь единицей. Но при &amp;lt;tex&amp;gt;x \ne x_j&amp;lt;/tex&amp;gt; &amp;amp;mdash; это полином &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;-й степени. Значит, &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;150&amp;quot;&amp;gt;\Phi_j(x) = \frac{\omega_n(x)}{(x-x_j) \cdot \omega_n'(x_j)}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда &lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\Phi_j(x_k) = \left\{&lt;br /&gt;
	\begin{aligned}&lt;br /&gt;
		1 &amp;amp; ,\quad k = j\\&lt;br /&gt;
		0 &amp;amp; ,\quad k \ne j\\&lt;br /&gt;
	\end{aligned}\right.&lt;br /&gt;
&amp;lt;/tex&amp;gt;, что и требовалось.&lt;br /&gt;
&lt;br /&gt;
Обозначим &amp;lt;tex&amp;gt;L_n(x) = \sum\limits_{j = 0}^n y_j \Phi_j(x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_n(x_k) = \sum\limits_{j = 0}^n y_j \Phi_j(x_k) = y_k \Phi_k(x_k) = y_k&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Требуемый полином &amp;lt;tex&amp;gt;L_n(x)&amp;lt;/tex&amp;gt; найден.&lt;br /&gt;
&lt;br /&gt;
Замечание: из формулы для фундаментальных полиномов &amp;lt;tex&amp;gt;\Phi_j(x)&amp;lt;/tex&amp;gt; легко записать в развёрнутом виде:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
\Phi_j(x) = \frac&lt;br /&gt;
{(x-x_0)(x - x_1)\cdots(x - x_{j- 1})(x - x_{j + 1})\cdots(x - x_n)}&lt;br /&gt;
{(x_j - x_0)(x_j - x_0)\cdots(x_j - x_{j-1})(x_j - x_{j + 1})\cdots(x_j - x_n)}&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;f(x)&amp;lt;/tex&amp;gt;. Найти полином &amp;lt;tex&amp;gt;T_n&amp;lt;/tex&amp;gt; степени не выше &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; такой, что &amp;lt;tex&amp;gt;f^{(k)}(x_0) = T_n^{(k)}(x_0), k = \overline{0, n}&amp;lt;/tex&amp;gt;».&lt;br /&gt;
&lt;br /&gt;
Ранее мы обнаружили, что это &lt;br /&gt;
&amp;lt;tex&amp;gt;T_n(x) = \sum\limits_{k = 0}^n \frac&lt;br /&gt;
{f^{(k)}(x_0)}&lt;br /&gt;
{k!}&lt;br /&gt;
\cdot (x - x_0)^k&lt;br /&gt;
&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;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;\forall x_j: j = \overline{0..n}\quad L_n(x_j) = f(x_j)&amp;lt;/tex&amp;gt;&lt;br /&gt;
»&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;tex&amp;gt;L_n(x) = \sum\limits_{j = 0}^n \Phi_j(x_j) \cdot f(x_j)&amp;lt;/tex&amp;gt;. По пункту 1 этот полином решает поставленную задачу.&lt;br /&gt;
Для полинома Тейлора &amp;lt;tex&amp;gt;f(x) = T_n(x) + \frac&lt;br /&gt;
{f^{(n + 1)}(c_x)}&lt;br /&gt;
{(n + 1)!} \cdot (x - x_0)^{n + 1}&lt;br /&gt;
&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сейчас будет доказана теорема, аналогичная теореме об интерполяционном полиноме Лагранжа, после чего станет ясно, что это задачи одного класса.&lt;br /&gt;
Во втором случае это изложено на языке производных, а в первом &amp;amp;mdash; через значения функции в точках.&lt;br /&gt;
&lt;br /&gt;
Эти два метода метода можно комбинировать, лишь бы информативных значений было &amp;lt;tex&amp;gt;n + 1&amp;lt;/tex&amp;gt;. Такие промежуточные задачи называют &lt;br /&gt;
''интерполированием по Эрмиту''. &amp;lt;s&amp;gt;Но они никому не нужны.&amp;lt;/s&amp;gt;&lt;br /&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;n + 1&amp;lt;/tex&amp;gt; раз дифференцируема на &amp;lt;tex&amp;gt;\langle a; b\rangle&amp;lt;/tex&amp;gt;. На этом промежутке задана система узлов.&lt;br /&gt;
Тогда для соответственного интерполяционного полинома Лагранжа выполняется равенство&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x) = L_n(x) + \frac{f^{(n + 1)}(c_x)}{(n+1)!} \cdot \omega_n(x)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;c_x&amp;lt;/tex&amp;gt; &amp;amp;mdash; некоторая точка из &amp;lt;tex&amp;gt;\langle a; b \rangle&amp;lt;/tex&amp;gt;, зависящая от &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;. &lt;br /&gt;
|proof=&lt;br /&gt;
Случай &amp;lt;tex&amp;gt;x = x_k&amp;lt;/tex&amp;gt; тривиален.&lt;br /&gt;
Пусть тогда &amp;lt;tex&amp;gt;x \ne x_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для доказательства применим теорему Ролля. Определим вспомогательную функцию &amp;lt;tex&amp;gt;g(t) = f(t) - L_n(t)- k \omega_n(t)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; &amp;amp;mdash; коэффициент, &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;\forall j = \overline{0, n}:\quad g(x_j) = f(x_j) - L_n(x_j) - k \omega_n(x_j) = 0&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;g(x)&amp;lt;/tex&amp;gt; было равно &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;g(x) = f(x) - L_n(x) - k \omega_n(x) = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\omega_n(x) \ne 0&amp;lt;/tex&amp;gt;, так как &amp;lt;tex&amp;gt;x \ne x_j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;k = \frac{f(x) - L_n(x)}{\omega_n(x)}\quad (1)\, .&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;g(x_j) = 0&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;g(x) = 0&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; принимает нулевые значения в &amp;lt;tex&amp;gt;n + 2&amp;lt;/tex&amp;gt; точках. Очевидно, &lt;br /&gt;
из узлов и точки &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; можно сделать &amp;lt;tex&amp;gt;n + 1&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;.&lt;br /&gt;
Значит, по теореме Ролля на каждом из них найдётся по корню [[Дифференциал и производная|производной]]. Из полученных корней можно сделать &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; отрезков, &lt;br /&gt;
на каждом из них по теореме Ролля найдётся по корню второй производной… В конце концов останется один отрезок, границами которого&lt;br /&gt;
будут корни &amp;lt;tex&amp;gt;g^{(n)}&amp;lt;/tex&amp;gt;. Тогда по теореме Ролля на этом отрезке найдётся корень &amp;lt;tex&amp;gt;g^{(n + 1)}&amp;lt;/tex&amp;gt;. Его и обозначим за &amp;lt;tex&amp;gt;c_x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Подведём промежуточный итог: найдено &amp;lt;tex&amp;gt;c_x&amp;lt;/tex&amp;gt; такое, что &amp;lt;tex&amp;gt;g^{(n + 1)}(c_x) = 0&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;g(t) = f(t) - L_n(t) - k \omega_n(t)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Продифференцируем &amp;lt;tex&amp;gt;n + 1&amp;lt;/tex&amp;gt; раз. &amp;lt;tex&amp;gt;\deg L_n(x) \leq n \Rightarrow L_n^{(n + 1)} = 0&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;\omega_n(t) = t^{n + 1} + \ldots \Rightarrow \omega^{(n + 1)}_n = (n + 1)!&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, &amp;lt;tex&amp;gt;g^{(n + 1)}(t) = f^{(n + 1)}(t) - k\cdot (n + 1)!&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Подставим &amp;lt;tex&amp;gt;t = c_x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;0 = g^{(n + 1)}(c_x) = f^{(n + 1)}(c_x) - k\cdot (n + 1)!&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;k = \frac{f^{(n + 1)}(c_x)}{(n + 1)!}\quad (2)\, .&amp;lt;/tex&amp;gt;&lt;br /&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; .&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Следствие ===&lt;br /&gt;
&lt;br /&gt;
В условиях теоремы выполняется неравенство &amp;lt;tex&amp;gt;|f(x) - L_n(x)| \leq \frac{M_{n + 1}}{(n + 1)!} (b - a)^{n + 1}&amp;lt;/tex&amp;gt;, где &lt;br /&gt;
&amp;lt;tex&amp;gt;M_{n + 1} = \sup\limits_{\langle a; b \rangle} |f^{(n + 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;\langle a; b \rangle\,|x - x_j| \le b - a.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замечание ===&lt;br /&gt;
&lt;br /&gt;
Следует понимать, что на самом деле какую бы систему узлов мы не взяли на &amp;lt;tex&amp;gt;\langle a; b \rangle&amp;lt;/tex&amp;gt; как по числу&lt;br /&gt;
точек в ней, так и по характеру распределения значений, для этого промежутка всегда можно построить непрерывную функцию, для которой ее интерполяционный многочлен будет отличаться от неё сколь угодно много.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Математический анализ 1 курс]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</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%91%D0%B0%D0%BD%D0%B0%D1%85%D0%B0_%D0%BE%D0%B1_%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%BC_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B5&amp;diff=83406</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%91%D0%B0%D0%BD%D0%B0%D1%85%D0%B0_%D0%BE%D0%B1_%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%BC_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B5&amp;diff=83406"/>
				<updated>2022-09-01T04:52:48Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
__TOC__&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^{-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;
|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 {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;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt; {L}(X) &amp;lt;/tex&amp;gt; {{---}} B-пространство.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующие суммы: &amp;lt;tex&amp;gt; S_n = \sum\limits_{k=0}^n C^k &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; (I - C)S_n = \sum\limits_{k=0}^n (C^k - C^{k + 1}) = I - C^{n + 1} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \sum\limits_{k=0}^{\infty} C^k &amp;lt;/tex&amp;gt; — ряд в B-пространстве &amp;lt;tex&amp;gt; {L}(X) &amp;lt;/tex&amp;gt; сходится, если сходится ряд из соответствующих норм. Покажем это: пусть есть операторный ряд &amp;lt;tex&amp;gt;\sum\limits_{i=1}^\infty A_i&amp;lt;/tex&amp;gt;. Рассмотрим последовательность частичных сумм &amp;lt;tex&amp;gt;S_n = \sum\limits_{i=1}^n A_i&amp;lt;/tex&amp;gt;, она будет сходиться если сходится в себе (по Банаховости пространства). Тогда &amp;lt;tex&amp;gt;S_n - S_m = \sum\limits_{i=m}^{n} A_i&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;\|S_n - S_m\| = \| \sum\limits_{i=m}^n A_i \| \le \sum\limits_{i=m}^n \|A_i\|&amp;lt;/tex&amp;gt; (так как для конечного числа членов норма суммы меньше суммы норм), но так как последовательность норм сходится, она также сходится в себе и &amp;lt;tex&amp;gt;\sum\limits_{i=m}^n \|A_i\| \xrightarrow[n, m \to \infty]{} 0&amp;lt;/tex&amp;gt;, то есть частичные суммы сходятся в себе, а, значит, и сходятся.&lt;br /&gt;
&lt;br /&gt;
Из того, что &amp;lt;tex&amp;gt; \| C^k \| \le \| C \|^k &amp;lt;/tex&amp;gt;, получаем &amp;lt;tex&amp;gt; \left\| \sum\limits_{k=0}^{\infty} C^k \right\| \le &lt;br /&gt;
\sum\limits_{k=0}^{\infty} \| C \|^k = \frac 1{1 - \| C \|} &amp;lt; \infty &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt; \| C \| &amp;lt; 1 &amp;lt;/tex&amp;gt;, то существует такой &amp;lt;tex&amp;gt; S \in {L}(X) &amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt; S = \sum\limits_{k=0}^{\infty} C^k &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; S_n \xrightarrow[n \to \infty]{} S &amp;lt;/tex&amp;gt;. Поскольку &amp;lt;tex&amp;gt; \| C \| &amp;lt; 1 &amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt; \| C^k \| \to 0 &amp;lt;/tex&amp;gt;, а значит, и &amp;lt;tex&amp;gt; C^k \to \mathbb{O} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; (I - C)S_n = I - C^{n + 1} &amp;lt;/tex&amp;gt;. Устремляя &amp;lt;tex&amp;gt; n &amp;lt;/tex&amp;gt; к бесконечности, получаем &amp;lt;tex&amp;gt; (I - C)S = I &amp;lt;/tex&amp;gt;, а значит &amp;lt;tex&amp;gt; S = \sum\limits_{k=0}^{\infty} C^k = (I - C)^{-1} &amp;lt;/tex&amp;gt; — ограниченный оператор.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Трактовка этой теоремы: &amp;lt;tex&amp;gt; Ix = x &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; I &amp;lt;/tex&amp;gt; {{---}} непрерывно обратимый оператор. При каких условиях на оператор &amp;lt;tex&amp;gt; C &amp;lt;/tex&amp;gt; оператор &amp;lt;tex&amp;gt; I - C &amp;lt;/tex&amp;gt; сохраняет ннепрерывную обратимость? Из теоремы выше известен ответ на этот вопрос: когда &amp;lt;tex&amp;gt; \| C \| &amp;lt; 1 &amp;lt;/tex&amp;gt;, то есть &amp;quot;при малых возмущениях &amp;lt;tex&amp;gt; I &amp;lt;/tex&amp;gt; сохраняется его непрерывная обратимость&amp;quot;. &lt;br /&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; {{---}} всегда банаховы.'''&lt;br /&gt;
&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;
&amp;lt;tex&amp;gt; R(A) = \{ Ax \mid x \in X \} &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; 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;
|proof=&lt;br /&gt;
Возьмем сходящуюся последовательсть &amp;lt;tex&amp;gt; y_n \in R(A), y_n \to y &amp;lt;/tex&amp;gt;. Нужно проверить, правда ли &amp;lt;tex&amp;gt; y \in R(A) &amp;lt;/tex&amp;gt;, или, что то же самое, что уравнение &amp;lt;tex&amp;gt; Ax = 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_n \to y \implies \| y_n - y_m \| \to 0 &amp;lt;/tex&amp;gt;. Можно выбрать такую подпоследовательность &amp;lt;tex&amp;gt; y_n &amp;lt;/tex&amp;gt;, что для этой подпоследовательности после перенумерации будет выполняться &amp;lt;tex&amp;gt; \| y_n - y_{n+1} \| &amp;lt; \frac 1{2^n} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
По линейности &amp;lt;tex&amp;gt; R(A) &amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt; y_{n+1} - y_n \in R(A) &amp;lt;/tex&amp;gt; и для любого &amp;lt;tex&amp;gt; n &amp;lt;/tex&amp;gt; существует &amp;lt;tex&amp;gt; x_n: A x_n = y_{n+1} - y_n &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Поскольку уравнение &amp;lt;tex&amp;gt; Ax = y &amp;lt;/tex&amp;gt; допускает априорную оценку решений, имеем &amp;lt;tex&amp;gt; \| x_n \| \le \alpha \| y_{n+1} - y_n \| &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующий ряд: &amp;lt;tex&amp;gt; \sum\limits_{n=1}^{\infty} x_n &amp;lt;/tex&amp;gt;. Сумма ряда из норм: &amp;lt;tex&amp;gt; \sum\limits_{n=1}^{\infty} \| x_n \| \le \alpha \sum\limits_{n=1}^{\infty} \| y_{n+1} - y_n \| \le \alpha \sum\limits_{n=1}^{\infty} \frac 1{2^n} = \alpha &amp;lt;/tex&amp;gt;. По банаховости &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; получаем, что &amp;lt;tex&amp;gt; \sum\limits_{n=1}^{\infty} x_n &amp;lt;/tex&amp;gt; сходится, и &amp;lt;tex&amp;gt; \sum\limits_{n=1}^{\infty} x_n = x &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; Ax = A \sum\limits_{n=1}^{\infty} x_n = \sum\limits_{n=1}^{\infty} A x_n = \sum\limits_{n=1}^{\infty} y_{n+1} - y_n = y - y_1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; Ax = y - y_1, y = Ax + y_1 = Ax + A x_0 = A(x + x_0) &amp;lt;/tex&amp;gt;, поэтому &amp;lt;tex&amp;gt; y \in R(A) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|id=&lt;br /&gt;
invlb&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;
|proof=&lt;br /&gt;
Заметим, что в ядре только нулевой элемент, в противном случае: пусть &amp;lt;tex&amp;gt;x \ne 0&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;0 &amp;lt; m \|x\| \le \|A x\| = 0&amp;lt;/tex&amp;gt;. Из этого следует, что оператор инъективен: пусть &amp;lt;tex&amp;gt;A x_1 = y, A x_2 = y&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;A (x_1 - x_2) = 0&amp;lt;/tex&amp;gt;, что возможно только когда &amp;lt;tex&amp;gt;x_1 = x_2&amp;lt;/tex&amp;gt;. Так как строим обратный оператор на &amp;lt;tex&amp;gt;R(A)&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\forall y \in R(A) \exists x: A x = y&amp;lt;/tex&amp;gt;, то есть оператор  биективен на области значений, определим &amp;lt;tex&amp;gt;A^{-1}&amp;lt;/tex&amp;gt; на всем &amp;lt;tex&amp;gt;R(A)&amp;lt;/tex&amp;gt; и для любого &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; рассмотрим &amp;lt;tex&amp;gt;x = A^{-1} y&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt; m \|x\| = m \|A^{-1} y \| \le \|A A^{-1} y\| \implies \|A^{-1} y\| \le \frac{1}{m} \|y\|&amp;lt;/tex&amp;gt;, то есть оператор ограничен константой &amp;lt;tex&amp;gt;\frac{1}{m}&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;
|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;
|proof=&lt;br /&gt;
Очевидно, что &amp;lt;tex&amp;gt; X = \bigcup\limits_{n=1}^{\infty} X_n &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; {{---}} B-пространство (а значит, и полное метрическое), значит, по [[Метрические пространства#thbaire|теореме Бэра о категориях]], &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; {{---}} 2 категории, то есть какое-то множество &amp;lt;tex&amp;gt;X_{n_0}&amp;lt;/tex&amp;gt; не является ''[[Метрические пространства#defdense|нигде не плотным]]''.&lt;br /&gt;
&lt;br /&gt;
Вспомним определение нигде не плотности: &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; нигде не плотно, если &amp;lt;tex&amp;gt;\forall V \exists U \subset V: A \cap U = \emptyset&amp;lt;/tex&amp;gt;. Раз &amp;lt;tex&amp;gt;X_{n_0}&amp;lt;/tex&amp;gt; '''не''' является нигде не плотным, то &amp;lt;tex&amp;gt;\exists V \forall U \subset V: X_{n_0} \cap U \ne \emptyset&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;X_{n_0}&amp;lt;/tex&amp;gt; всюду плотно  в каком-то открытом шаре. Теперь возьмем замкнутый шар &amp;lt;tex&amp;gt;\overline V_r(a)&amp;lt;/tex&amp;gt;, лежащий в этом открытом шаре, причем такой, что &amp;lt;tex&amp;gt;a \in X_{n_0}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Заметим, что множество &amp;lt;tex&amp;gt;X_{n_0}&amp;lt;/tex&amp;gt; также всюду плотно в кольце &amp;lt;tex&amp;gt;R = \{z \mid \frac r2 \le \| z - a \| \le r \}&amp;lt;/tex&amp;gt;. Сдвинем и множество &amp;lt;tex&amp;gt;X_{n_0}&amp;lt;/tex&amp;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;X_{n_0}&amp;lt;/tex&amp;gt; будет также всюду плотно в сдвинутом кольце. Теперь покажем, что найдется такое множество &amp;lt;tex&amp;gt;X_m&amp;lt;/tex&amp;gt;, что пересечение сдвинутого &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; и сдвинутого &amp;lt;tex&amp;gt;X_{n_0}&amp;lt;/tex&amp;gt; лежит в &amp;lt;tex&amp;gt;X_m&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;X_m&amp;lt;/tex&amp;gt; будет всюду плотно в сдвинутом кольце.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим кольцо: &amp;lt;tex&amp;gt; \{z \mid \frac r2 \le \| z - a \| \le r \} &amp;lt;/tex&amp;gt;. Обозначим &amp;lt;tex&amp;gt; y = z - a &amp;lt;/tex&amp;gt;, тогда кольцо имеет следующий вид: &amp;lt;tex&amp;gt; \{\frac r2 \le \| y \| \le r \} &amp;lt;/tex&amp;gt; {{---}} кольцо с центром в &amp;lt;tex&amp;gt; 0 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Будем рассматривать &amp;lt;tex&amp;gt; z \in X_{n_0} \cap  \{\frac r2 \le \| z - a \| \le r \}, y = z - a&amp;lt;/tex&amp;gt;. Проверим, что &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; войдет в какое-нибудь &amp;lt;tex&amp;gt;X_m&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \| Ay \| = \frac {\| A(z - a) \|}{\| y \|} \| y \| \le \frac 2r (\| Az \| + \| Aa \|) \| y \| &amp;lt;/tex&amp;gt;, так как &amp;lt;tex&amp;gt; \| y \| \ge \frac r2 &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Поскольку &amp;lt;tex&amp;gt; z \in X_{n_0} &amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt; \| Az \| \le n_0 \| z \| &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;tex&amp;gt; \| z \| \le \| a \| + \| z - a \| \le r + \| a \| &amp;lt;/tex&amp;gt;, так как &amp;lt;tex&amp;gt; z &amp;lt;/tex&amp;gt; принадлежит кольцу.&lt;br /&gt;
&lt;br /&gt;
Подставляем и продолжаем неравенство выше: &amp;lt;tex&amp;gt; \| Ay \| \le \frac2r (n_0 (r + \| a \|) + \| Aa \|) \| y \| &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Обозначим &amp;lt;tex&amp;gt; m = \lceil (n_0 (r + \| a \|) + \| Aa \|) \rceil &amp;lt;/tex&amp;gt; (это выражение не зависит от &amp;lt;tex&amp;gt; y &amp;lt;/tex&amp;gt;), получаем, что &amp;lt;tex&amp;gt; \| Ay \| \le m \| y \| \implies y \in X_m &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Итак, получили, что &amp;lt;tex&amp;gt; X_m &amp;lt;/tex&amp;gt; всюду плотно в кольце с центром в &amp;lt;tex&amp;gt; 0 &amp;lt;/tex&amp;gt;. Возьмем теперь любой &amp;lt;tex&amp;gt; x \in X &amp;lt;/tex&amp;gt;, его можно представить как &amp;lt;tex&amp;gt; x = tz, z \in \{\frac r2 \le \| z \| \le r \} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
По всюду плотности в кольце, найдется последовательность &amp;lt;tex&amp;gt;y_p&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;X_m \cap \{\frac r2 \le \| z \| \le r \}&amp;lt;/tex&amp;gt; такая, что &amp;lt;tex&amp;gt;y_p \to z &amp;lt;/tex&amp;gt;. Но &amp;lt;tex&amp;gt; ty_p \to tz = x &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;tex&amp;gt; \| A(ty_p) \| \le m \| t y_p \| \implies ty_p \in X_m &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; t y_p \in X_m &amp;lt;/tex&amp;gt;, а значит, &amp;lt;tex&amp;gt;\mathrm{Cl} \ X_m = X &amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;X_m&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;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|id=banachhom&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;
|proof=&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt; {{---}} биекция, то &amp;lt;tex&amp;gt; A^{-1} &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;\bigcup\limits_{n=1}^{\infty} Y_n&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; Y_n = \{ y \in Y \mid \| A^{-1}(y) \| \le n \| y \| \}&amp;lt;/tex&amp;gt; (заметим, что для леммы не требуется ограниченность оператора).&lt;br /&gt;
&lt;br /&gt;
По только что доказанной лемме, существет такое число &amp;lt;tex&amp;gt; n_0 &amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;\mathrm{Cl} Y_{n_0} = Y &amp;lt;/tex&amp;gt;, обозначим этот &amp;lt;tex&amp;gt;Y_{n_0}&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 \in Y &amp;lt;/tex&amp;gt;. Покажем, что существует такое разложение &amp;lt;tex&amp;gt; y = \sum\limits_{n=1}^{\infty} y_n &amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt; y_n \in Y^*, \| y_n \| \le \frac 3{2^n} \| y \| &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; y_1 \in Y^* : \| y - y_1 \| &amp;lt; \varepsilon \| y \| &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Дальше можно подобрать &amp;lt;tex&amp;gt; y_2 \in Y^* : \| (y - y_1) - y_2 \| &amp;lt; \frac {\varepsilon}2 \| y \| &amp;lt;/tex&amp;gt;, и так далее, получаем, что &amp;lt;tex&amp;gt; \| y - \sum\limits_{k = 1}^n y_k \| &amp;lt; \frac {\varepsilon}{2^{n-1}} \| y \| &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Проверим, что для всех &amp;lt;tex&amp;gt;y_n&amp;lt;/tex&amp;gt; их норма удовлетворяет условию разложения: &amp;lt;tex&amp;gt; \| y_n \| \le \| \sum\limits_{k = 1}^n y_k - y + y - \sum\limits_{k = 1}^{n-1} y_k \|&amp;lt;/tex&amp;gt;&amp;lt;tex&amp;gt; \le \| y - \sum\limits_{k = 1}^n y_k \| + \| y - \sum\limits_{k = 1}^{n - 1} y_k \| \le \frac {\varepsilon}{2^{n-1}} \| y \| + \frac {\varepsilon}{2^{n-2}} \| y \| = \frac {3\varepsilon}{2^{n-2}} \| y \| &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; \frac 14 &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 = \sum\limits_1^{\infty} y_n, y_n \in Y^*, \| y_n \| \le \frac 3{2^n} \| y \| &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Обозначим &amp;lt;tex&amp;gt; x_n = A^{-1}y_n &amp;lt;/tex&amp;gt;. Рассмотрим ряд из &amp;lt;tex&amp;gt; x_n &amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt; \sum\limits_{n=1}^{\infty} x_n &amp;lt;/tex&amp;gt;, проверим сходимость ряда из норм: &amp;lt;tex&amp;gt; \sum\limits_{n=1}^{\infty} \| x_n \| &amp;lt; \infty &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Вспомним, что &amp;lt;tex&amp;gt; y_n \in Y^* = Y_{n_0} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \| x_n \| = \| A^{-1} y_n \| \le n_0 \| y_n \| \le n_0 \frac 3{2^n} \| y \| &amp;lt;/tex&amp;gt;: ряд из &amp;lt;tex&amp;gt; \| x_n \| &amp;lt;/tex&amp;gt; мажорируется убывающей геометрической прогрессией, а значит, сходится. Получили, что существует &amp;lt;tex&amp;gt; x = \sum\limits_{n=1}^{\infty} x_n &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; Ax = \sum\limits_{n=1}^{\infty} Ax_n = \sum\limits_{n=1}^{\infty} y_n = y &amp;lt;/tex&amp;gt;, получили, что &amp;lt;tex&amp;gt; Ax = y, A^{-1}y = x &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим норму &amp;lt;tex&amp;gt; A^{-1}y &amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt; \| A^{-1} y \| = \| x \| = \| \sum\limits_{n=1}^{\infty} x_n \| \le \sum\limits_{n=1}^{\infty} 3n_0 \| y \| \frac 1{2^n} = 3n_0 \| 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; A^{-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;
|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;
&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;
|proof=&lt;br /&gt;
Докажем в прямую сторону: пусть есть последовательность пар &amp;lt;tex&amp;gt; (x_n, y_n) \to (x, y) &amp;lt;/tex&amp;gt;. Принадлежит ли &amp;lt;tex&amp;gt; (x, y)\, G(A) &amp;lt;/tex&amp;gt; ?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; y_n = Ax_n, x_n \to x \implies Ax_n \to Ax, y_n \to y \implies Ax=y &amp;lt;/tex&amp;gt; (по единственности предела). &lt;br /&gt;
Так как &amp;lt;tex&amp;gt; Ax = y &amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt; (x, Ax) = (x, y) \in G(A) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Обратное следствие интереснее.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; G(A) = \{ (x, Ax) \mid x \in X \} &amp;lt;/tex&amp;gt; замкнут. &lt;br /&gt;
&lt;br /&gt;
Можно показать, что &amp;lt;tex&amp;gt; X \times Y &amp;lt;/tex&amp;gt; банахово с нормой &amp;lt;tex&amp;gt; \| (x, y) \| = \| x \| + \| y \| &amp;lt;/tex&amp;gt;:&lt;br /&gt;
* То, что &amp;lt;tex&amp;gt;\| (x, y) \| = \|x\| + \|y\|&amp;lt;/tex&amp;gt; — норма, показывается очевидно&lt;br /&gt;
* Покажем, что если &amp;lt;tex&amp;gt;(x_n, y_n)&amp;lt;/tex&amp;gt; сходится в себе, то она сходится к элементу &amp;lt;tex&amp;gt;X \times Y&amp;lt;/tex&amp;gt;. Рассмотрим последовательность &amp;lt;tex&amp;gt;\|(x_n, y_n) - (x_m, y_m) \| \xrightarrow[n, m \to \infty]{} 0&amp;lt;/tex&amp;gt;, значит, &amp;lt;tex&amp;gt;\|(x_n - x_m, y_n - y_m)\| = \|x_n - x_m\| + \|y_n - y_m\| \to 0&amp;lt;/tex&amp;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&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;, существует &amp;lt;tex&amp;gt;x \in X = \lim x_n, y \in Y = \lim y_n&amp;lt;/tex&amp;gt;. Значит, &amp;lt;tex&amp;gt;(x, y) \in X \times Y&amp;lt;/tex&amp;gt;. Далее очевидно показывая, что &amp;lt;tex&amp;gt;\|(x_n, y_n) - (x, y)\| \xrightarrow[n \to \infty]{} 0&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; T : G(A) \to X, T(x, Ax) = x &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;tex&amp;gt; T &amp;lt;/tex&amp;gt; биективно отображает &amp;lt;tex&amp;gt; G(A) &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; \|\| T(x, Ax) \| = \| x \| \le \| (x, Ax) \| \implies 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^{-1} &amp;lt;/tex&amp;gt;, который также ограничен. Рассмотрим его.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; T^{-1}(x) = (x, Ax), \| T^{-1}(x) \| = \| x \| + \| Ax \| \le M \| x \| &amp;lt;/tex&amp;gt; (по ограниченности). Получаем, что &amp;lt;tex&amp;gt; \| Ax \| \le (M - 1) \| x \| &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;
== Теорема об открытом отображении ==&lt;br /&gt;
&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;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt; Z = \mathrm{Ker} A &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/_Z &amp;lt;/tex&amp;gt; {{---}} фактор-подпространство. &amp;lt;tex&amp;gt; i : X \to X/_Z, i(x) = [x]&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;i&amp;lt;/tex&amp;gt; называется '''каноническим вложением''' &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; в фактор-пространство. Оператор &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; {{---}} линейный и ограниченный, переводит открытое множество в &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; в открытое множество в &amp;lt;tex&amp;gt; X/_Z &amp;lt;/tex&amp;gt; {{TODO|t=почему это он так делает?}}, то есть открытый.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;i(x + y) = [x + y] = [x] + [y] = i(x) + i(y)&amp;lt;/tex&amp;gt; - по свойствам фактор-множества&lt;br /&gt;
* &amp;lt;tex&amp;gt;i(\alpha x) = [\alpha x] = \alpha [x] = \alpha i &amp;lt;/tex&amp;gt; - по свойствам фактор-множства показали линейность.&lt;br /&gt;
* &amp;lt;tex&amp;gt;\|i\| = \sup \limits_{\|x\| = 1} \|ix\| = \sup \limits_{\|x\| = 1} \|[x]\| = \sup \limits_{\|x\| = 1} \inf \limits_{z \in Z} \| x- z \|_{X}&amp;lt;/tex&amp;gt;&amp;lt;tex&amp;gt; \le \sup \limits_{\|x\| = 1} \inf \limits_{z \in Z} (\| x \|_{X} + \| z \|_{X}) \le 1 +  \inf \limits_{z \in Z} \| z \|_{X} = 1 &amp;lt; + \infty &amp;lt;/tex&amp;gt; - показали ограниченность&lt;br /&gt;
&lt;br /&gt;
Введем норму как &amp;lt;tex&amp;gt;\|[x]\|_{X /_Z} = \inf\limits_{z \in Z} \| x - z \|_X&amp;lt;/tex&amp;gt; (заметим, что ее значение не зависит от того, какой &amp;lt;tex&amp;gt;x \in [x]&amp;lt;/tex&amp;gt; выбрать. Покажем, что это действительно норма:&lt;br /&gt;
&lt;br /&gt;
* положительная определенность очевидна, покажем равенство нулю только в нулевом классе эквивалентности: пусть &amp;lt;tex&amp;gt;x \ne 0, \|[x]\| = 0, x \notin [0]&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;f(x)\ne 0&amp;lt;/tex&amp;gt; и по определению инфимума, существует последовательность &amp;lt;tex&amp;gt;z_n \in Z: \|z_n - x\| \to 0&amp;lt;/tex&amp;gt;, но тогда &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; — предел последовательности &amp;lt;tex&amp;gt;z_n&amp;lt;/tex&amp;gt; и по замкнутости ядра также лежит в ядре, получили противоречие.&lt;br /&gt;
* вторая аксиома очевидна&lt;br /&gt;
* третья аксиома: &amp;lt;tex&amp;gt;\|[x] + [y]\| = \inf\limits_{z \in Z} \|x + y - z\|_X = \inf\limits_{z \in Z} \|x - \frac{z}{2} + y - \frac{z}{2}\| \le \inf\limits_{z \in Z}\|x - \frac{z}{2}\| + \inf\limits_{z \in Z} \|y - \frac{z}{2}\|&amp;lt;/tex&amp;gt;. Заметим что так как &amp;lt;tex&amp;gt;Z&amp;lt;/tex&amp;gt; — линейное подпространство, &amp;lt;tex&amp;gt;\frac{z}{2}&amp;lt;/tex&amp;gt; пробегает те же элементы, что и &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\inf\limits_{z \in Z}\|x - \frac{z}{2}\| + \inf\limits_{z \in Z} \|y - \frac{z}{2}\| = \inf\limits_{z \in Z}\|x - z\| + \inf\limits_{z \in Z} \|y - z\| = \|[x]\| + \|[y]\|&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt; U_A : X/_Z \to Y&amp;lt;/tex&amp;gt;{{---}} оператор, ассоциированный с &amp;lt;tex&amp;gt; A &amp;lt;/tex&amp;gt;. То, что &amp;lt;tex&amp;gt;U_A([x]) = y&amp;lt;/tex&amp;gt;, означает, что для некоторого &amp;lt;tex&amp;gt;x \in [x], k \in \mathrm{Ker} A: A(x + k) = y&amp;lt;/tex&amp;gt;, заметим, что при этом &amp;lt;tex&amp;gt; A = U_A \cdot i &amp;lt;/tex&amp;gt;. Покажем ограниченность &amp;lt;tex&amp;gt;U_A&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;\|U_A\| = \sup\limits_{\|[x]\| = 1} \|U_a([x])\| = \sup\limits_{\|[x]\| = 1} \|A (x \in [x])\|&amp;lt;/tex&amp;gt;. Покажем, что если &amp;lt;tex&amp;gt;\|[x]\| = 1&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\exists x \in [x]: \|x\| \le 1&amp;lt;/tex&amp;gt;, а, значит, &amp;lt;tex&amp;gt;\|A x\| \le \|A\|&amp;lt;/tex&amp;gt;. {{TODO|t=неясно, как показать}} Таким образом, получим &amp;lt;tex&amp;gt;\|x\| \le \|[x]\| = 1&amp;lt;/tex&amp;gt;, и получили ограниченность.&lt;br /&gt;
&lt;br /&gt;
Покажем, что &amp;lt;tex&amp;gt;U_A&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;U_A([x]_1) = y&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;U_A([x]_2) = y&amp;lt;/tex&amp;gt;, это значит, что &amp;lt;tex&amp;gt;A(x_1 + k_1) = y, A(x_2 + k_2) = y \implies A(x_1 + k_1) - A(x_2 + k_2) = 0&amp;lt;/tex&amp;gt;, по линейности &amp;lt;tex&amp;gt;A(x_1 - x_2) + A(k_1 - k_2) = 0 \implies A(x_1 - x_2) = 0&amp;lt;/tex&amp;gt;, так как &amp;lt;tex&amp;gt;k_1 - k_2&amp;lt;/tex&amp;gt; в ядре. Но тогда получили, что &amp;lt;tex&amp;gt;x_1 - x_2&amp;lt;/tex&amp;gt; также в ядре, то есть &amp;lt;tex&amp;gt;x_1&amp;lt;/tex&amp;gt; отличается от &amp;lt;tex&amp;gt;x_2&amp;lt;/tex&amp;gt; на элемент ядра, и находятся в одном классе эквивалентности, получили противоречие.&lt;br /&gt;
&lt;br /&gt;
Таким образом, оператор &amp;lt;tex&amp;gt; U_A : X/_Z \to R(A)&amp;lt;/tex&amp;gt; биективен, следовательно, &amp;lt;tex&amp;gt;U_A^{-1} &amp;lt;/tex&amp;gt; {{---}} непрерывен (по теореме Банаха), , так как &amp;lt;tex&amp;gt;U_A&amp;lt;/tex&amp;gt; тоже непрерывен, то прообразы (по оператору &amp;lt;tex&amp;gt;U_A&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;U_A^{-1}&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; U_A &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;br /&gt;
== Ссылки ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Open_mapping_theorem_(functional_analysis) Open mapping theorem]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Функциональный анализ 3 курс]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D1%81%D1%82_%D0%9C%D0%B8%D0%BB%D0%BB%D0%B5%D1%80%D0%B0-%D0%A0%D0%B0%D0%B1%D0%B8%D0%BD%D0%B0&amp;diff=83405</id>
		<title>Тест Миллера-Рабина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D1%81%D1%82_%D0%9C%D0%B8%D0%BB%D0%BB%D0%B5%D1%80%D0%B0-%D0%A0%D0%B0%D0%B1%D0%B8%D0%BD%D0%B0&amp;diff=83405"/>
				<updated>2022-09-01T04:52:40Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;n&amp;lt;/tex&amp;gt; {{---}} простое нечетное, то для &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; есть только два квадратных корня по модулю &amp;lt;tex&amp;gt;n:\ 1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;-1&amp;lt;/tex&amp;gt;. Таким образом, квадратный корень из &amp;lt;tex&amp;gt;a^{n-1},a^\frac{n-1}{2}&amp;lt;/tex&amp;gt; равен &amp;lt;tex&amp;gt;\pm 1&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;\frac{n-1}{2}&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;n&amp;lt;/tex&amp;gt; не выполняется условие &amp;lt;tex&amp;gt;a^\frac{n-1}{2}=\pm 1\pmod n&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;50 \%&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;n-1&amp;lt;/tex&amp;gt; в виде &amp;lt;tex&amp;gt;2^sd&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; нечетно, а &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; неотрицательно: &amp;lt;tex&amp;gt;n&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;a^d=1\pmod n&amp;lt;/tex&amp;gt;&lt;br /&gt;
#&amp;lt;tex&amp;gt;(a^d)^{2^r}=-1\pmod n&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; {{---}} нечетное число, большее &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;. Число &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; однозначно представляется в виде &amp;lt;tex&amp;gt;n-1=2^sd&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;a&amp;lt;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;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;a^d\equiv 1\pmod n&amp;lt;/tex&amp;gt; или существует целое &amp;lt;tex&amp;gt;r&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;(a^d)^{2^r}=-1\pmod n&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория чисел]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</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%BE%D0%B4%D0%BD%D1%8B%D0%B5_%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85_%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%BD%D1%8B%D1%85_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9&amp;diff=83404</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%BE%D0%B4%D0%BD%D1%8B%D0%B5_%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85_%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%BD%D1%8B%D1%85_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9&amp;diff=83404"/>
				<updated>2022-09-01T04:52:31Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
=== Первый замечательный предел ===&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;\lim\limits_{x \to 0} \frac{\sin x}{x} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
[[file:Sin1.png|thumb|300px]]&lt;br /&gt;
В теории степенных рядов синус определён как сумма ряда. Сейчас для доказательства, однако, &lt;br /&gt;
воспользуемся геометрическим смыслом синуса.&lt;br /&gt;
Рассмотрим радианную меру угла &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, равную отношению длины дуги к радиусу окружности.&lt;br /&gt;
В частности, при &amp;lt;tex&amp;gt;r = 1&amp;lt;/tex&amp;gt;, длина дуги совпадает с величиной угла.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;0 \leq x \le \frac\pi2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сектор &amp;lt;tex&amp;gt;AOB \subset \triangle AOD&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\sin x = |BC| \leq AB &amp;lt; \buildrel \smile \over{AB} = x&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\sin x &amp;lt; x \Rightarrow \frac{\sin x}x &amp;lt; 1&amp;lt;/tex&amp;gt;. Запомним этот факт.&lt;br /&gt;
&lt;br /&gt;
Площадь сектора &amp;lt;tex&amp;gt;{AOB}&amp;lt;/tex&amp;gt; равна &amp;lt;tex&amp;gt;\frac{x}2&amp;lt;/tex&amp;gt;,&lt;br /&gt;
а &amp;lt;tex&amp;gt;S_{\triangle AOD}= \frac12 \operatorname{tg} x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{x}{2} \leq S_{\triangle AOD} = &lt;br /&gt;
\frac12 \operatorname{tg} x &lt;br /&gt;
= \frac12 \frac{\sin x}{\cos x} &lt;br /&gt;
\Rightarrow \cos x \leq \frac{\sin x}{x}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Но тогда, &amp;lt;tex&amp;gt;\cos x \leq \frac{\sin x}{x} \leq 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Но так как &amp;lt;tex&amp;gt;\lim\limits_{x \to 0} \cos x = \cos 0 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;\lim\limits_{x \to 0} \frac{\sin x}{x} = 1&amp;lt;/tex&amp;gt;.&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 dpi=150&amp;gt;e = \lim\limits_{n \to \infty} \left(1 + \frac1n \right) ^ n&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Из этого, подставив &amp;lt;tex&amp;gt;x = \frac1n&amp;lt;/tex&amp;gt;, получим&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex dpi= &amp;quot;150&amp;quot;&amp;gt;\lim\limits_{x \to 0} (1 + x)^{\frac{1}{x}} = e&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее, прологарифмировав последнее равенство, получим:&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\ln(1 + x)}x&amp;lt;/tex&amp;gt; при &amp;lt;tex&amp;gt;x \to 0&amp;lt;/tex&amp;gt; стремится к &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== (e^x - 1)/x ===&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex dpi= &amp;quot;150&amp;quot;&amp;gt;\frac{e^x - 1}x \to 1&amp;lt;/tex&amp;gt; при &amp;lt;tex&amp;gt;x \to 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex dpi= &amp;quot;150&amp;quot;&amp;gt;\frac{e^x - 1}{x}&amp;lt;/tex&amp;gt;(подставив &amp;lt;tex&amp;gt;t = e^x - 1&amp;lt;/tex&amp;gt;) &lt;br /&gt;
&amp;lt;tex&amp;gt; = \frac{t}{\ln (1 + t)}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда &lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\ln (1 + x)}{x} \xrightarrow[x \to 0]{} 1 \Rightarrow \frac{t}{\ln (1 + t)} \xrightarrow[t \to 0]{} 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Рассмотрим выражение &amp;lt;tex dpi= &amp;quot;150&amp;quot;&amp;gt; \frac{(1+x)^m - 1}{mx}, \ x \to 0 &amp;lt;/tex&amp;gt;. Оно (?)создаёт неопределённость &amp;lt;tex&amp;gt;\frac00&amp;lt;/tex&amp;gt;. При этом, предел нельзя&lt;br /&gt;
вычислить переходом к нему в числителе и знаменателе по отдельности. Этот предел подстановкой сводится к предыдущим.&lt;br /&gt;
&lt;br /&gt;
== Вычисление производных некоторых функций ==&lt;br /&gt;
&lt;br /&gt;
=== y = x^n ===&lt;br /&gt;
&lt;br /&gt;
==== n {{---}} целое ====&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;(x^n)' = nx^{n - 1}, \ n \in \mathbb{N}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Докажем по индукции.&lt;br /&gt;
* База: &amp;lt;tex&amp;gt;n = 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;\Delta y = \Delta x \Rightarrow \frac{\Delta y}{\Delta x} = 1, \Delta x \to 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;x' = 1 = 1 \cdot x^{1 - 1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Шаг: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left(x ^ n\right)' = (x \cdot x^{n - 1})' = x'x^{n-1} + (x^{n - 1})'x = x^{n - 1} + (n - 1)x^{n - 1} = n x^{n - 1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Заметим, что если &amp;lt;tex&amp;gt;y = f(x)&amp;lt;/tex&amp;gt; непрерывна и монотонна в окрестности &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;, а также, &amp;lt;tex&amp;gt;f'(x_0) \ne 0&amp;lt;/tex&amp;gt;, то&lt;br /&gt;
обратная функция дифференцируема в &amp;lt;tex&amp;gt;y_0 = f(x_0)&amp;lt;/tex&amp;gt;, и её производная равна &amp;lt;tex&amp;gt;\frac1{f'(x_0)}&amp;lt;/tex&amp;gt;. Это следует &lt;br /&gt;
из того факта, что &amp;lt;tex&amp;gt;\frac{\Delta y}{\Delta x} = \frac1{\frac{\Delta x}{\Delta y}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 1/n; n {{---}} целое ====&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
Посчитаем &amp;lt;tex dpi= &amp;quot;150&amp;quot;&amp;gt;y' = (x^{\frac1n})' = \frac1n x^{\frac1n - 1}, \ n \in \mathbb{N}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Согласно формуле дифференцирования обратной функции, &amp;lt;tex&amp;gt;x' = (y^n)' = n y^{n - 1}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex dpi= &amp;quot;150&amp;quot;&amp;gt;y' = \frac{1}{x'} = \frac1{ny^{n - 1}} = \frac1n y^{1 - n} = \frac1n \left(x^{\frac1n}\right)^{1 - n} = \frac1n x^{\frac1n - 1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Подведём промежуточный итог. Мы научились считать &amp;lt;tex&amp;gt;(x^{\alpha})', \ \alpha = n, \frac1n, \ n \in \mathbb{N}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== n {{---}} рациональное ====&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;(x ^ {\alpha})', \ \alpha \in \mathbb{Q}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex dpi= &amp;quot;150&amp;quot;&amp;gt;(x^{\frac{n}{m}})'&amp;lt;/tex&amp;gt;(подставив &amp;lt;tex&amp;gt;t = x^{\frac 1m}&amp;lt;/tex&amp;gt;) &amp;lt;tex&amp;gt; = n t^{n - 1} \frac 1m x ^ {\frac1m - 1} = \frac{n}{m} x ^ {\frac{n}{m} - 1}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Важное Замечание:&lt;br /&gt;
&amp;lt;tex&amp;gt;x^{\sqrt2}&amp;lt;/tex&amp;gt; {{---}} не степенная функция. Все реальные пацаны считают это по определению равным &amp;lt;tex&amp;gt;e^{\sqrt2 \cdot \ln x}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== e^x ===&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;(e^x)' = e^x&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt;y = e^x&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Delta y = e^{x + \Delta x} - e^x = e^x(e^{\Delta x} - 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex dpi= &amp;quot;150&amp;quot;&amp;gt;\frac{\Delta y}{\Delta x} = e^x \cdot \frac{e^{\Delta x} - 1}{\Delta x}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ранее мы доказали, что &amp;lt;tex&amp;gt;\frac{e^x - 1}{x} \xrightarrow[x\to 0]{} 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;y' = \frac{\Delta y}{\Delta x} = e^x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Это единственная функция, которая обладает таким свойством(это просто забавный факт, его не надо доказывать). Именно поэтому &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; занимает такое важное место в &lt;br /&gt;
математике.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ln(x) ===&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;\ln'(x) = \frac1x&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt;x = e^y&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;x' = e^y&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex dpi= &amp;quot;150&amp;quot;&amp;gt;y' = \frac{1}{x'} = \frac{1}{e^y} = \frac{1}{e^{\ln x}} = \frac1x&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sin(x) === &lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt;\sin'(x) = \cos(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \sin x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Delta y = \sin(x + \Delta x) - \sin(x) = 2 \sin\left(\frac{\Delta x}{2}\right) \cos\left(x + \frac{\Delta x}{2}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex dpi= &amp;quot;150&amp;quot;&amp;gt;\frac{\Delta y}{\Delta x} = \frac{\sin\left(\frac{\Delta x}{2}\right)}{\frac{\Delta x}{2}} \cdot \cos\left(x + \frac{\Delta x}{2} \right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первый множитель, равный вычисленному ранее пределу, равен &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;, а второй при &amp;lt;tex&amp;gt;\Delta x \to 0&amp;lt;/tex&amp;gt; стремится к &amp;lt;tex&amp;gt;\cos x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;\sin'(x) = \frac{\Delta y}{\Delta x} = \cos x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== arcsin(x) ===&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex dpi= &amp;quot;150&amp;quot;&amp;gt;\arcsin' x = \frac{1}{\sqrt{1 - x^2}}, \ y \in \left[-\frac{\pi}{2}; \frac{\pi}{2} \right]&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt;y = \arcsin x \Rightarrow x = \sin y&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;x' = \cos x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;\cos(\arcsin(x)) \geq 0&amp;lt;/tex&amp;gt;, то &lt;br /&gt;
&amp;lt;tex dpi= &amp;quot;150&amp;quot;&amp;gt;y' = \frac{1}{\cos y} = \frac{1}{\cos \arcsin x} = \frac{1}{\sqrt{1 - \sin^2 (\arcsin x)}} = \frac{1}{\sqrt{1 - x^2}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получаем &amp;lt;tex dpi= &amp;quot;150&amp;quot;&amp;gt;\arcsin' x = \frac{1}{\sqrt{1 - x^2}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Математический анализ 1 курс]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1_%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D0%BB%D0%B5_%D0%A4%D1%83%D1%80%D1%8C%D0%B5&amp;diff=83403</id>
		<title>Об интеграле Фурье</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1_%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D0%BB%D0%B5_%D0%A4%D1%83%D1%80%D1%8C%D0%B5&amp;diff=83403"/>
				<updated>2022-09-01T04:52:23Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
{{В разработке}}&lt;br /&gt;
&lt;br /&gt;
Голова человеческая устроена линейно, поэтому, если оператор {{---}} нелинейный, то это {{---}} мрак полный. Живите линейно!&lt;br /&gt;
&lt;br /&gt;
Ряд Фурье имеет дело  с &amp;lt;tex&amp;gt;2\pi&amp;lt;/tex&amp;gt;-периодической суммируемой на &amp;lt;tex&amp;gt;Q&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;\mathbb{R}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\int\limits_{\mathbb{R}} |f| &amp;lt; +\infty&amp;lt;/tex&amp;gt;. Можно ли писать аналог ряда Фурье?&lt;br /&gt;
&lt;br /&gt;
С формальной точки зрения, аналог выписывается просто.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;a_n(f) = \frac1\pi \int\limits_{-\pi}^\pi f(x) \cos nx dx&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=&lt;br /&gt;
&amp;lt;tex&amp;gt;a(f, z) = \frac1\pi \int\limits_{\mathbb{R}} f(t) \cos zt dt&amp;lt;/tex&amp;gt; {{---}} косинусное преобразование &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;b(f, z) = \frac1\pi \int\limits_{\mathbb{R}} f(t) \sin zt dt&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;
Выпишем ряд &amp;lt;tex&amp;gt;\sum\limits_{n=0}^\infty A_n(f, z)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;A_n (f, x) = a_n \cos nx + b_n \sin nx&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;\int\limits_0^{+\infty} (a(f, z) \cos zx + b(f, z) \sin zx) dz&amp;lt;/tex&amp;gt;. Интеграл понимают не в смысле Лебега, а в смысле Римана {{---}} как предел частичных интегралов. Получившийся интеграл называют интегралом Фурье.&lt;br /&gt;
&lt;br /&gt;
Ему можно придать более удобную форму: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;a(f, z) \cos zx + b(f, z) \sin zx = \frac1\pi \int\limits_{\mathbb{R}} f(t) [\cos zt \cdot \cos zx + \sin zt \cdot \sin zx] dt = \frac1\pi \int\limits_{\mathbb{R}} f(t) \cos z(x - t) dt&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac1\pi \int\limits_0^{+\infty} \left(\int\limits_{\mathbb{R}} f(t) \cos z(x - t) dt \right) dz&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;\frac1\pi \int\limits_0^{+\infty} \left(\int\limits_{\mathbb{R}} f(t) \cos z(x - t) dt \right) dz = \frac{f(x+0)+f(x-0)}2&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac1\pi \int\limits_0^{+\infty} \left(\int\limits_{\mathbb{R}} f(t)\cos z(x-t) dt \right) dz&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;= \lim\limits_{A\to\infty} \frac1\pi \int\limits_0^A \left(\int\limits_{\mathbb{R}} f(t) \cos z(x-t)dt \right) dz = I&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Применим [[Теорема Фубини | теорему Фубини]]: &amp;lt;tex&amp;gt;I(A) = \int\limits_0^A \left(\int\limits_{\mathbb{R}} f(t) \cos z(x-t)dt \right) dz&amp;lt;/tex&amp;gt; {{---}} частный случай интеграла Фурье. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;I = \lim\limits_{A\to\infty} \frac1\pi \int\limits_{\mathbb{R}} \left(\int\limits_0^A f(t) \cos z(x-t) dz \right) dt&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;= \lim\limits_{A\to\infty} \frac1\pi \int\limits_{\mathbb{R}} f(t) \left( \int\limits_0^A \cos z(x-t) dz\right) dt&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Заменим: &amp;lt;tex&amp;gt;\int\limits_0^A \cos z(x-t) dz = \left. \frac{\sin z(x-t)}{x-t} \right|_0^A = \frac{\sin A(x-t)}{x-t}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;I = \lim\limits_{A\to\infty} \frac1\pi \int\limits_{\mathbb{R}} f(t) \frac{\sin A(x-t)}{x-t} = I&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделаем замену переменной: &amp;lt;tex&amp;gt;u=x-t&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;I(A) = \frac1\pi \int\limits_{\mathbb{R}} f(x+u) \frac{\sin Au}u du&amp;lt;/tex&amp;gt; {{---}} аналог интеграла Дирихле для рядов Фурье. &lt;br /&gt;
&lt;br /&gt;
Проделаем то же самое, что и с рядами Фурье: сведём к полуоси:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;I(A) = \frac1\pi \left(\int\limits_{-\infty}^0 + \int\limits_0^{+\infty}\right)&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;=\frac1\pi \int\limits_{\mathbb{R}_+} (f(x+t) + f(x-t))\frac{\sin At}t dt&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\int\limits_{\mathbb{R}_+} \frac{\sin t}t dt = \frac\pi2&amp;lt;/tex&amp;gt; {{---}} интеграл Дирихле.&lt;br /&gt;
&amp;lt;tex&amp;gt;\int\limits_{\mathbb{R}_+} \frac{\sin At}t dt = \int\limits_{\mathbb{R}_+} \frac{\sin At}{At} d(At) = \frac\pi2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac1\pi \int\limits_{\mathbb{R}_+} 2s \frac{\sin t}t dt = s&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;I(A)  - s = \frac1\pi\int\limits_{\mathbb{R}_+} [f(x+t)+f(x-t)-2s]\frac{\sin At}t dt&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 \in L_1, s \in \mathbb{R}&amp;lt;/tex&amp;gt;. Если существует &amp;lt;tex&amp;gt;\Delta &amp;gt; 0: \int\limits_0^{\Delta} \frac{|\varphi_x(t)|}{t} dt &amp;lt; + \infty&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt; s = \lim\limits_{A \to \infty} I(A)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Предположим, что для некоторого &amp;lt;tex&amp;gt;\Delta&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;\int\limits_0^\Delta \frac{|f(x+t)+f(x-t)-2s|}t dt = \int\limits_0^\Delta \frac{|\varphi_x(t)|}t dt &amp;lt; +\infty&amp;lt;/tex&amp;gt;. Возьмём &amp;lt;tex&amp;gt;\delta \in (0; \Delta)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt;|I(A)-s|=\frac1\pi \left|\int\limits_0^\delta + \int\limits_\delta^{+\infty}\right|&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;\le \frac1\pi\left(\int\limits_0^\delta\frac{|\varphi_x(t)|}{t}dt+ \left|\int\limits_\delta^{+\infty} \varphi_x(t) \frac{\sin At}{t} dt\right| \right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Рассмотрим первое слагаемое: так как, по условию, &amp;lt;tex&amp;gt;\int\limits_0^\Delta \frac{|\varphi_x(t)|}t dt &amp;lt; +\infty&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\forall\varepsilon&amp;gt;0 \exists\delta\in(0;\Delta) : \int\limits_0^\delta \frac{|\varphi_x(t)|}t dt &amp;lt; \varepsilon&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее считаем, что &amp;lt;tex&amp;gt;\delta&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;|I(A)-s| \le \frac1\pi\left( \varepsilon + \left| \int\limits_\delta^{+\infty}\varphi_x(t)\frac{\sin At}t dt \right| \right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Рассмотрим второе слагаемое: &amp;lt;tex&amp;gt;\int\limits_\delta^{+\infty} \varphi_x(t) \frac{\sin At}{t} dt = \int\limits_\delta^{+\infty} \frac{f(x+t) +f(x-t)}{t} \sin At dt - 2s \int\limits_\delta^{+\infty} \frac{\sin At}{t} dt &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для второго интеграла: &amp;lt;tex&amp;gt;\int\limits_\delta^{+\infty} \frac{\sin At}t dt = \int\limits_\delta^{+\infty} \frac{\sin At}{At} d(At) = \int\limits_{\delta A}^{+\infty} \frac{\sin t}t dt&amp;lt;/tex&amp;gt;, что, при &amp;lt;tex&amp;gt;A\to+\infty&amp;lt;/tex&amp;gt;, стремится к &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;. Значит, при &amp;lt;tex&amp;gt;A\to\infty&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\int\limits_\delta^{+\infty} \frac{\sin At}{t} dt \to 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для первого интеграла: в рядах Фурье была лемма Римана-Лебега, там было не принципиально, что было подставлены &amp;lt;tex&amp;gt;2\pi&amp;lt;/tex&amp;gt;-периодические функции. Лемма верна и в общем случае: &lt;br /&gt;
&amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; {{---}} суммируема на оси &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\int\limits_{\mathbb{R}} f(t) \sin pt dt \xrightarrow[p\to\infty]{} 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\int\limits_{\delta}^{+\infty} \frac{f(x+t)+f(x-t)}t \sin At dt&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\left| \frac{f(x+t)+f(x-t)}{t}\right| \le \frac{|f(x+t)| + |f(x-t)|}{\delta}&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;\frac{|f(x+t)| + |f(x-t)|}{\delta}&amp;lt;/tex&amp;gt; {{---}} суммируемая, а значит, и &amp;lt;tex&amp;gt;\left| \frac{f(x+t)+f(x-t)}{t}\right|&amp;lt;/tex&amp;gt; {{---}} суммируемая. Возвращаясь к интегралу, по лемме Римана-Лебега, &amp;lt;tex&amp;gt;\int\to_{A\to\infty} 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Итак, собирая всё вместе, &amp;lt;tex&amp;gt;\int\limits_\delta^{+\infty} \varphi_x(t) \frac{\sin At}t dt \to_{A\to+\infty} 0&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;\exists A_0 : \forall A &amp;gt; A_0 : \left|\int\limits_\delta^{+\infty}\right| &amp;lt; \varepsilon&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Принимая это во внимание в оценке отклонения &amp;lt;tex&amp;gt;|I(A) - s| \le \frac2\pi \varepsilon&amp;lt;/tex&amp;gt;, получаем, что &amp;lt;tex&amp;gt;s = \lim\limits_{A\to+\infty} I(A)&amp;lt;/tex&amp;gt;, или, &amp;lt;tex&amp;gt;s = \frac1\pi\int\limits_0^{+\infty}\left(\int\limits_{\mathbb{R}}f(t)\cos z(x-t) dt\right)dz&amp;lt;/tex&amp;gt; в условиях, когда &amp;lt;tex&amp;gt;\int\limits_0^\Delta \frac{|\varphi_x(t)|}{t} dt &amp;lt;+\infty&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
В частности, если, как и в рядах Фурье, в точке &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; существуют односторонние пределы, что если &amp;lt;tex&amp;gt;s=\frac{f(x+0)+f(x-0)}{2}&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;
[[Теорема Джексона|&amp;lt;&amp;lt;]][[Явление Гиббса|&amp;gt;&amp;gt;]]&lt;br /&gt;
[[Категория:Математический анализ 2 курс]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=F2Cmax&amp;diff=83402</id>
		<title>F2Cmax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=F2Cmax&amp;diff=83402"/>
				<updated>2022-09-01T04:52:15Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;F2 \mid\mid C_{max} &amp;lt;/tex&amp;gt;&lt;br /&gt;
{{Задача&lt;br /&gt;
|definition=Рассмотрим задачу:&lt;br /&gt;
*дано &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; работ и &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; станка,&lt;br /&gt;
*для каждой работы известно её время выполнения на каждом станке &amp;lt;tex&amp;gt;p_{ij}&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;p_{i1}&amp;lt;/tex&amp;gt; {{---}} время выполнения &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ой работы на первом станке, а &amp;lt;tex&amp;gt;p_{i2}&amp;lt;/tex&amp;gt; {{---}} на втором.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;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; L &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;  R &amp;lt;/tex&amp;gt; работ &amp;lt;tex&amp;gt;X = \{i \mid  i = 1, \dots, n\}&amp;lt;/tex&amp;gt;  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Пока множество &amp;lt;tex&amp;gt; X &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; i &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; j &amp;lt;/tex&amp;gt;, что  &amp;lt;tex&amp;gt;p_{ij} = \min \{ p_{ij}  \mid i \in X \land j = 1, 2\}&amp;lt;/tex&amp;gt;, &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;если минимум достигается на первом станке (иными словами &amp;lt;tex&amp;gt; j = 1 &amp;lt;/tex&amp;gt;), то поставим работу &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;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;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;удаляем работу &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; из множества &amp;lt;tex&amp;gt; X &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;&lt;br /&gt;
&amp;lt;li&amp;gt; Рассмотрим список &amp;lt;tex&amp;gt; T = L ~\texttt{++}~ R&amp;lt;/tex&amp;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;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Доказательство корректности алгоритма==&lt;br /&gt;
{{&lt;br /&gt;
Теорема|statement=&lt;br /&gt;
Существует оптимальное расписание, в котором станки выполняют работы в одном и том же порядке.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:f2cmax_first_fixed.png|400px|thumb|right|Рис. 1]]&lt;br /&gt;
Предположим обратное: что не существует оптимального расписания с одинаковыми перестановками работ на станках. &lt;br /&gt;
Рассмотрим некоторое оптимальное расписание с максимальным по длине общим префиксом на станках. Пусть его длина равна &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; k &amp;lt; n &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; k + 1 &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; i &amp;lt;/tex&amp;gt;, то последовательные работы с &amp;lt;tex&amp;gt; h &amp;lt;/tex&amp;gt; по &amp;lt;tex&amp;gt; m &amp;lt;/tex&amp;gt; (см. рис. 1) по-прежнему будут успевать выполниться, так как на втором станке они выполняются в текущем расписании после &amp;lt;tex&amp;gt; j &amp;lt;/tex&amp;gt;. Таким образом нам удалось увеличить длину наибольшего общего префикса, а так как по нашему предположению она была максимальна, то предположение неверно и искомое расписание с одинаковым порядком выполнения работ на обоих станках существует.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Таким образом задача сводится к поиску этой перестановки.  Докажем, что полученный приведенным выше алгоритмом список является оптимальной перестановкой работ. &lt;br /&gt;
&lt;br /&gt;
{{лемма&lt;br /&gt;
|id=lemma1&lt;br /&gt;
|about=1&lt;br /&gt;
|statement= Если для каких-то работ &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; T &amp;lt;/tex&amp;gt; верно неравенство &amp;lt;tex&amp;gt; \min(p_{i1}, p_{j2}) &amp;lt; \min(p_{j1}, p_{i2}) &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; j &amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; p_{i1} &amp;lt; p_{j2} &amp;lt;/tex&amp;gt;. Случай &amp;lt;tex&amp;gt; p_{i1} &amp;gt; p_{j2} &amp;lt;/tex&amp;gt; рассматривается аналогично. &lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt; p_{i1} &amp;lt; \min(p_{j1}, p_{i2}) \leqslant p_{i2} &amp;lt;/tex&amp;gt;, то работа &amp;lt;tex&amp;gt; i \in L &amp;lt;/tex&amp;gt;. Работа &amp;lt;tex&amp;gt; j &amp;lt;/tex&amp;gt; либо стоит в &amp;lt;tex&amp;gt; R &amp;lt;/tex&amp;gt;, либо она стоит в &amp;lt;tex&amp;gt; L &amp;lt;/tex&amp;gt; и при этом &amp;lt;tex&amp;gt; p_{i1} &amp;lt; p_{j1} &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;
&lt;br /&gt;
{{лемма&lt;br /&gt;
|id=lemma2&lt;br /&gt;
|about=2&lt;br /&gt;
|statement= Пусть имеем произвольное расписание, в котором работа &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; \min(p_{j1}, p_{i2}) \leqslant   \min(p_{i1}, p_{j2}) &amp;lt;/tex&amp;gt;, то можем поменять местами эти работы без ухудшения целевой функции. &lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:f2cmax_fixed.png|200px|thumb|right|Рис. 2 {{---}} Расположение последовательных работ]]&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; w_{ij} &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; на втором станке. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим возможные случаи расположения работ &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; j &amp;lt;/tex&amp;gt; (см. Рис. 2)&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Работа &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; начинается на втором станке сразу же после завершения ее на первом&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Выполнение работы &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; на втором станке заканчивается позже, чем работы &amp;lt;tex&amp;gt; j &amp;lt;/tex&amp;gt; на первом.  &lt;br /&gt;
*: Тогда  &amp;lt;tex&amp;gt; w_{ij} = p_{i1} + p_{i2} + p_{j2} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
* Выполнение работы &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; на втором станке заканчивается раньше, чем работы &amp;lt;tex&amp;gt; j &amp;lt;/tex&amp;gt; на первом.  &lt;br /&gt;
*: В этом случае &amp;lt;tex&amp;gt; w_{ij} = p_{i1} + p_{j1} + p_{j2}  &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&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 &amp;lt;/tex&amp;gt; на втором станке заканчивается раньше, чем работы &amp;lt;tex&amp;gt; j &amp;lt;/tex&amp;gt; на первом. &lt;br /&gt;
*: Здесь снова имеем &amp;lt;tex&amp;gt; w_{ij} = p_{i1} + p_{j1} + p_{j2}  &amp;lt;/tex&amp;gt;.&lt;br /&gt;
* Выполнение работы &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; на втором станке заканчивается позже, чем работы &amp;lt;tex&amp;gt; j &amp;lt;/tex&amp;gt; на первом.           &lt;br /&gt;
*: Пусть &amp;lt;tex&amp;gt; \Delta &amp;lt;/tex&amp;gt; {{---}} время прошедшее с начала выполнения работы &amp;lt;tex&amp;gt; i&amp;lt;/tex&amp;gt; на первом станке и до начала ее выполнения на втором станке. Получили, что &amp;lt;tex&amp;gt; w_{ij} = \Delta + p_{i2} + p_{j2} &amp;lt;/tex&amp;gt;. &lt;br /&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; w_{ij} = \max (p_{i1} + p_{j1} + p_{j2}, p_{i1} + p_{i2} + p_{j2}, \Delta + p_{i2} + p_{j2}) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
Иначе говоря,   &amp;lt;tex&amp;gt; w_{ij} = \max (p_{i1} + \max(p_{j1}, p_{i2}) + p_{j2}, \Delta + p_{i2} + p_{j2}) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Аналогично,  &amp;lt;tex&amp;gt; w_{ji} = \max (p_{j1} + \max(p_{i1}, p_{j2}) + p_{i2},  \Delta + p_{i2} + p_{j2}) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt; \min(a, b) = - \max(-a, -b)&amp;lt;/tex&amp;gt;, то из условия леммы имеем &amp;lt;tex&amp;gt; \max(-p_{i1}, -p_{j2}) \leqslant   \max(-p_{j1}, -p_{i2}) &amp;lt;/tex&amp;gt;. Добавив &amp;lt;tex&amp;gt; p_{i1} + p_{i2} + p_{j1} + p_{j2} &amp;lt;/tex&amp;gt; к обеим частям, получим, что &amp;lt;tex&amp;gt; p_{j1} + \max(p_{i1}, p_{j2}) + p_{i2} \leqslant p_{i1} + \max(p_{j1}, p_{i2}) + p_{j2} &amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt; w_{ji} \leqslant w_{ij} &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; ответ не ухудшается. &lt;br /&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; T &amp;lt;/tex&amp;gt; является оптимальной. &lt;br /&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; S &amp;lt;/tex&amp;gt; имеют общий префикс длины &amp;lt;tex&amp;gt; l-1 &amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; i = T_{l} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; j = S_{l} &amp;lt;/tex&amp;gt;. Рассмотрим множество работ &amp;lt;tex&amp;gt;M = \{T_{r} \mid  r = l, \dots, n\}&amp;lt;/tex&amp;gt;. Заметим, что для любой работы &amp;lt;tex&amp;gt; k \in M &amp;lt;/tex&amp;gt; верно, что &amp;lt;tex&amp;gt; \min(p_{k1}, p_{i2}) \geqslant \min(p_{i1}, p_{k2}) &amp;lt;/tex&amp;gt;, так как если было бы верно обратное, то есть &amp;lt;tex&amp;gt; \min(p_{k1}, p_{i2}) &amp;lt; \min(p_{i1}, p_{k2}) &amp;lt;/tex&amp;gt;, то по лемме 1 было бы верно, что &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; S &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; w &amp;lt;/tex&amp;gt; верно &amp;lt;tex&amp;gt; \min(p_{w1}, p_{i2}) \geqslant \min(p_{i1}, p_{w2}) &amp;lt;/tex&amp;gt; (так как &amp;lt;tex&amp;gt; w \in M &amp;lt;/tex&amp;gt;), то по лемме 2 можем поменять местами работы &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; w &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; 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; T &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Псевдокод==&lt;br /&gt;
&lt;br /&gt;
   '''function''' F2Cmax(p: '''int'''[n][2]): '''list&amp;lt;int&amp;gt;'''&lt;br /&gt;
      '''list&amp;lt;int&amp;gt;''' L = &amp;lt;tex&amp;gt;\varnothing &amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''list&amp;lt;int&amp;gt;''' R = &amp;lt;tex&amp;gt;\varnothing &amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''set&amp;lt;int&amp;gt;''' X = &amp;lt;tex&amp;gt;\{1, \ldots, n\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''while''' X &amp;lt;tex&amp;gt;\neq \varnothing&amp;lt;/tex&amp;gt;&lt;br /&gt;
         Найти i и j, такие что &amp;lt;tex&amp;gt;p_{ij} = \min \{ p_{ij} \mid i \in X \land j = 1, 2\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' j == 1&lt;br /&gt;
            L.addLast(i)&lt;br /&gt;
         '''else''' &lt;br /&gt;
            R.addFirst(i)&lt;br /&gt;
         X.remove(i)&lt;br /&gt;
      '''list&amp;lt;int&amp;gt;''' T = L ++ R&lt;br /&gt;
      '''return''' T&lt;br /&gt;
&lt;br /&gt;
==Сложность алгоритма==&lt;br /&gt;
Заметим, что на каждом шаге алгоритма мы выбираем минимум из оставшихся элементов за &amp;lt;tex&amp;gt;O(\log n)&amp;lt;/tex&amp;gt; (либо предварительной [[Сортировка|сортировкой]], либо  с помощью любой структуры данных, поддерживающей нахождение минимума и удаление за &amp;lt;tex&amp;gt;O(\log n)&amp;lt;/tex&amp;gt;, например, [[Двоичная_куча|кучи]]). А так как мы делаем  это &amp;lt;tex&amp;gt; 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;
* [[J2ni2Cmax|&amp;lt;tex&amp;gt;J2 \mid n_i \leqslant 2 \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;
* [[R2Cmax|&amp;lt;tex&amp;gt;R2\mid\mid C_{max}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
* Peter Brucker. «Scheduling Algorithms» {{---}} «Springer», 2006 г. {{---}} 175 стр. {{---}} ISBN 978-3-540-69515-8&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Теория расписаний]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%81%D0%BA%D0%B0%D0%B4%D0%BD%D1%8B%D0%B9_%D1%81%D1%83%D0%BC%D0%BC%D0%B0%D1%82%D0%BE%D1%80&amp;diff=83401</id>
		<title>Каскадный сумматор</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%81%D0%BA%D0%B0%D0%B4%D0%BD%D1%8B%D0%B9_%D1%81%D1%83%D0%BC%D0%BC%D0%B0%D1%82%D0%BE%D1%80&amp;diff=83401"/>
				<updated>2022-09-01T04:52:08Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
'''Каскадный сумматор''' (англ. ''ripple-carry adder'') {{---}} логическая [[Реализация булевой функции схемой из функциональных элементов|схема]], осуществляющая сложение многоразрядных двоичных чисел.&lt;br /&gt;
}}&lt;br /&gt;
Как известно, с помощью [[Сумматор|полного сумматора]] можно сложить 2 одноразрядных двоичных числа. Для сложения двух &amp;lt;tex&amp;gt;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;i&amp;lt;/tex&amp;gt;-том разряде складываются &amp;lt;TeX&amp;gt;a_i&amp;lt;/TeX&amp;gt;, &amp;lt;Tex&amp;gt;b_i&amp;lt;/TeX&amp;gt; и входной бит переноса (англ. ''carry-in bit'')  &amp;lt;TeX&amp;gt;c_i&amp;lt;/TeX&amp;gt;. Младший разряд суммы записывается в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й разряд ответа (&amp;lt;TeX&amp;gt;s_i&amp;lt;/TeX&amp;gt;), а старший становится выходным битом переноса (англ. ''carry-out bit'')  &amp;lt;TeX&amp;gt;c_{i+1}&amp;lt;/TeX&amp;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; i-1 &amp;lt;/tex&amp;gt; битов, то есть сумма в каждом разряде может зависеть от суммы предыдущих разрядов. Поэтому сложение с помощью каскадного сумматора выполняется за время &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ripple_carry_adder.png]] &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/Adder_(electronics) Wikipedia {{---}} Adder (electronics)]&lt;br /&gt;
* [http://rain.ifmo.ru/cat/view.php/vis/arithmetics/binary-addition-2002/algorithm Каскадное сложение]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Схемы из функциональных элементов ]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D1%8B_%D0%B8_%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=83400</id>
		<title>Собственные векторы и собственные значения</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D1%8B_%D0%B8_%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=83400"/>
				<updated>2022-09-01T04:51:59Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
|id=def1. &lt;br /&gt;
|neat = &lt;br /&gt;
|definition=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;\mathcal{A}\colon X \to X&amp;lt;/tex&amp;gt;  - линейный оператор (ЛО)&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;tex&amp;gt;x\ne 0_x&amp;lt;/tex&amp;gt; называется '''собственным вектором''' &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;x \in L&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; {{---}} [[Инвариантные подпространства | инвариантное подпространство]] &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\dim L = 1&amp;lt;/tex&amp;gt; &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=def2. &lt;br /&gt;
|neat = &lt;br /&gt;
|definition=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;\mathcal{A}\colon X \to X&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;x\ne 0_X&amp;lt;/tex&amp;gt; называется '''собственным вектором''' &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt;, если существует &amp;lt;tex&amp;gt;\lambda \in F \colon \mathcal{A}x = \lambda x&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=lemma1 &lt;br /&gt;
|author=&lt;br /&gt;
|about=&lt;br /&gt;
|statement=&lt;br /&gt;
Предыдущие 2 определения эквивалентны.&lt;br /&gt;
|proof=&lt;br /&gt;
&amp;lt;math&amp;gt; (1) \Rightarrow (2) \colon x \in L, \dim L=1 \Rightarrow \mathcal{A}x \in L \ (&amp;lt;/math&amp;gt;т. к. &amp;lt;math&amp;gt;x \ne 0_X \Rightarrow&amp;lt;/math&amp;gt; базис &amp;lt;math&amp;gt;L = \{x\}) \Rightarrow \mathcal{A}x=\lambda x&amp;lt;/math&amp;gt; (единственным образом) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt; (1) \Leftarrow (2) \colon \exists \lambda: \mathcal{A}x = \lambda x \Rightarrow x \in&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;\{x\}, \mathcal{A}x = \lambda x \in L&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=def3. &lt;br /&gt;
|neat = &lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;\lambda&amp;lt;/tex&amp;gt; в равенстве &amp;lt;tex&amp;gt;\mathcal{A}x = \lambda x&amp;lt;/tex&amp;gt; называется '''собственным числом (собственным значением)''' ЛО &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=def4. &lt;br /&gt;
|neat = &lt;br /&gt;
|definition=&lt;br /&gt;
'''Спектром''' &amp;lt;tex&amp;gt;\sigma&amp;lt;/tex&amp;gt; ЛО называется множество всех его '''собственных значений''' &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;\sigma (\mathcal{A}) = \sigma _\mathcal{A} = \{ \lambda _i \}&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;
|id=th1. &lt;br /&gt;
|author=&lt;br /&gt;
|about=&lt;br /&gt;
|statement=&lt;br /&gt;
'''Собственные векторы''', отвечающие различным '''собственным значениям''' образуют ЛНЗ набор&lt;br /&gt;
|proof=&lt;br /&gt;
1) База: рассмотрим &amp;lt;tex&amp;gt;\lambda \leftrightarrow x_1 \ne 0_x\ \{x_1\}&amp;lt;/tex&amp;gt; - ЛНЗ набор.&amp;lt;br&amp;gt;&lt;br /&gt;
2) &amp;lt;tex&amp;gt;\{x_1,x_2, ... , x_{m-1}\} \leftrightarrow \{\lambda _1, ... \lambda _ {m-1} \}&amp;lt;/tex&amp;gt; - ЛНЗ. &lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt;\{x_1, ..., x_m \} &amp;lt;/tex&amp;gt;- докажем, что тоже ЛНЗ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\sum\limits_{i=1}^m \alpha^i x_i = 0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathcal{A}( \sum\limits_{i=1}^m \alpha_i x_i) = \sum\limits_{i=1}^m \alpha_i Ax_i = \sum\limits_{i=1}^m \alpha_i \lambda_i x_i = 0_x&amp;lt;/tex&amp;gt;  (1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\lambda_m( \sum\limits_{i=1}^m \alpha_i x_i) = \sum\limits_{i=1}^m \alpha_i \lambda_m x_i = 0_x&amp;lt;/tex&amp;gt;   (2)&lt;br /&gt;
&lt;br /&gt;
(1) - (2) : &amp;lt;tex&amp;gt;\alpha_1(\lambda_1 - \lambda_m)x_1 + ... + \alpha_{m-1}(\lambda_{m-1} - \lambda_m)x_{m-1} + 0_x = 0_x&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По предположению индукции &amp;lt;tex&amp;gt;\{x_1,x_2, ... , x_{m-1}\}&amp;lt;/tex&amp;gt; - ЛНЗ  &amp;lt;tex&amp;gt;\Rightarrow \alpha_1 (\lambda_1-\lambda_m)=0  ...  \alpha_{m-1} (\lambda_{m-1} - \lambda_{m}) =0 &amp;lt;/tex&amp;gt;, при этом все &amp;lt;tex&amp;gt;(\lambda_{i-1}-\lambda_m) \ne 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Rightarrow &amp;lt;/tex&amp;gt; все &amp;lt;tex&amp;gt;\alpha_i = 0&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\Rightarrow \sum\limits_{i=1}^m \alpha_i x_i = 0_x&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Rightarrow \alpha_m x_m = 0_x &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;x_m \ne 0_x&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\Rightarrow \alpha_m=0&amp;lt;/tex&amp;gt;, т.е. набор ЛНЗ.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=lemma2. &lt;br /&gt;
|author=&lt;br /&gt;
|about=&lt;br /&gt;
|statement=&lt;br /&gt;
Множество всех собственных векторов, отвечающих одному и тому же собственному значению оператора &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt;, образует подпространство пространства &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
1) Если &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; {{---}} св, то и &amp;lt;tex&amp;gt; \alpha x&amp;lt;/tex&amp;gt; {{---}} тоже св.&lt;br /&gt;
&lt;br /&gt;
2) Если &amp;lt;tex&amp;gt;x,y&amp;lt;/tex&amp;gt; {{---}} св, то и &amp;lt;tex&amp;gt;x+y&amp;lt;/tex&amp;gt; {{---}} тоже св.&lt;br /&gt;
&lt;br /&gt;
Из 1 и 2 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; что лемма доказана (по определению подпространства)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=def45 &lt;br /&gt;
|neat = &lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;L = &amp;lt;/tex&amp;gt; линейная оболочка &amp;lt;tex&amp;gt;\{&amp;lt;/tex&amp;gt; все СВ &amp;lt;tex&amp;gt; x_i \leftrightarrow \lambda_i \}&amp;lt;/tex&amp;gt; называют собственным подпространством &amp;lt;tex&amp;gt;X \leftrightarrow&amp;lt;/tex&amp;gt; СЗ &amp;lt;tex&amp;gt;\lambda_i&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=lemma3. &lt;br /&gt;
|author=&lt;br /&gt;
|about=&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть L - линейная оболочка&amp;lt;tex&amp;gt;\{ &amp;lt;/tex&amp;gt; всех &amp;lt;tex&amp;gt;x_i \leftrightarrow \lambda_i\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X_{\lambda i}&amp;lt;/tex&amp;gt; - собственное подпространство X &amp;lt;tex&amp;gt;\leftrightarrow \lambda_i&amp;lt;/tex&amp;gt;&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;L = X_{\lambda i}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Сначала &amp;lt;tex&amp;gt;\subseteq&amp;lt;/tex&amp;gt;  потом &amp;lt;tex&amp;gt;\supseteq&amp;lt;/tex&amp;gt;  &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; доказательство (так в конспекте);&lt;br /&gt;
Вообще не понятно, зачем эта лемма, ибо она по определению.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=lemma4. &lt;br /&gt;
|author=&lt;br /&gt;
|about= (следствие из теоремы)&lt;br /&gt;
|statement=&lt;br /&gt;
У ЛО не может быть больше &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; СЗ, где &amp;lt;tex&amp;gt;n = dimX&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; их не больше чем размерность пространства, а &amp;lt;tex&amp;gt;dim X = 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;x \ne 0_x&amp;lt;/tex&amp;gt; и&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathcal{A}x = \lambda  x \Leftrightarrow \mathcal{A}x - \lambda \mathcal{I} x = 0 \Leftrightarrow (\mathcal{A} - \lambda \mathcal{I})X = 0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math dpi = &amp;quot;145&amp;quot;&amp;gt;{C}= \begin{pmatrix} &lt;br /&gt;
({\alpha}_{1}^{1}- \lambda) \xi^1 &amp;amp; {\alpha}_{2}^{1} \xi^2 &amp;amp; \cdots &amp;amp; {\alpha}_{n}^{1} \xi^n \\&lt;br /&gt;
{\alpha}_{1}^{2} \xi^1 &amp;amp; ({\alpha}_{2}^{2}- \lambda) \xi^2 &amp;amp; \cdots &amp;amp; {\alpha}_{n}^{2} \xi^n \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br /&gt;
{\alpha}_{1}^{n} \xi^1 &amp;amp; {\alpha}_{2}^{n} \xi^2 &amp;amp; \cdots &amp;amp; ({\alpha}_{n}^{n}- \lambda) \xi^n \\&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;det(A- \lambda E) \ne 0 \Rightarrow \exists &amp;lt;/tex&amp;gt; тривиальное решение  &amp;lt;tex&amp;gt;(0,0 ... ,0)^T&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;det(A- \lambda E) = 0 \Rightarrow \exists &amp;lt;/tex&amp;gt; нетривиальное решение &amp;lt;tex&amp;gt;\Rightarrow \exists&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;\mathcal{X}_A (\lambda) = 0 &amp;lt;/tex&amp;gt; - характеристический полином&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;det(A- \lambda E) = 0&amp;lt;/tex&amp;gt; - уравнение на СЗ, а&lt;br /&gt;
&amp;lt;tex&amp;gt;det(A- \lambda E)X = 0&amp;lt;/tex&amp;gt; - уравнение на СВ&lt;br /&gt;
&lt;br /&gt;
Из уравнения на СЗ находим &amp;lt;tex&amp;gt;\{\lambda_i \}&amp;lt;/tex&amp;gt; - корни характеристического полинома, они же - характеристические числа.&lt;br /&gt;
&lt;br /&gt;
Затем подставляем каждую &amp;lt;tex&amp;gt;\lambda_i&amp;lt;/tex&amp;gt; в уравнение на СВ по очереди на находим СВ &amp;lt;tex&amp;gt;x_i \leftrightarrow \lambda_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так найдутся все СВ.&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|id=th2. &lt;br /&gt;
|author=&lt;br /&gt;
|about=&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; \mathcal{A} : X \to X, X&amp;lt;/tex&amp;gt; над С, тогда у &amp;lt;tex&amp;gt;\mathcal{A}&amp;lt;/tex&amp;gt; есть хотя бы одно СЗ и один СВ.&lt;br /&gt;
|proof=&lt;br /&gt;
[http://ru.wikipedia.org/wiki/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%B0%D1%8F_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D1%8B Основная теорема алгебры] гласит, что у &amp;lt;tex&amp;gt;\forall&amp;lt;/tex&amp;gt; полинома комплексной переменной всегда есть корень.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгебра и геометрия 1 курс]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0&amp;diff=83399</id>
		<title>Математическая логика</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0&amp;diff=83399"/>
				<updated>2022-09-01T04:51:52Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
=== Конспекты лекций Штукенберга по мат. логике ===&lt;br /&gt;
&lt;br /&gt;
# [[Исчисление высказываний | Исчисление высказываний, формальная система]] (Вопросы 1, 2)&lt;br /&gt;
# [[Лемма о дедукции, полнота исчисления высказываний]] (Вопросы 3, 4)&lt;br /&gt;
# [[Исчисление предикатов]] (Вопросы 5, 6)&lt;br /&gt;
# [[Секвенциальное и интуиционистское исчисление]] (Вопросы 7, 8)&lt;br /&gt;
# [[Теории первого порядка]] (Вопросы 9, 10)&lt;br /&gt;
# [[Рекурсивные функции, представимость в формальной арифметике]] (Вопросы 11, 12, 13)&lt;br /&gt;
# [[Геделева нумерация. Арифметизация доказательств]] (Вопросы 14)&lt;br /&gt;
# [[1я и 2я теоремы Геделя о неполноте арифметики]] (Вопросы 15, 16)&lt;br /&gt;
# [[Теория множеств]] (Вопросы 17, 18,19)&lt;br /&gt;
&lt;br /&gt;
=== Экзамен ===&lt;br /&gt;
[[Решение задач по логике]]&lt;br /&gt;
&lt;br /&gt;
[[Вопросы к экзамену по математической логике за 3 семестр]]&lt;br /&gt;
&lt;br /&gt;
[[Теоретический минимум по математической логике за 3 семестр]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: В разработке]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Математическая логика]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=1ripmtnsumwu&amp;diff=83398</id>
		<title>1ripmtnsumwu</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=1ripmtnsumwu&amp;diff=83398"/>
				<updated>2022-09-01T04:51:43Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;1 \mid r_i, pmtn \mid \sum w_{i}U_{i}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Задача&lt;br /&gt;
|definition=Дана задача на нахождение расписания:&lt;br /&gt;
# У нас есть несколько работ, которые необходимо выполнить на одном станке.&lt;br /&gt;
# У работ есть время появления &amp;lt;tex&amp;gt;r_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Работы разрешается прерывать в любой момент времени.&lt;br /&gt;
# Все значения целочисленны, веса &amp;lt;tex&amp;gt;w_{i}&amp;lt;/tex&amp;gt; положительны.&lt;br /&gt;
Требуется выполнить все работы, чтобы значение &amp;lt;tex&amp;gt;\sum w_i U_i&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;d_1 \leqslant d_2 \leqslant \ldots \leqslant d_n&amp;lt;/tex&amp;gt;. За &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; обозначим количество различных &amp;lt;tex&amp;gt;r_{i}&amp;lt;/tex&amp;gt;. За &amp;lt;tex&amp;gt;W = \sum\limits_{j = 1}^{n} {w_j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Назовем множество работ &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; '''выполнимым''' (англ. ''feasible''), если существует такое расписание для работ из &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, что все работы будут выполнены без опозданий. Чтобы проверить, является ли множество работ выполнимым, воспользуемся упрощенной версией &amp;lt;tex&amp;gt;\mathrm{EDD}&amp;lt;/tex&amp;gt; правила &amp;lt;ref&amp;gt;Peter Brucker «Scheduling Algorithms», fifth edition, Springer — с. 70&amp;lt;/ref&amp;gt; (&amp;lt;tex&amp;gt;\mathrm{EDD}&amp;lt;/tex&amp;gt; (''earliest due date'') правило {{---}} правило наименьшего срока): &lt;br /&gt;
&lt;br /&gt;
:''Составим расписание работ таким образом, чтобы первой в расписании стояла работа с наименьшим значением &amp;lt;tex&amp;gt;r_{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;\mathrm{EDD}&amp;lt;/tex&amp;gt; расписании выполняются без опозданий. Это прямое следствие из теоремы 4.4 &amp;lt;ref&amp;gt;Peter Brucker «Scheduling Algorithms», fifth edition, Springer — с. 70&amp;lt;/ref&amp;gt;. Если в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; содержится &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; работ, то построение &amp;lt;tex&amp;gt;\mathrm{EDD}&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;
Для данного непустого множества &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; определим следующие величины:&lt;br /&gt;
* &amp;lt;tex&amp;gt;r(S) =  \min\limits_{i \in S} r_{i} &amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;p(S) = \sum\limits_{i \in S} p_{i} &amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;w(S) = \sum\limits_{i \in S} w_{i}&amp;lt;/tex&amp;gt;&lt;br /&gt;
Кроме того, обозначим за &amp;lt;tex&amp;gt;C(S)&amp;lt;/tex&amp;gt; время последней выполненной работы из &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;\mathrm{EDD}&amp;lt;/tex&amp;gt; расписании. Оно состоит из периодов непрерывного выполнения работы, разделенных периодами бездействия, когда нет доступных работ для выполнения. Это означает, что &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; может быть разделено на множества &amp;lt;tex&amp;gt;S_{1} \ldots S_{x}&amp;lt;/tex&amp;gt;, для которых выполняется &amp;lt;tex&amp;gt;C(S_{i}) = r(S_{i}) + p(S_{i}) &amp;lt;  r(S_{i + 1})&amp;lt;/tex&amp;gt; для &amp;lt;tex&amp;gt;i = 1 \ldots x - 1 &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Выполнимое множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; является '''блоком''' (англ. ''block''), если работы из &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;C(S) = r(S)+ p(S)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; не является объединением &amp;lt;tex&amp;gt;S_{1}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;S_{2}&amp;lt;/tex&amp;gt; таких, что &amp;lt;tex&amp;gt;C(S_{1}) &amp;lt; r(S_{2})&amp;lt;/tex&amp;gt;. Решим задачу &amp;lt;tex dpi&amp;gt;1 \mid r_i, pmtn \mid \sum w_{i}U_{i}&amp;lt;/tex&amp;gt; методами [[Динамическое программирование|динамического программирования]].&lt;br /&gt;
&lt;br /&gt;
Введем величину &amp;lt;tex&amp;gt;C_{i}(r, w) = \min \{C(S) \mid S \subseteq \{ 1 \ldots i \} &amp;lt;/tex&amp;gt; {{---}} выполнимое, причём выполняется &amp;lt;tex&amp;gt; r(S) \geqslant r \wedge w(S) \geqslant w  \}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;C_{i}(r, w) = \infty&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;C_{n}(r_{\min}, w)&amp;lt;/tex&amp;gt; конечно, где &amp;lt;tex&amp;gt;r_{\min} = \min\limits_{j = 1 \ldots n} r_{i}&amp;lt;/tex&amp;gt;. Посчитаем значения &amp;lt;tex&amp;gt;C_{j}(r, w)&amp;lt;/tex&amp;gt; за &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; итераций с начальными значениями:&lt;br /&gt;
:&amp;lt;tex&amp;gt;C_{0}(r, 0) = 0&amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt;r&amp;lt;/tex&amp;gt; &lt;br /&gt;
:&amp;lt;tex&amp;gt;C_{0}(r, w) = \infty&amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt;r&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;w &amp;gt; 0&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;r(S) &amp;gt; r_{j}&amp;lt;/tex&amp;gt;. Следовательно,&lt;br /&gt;
:&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;C_{j}(r, w) &lt;br /&gt;
\left \{\begin{array}{ll} = C_{j - 1}(r, w),  &amp;amp; \text{if } r &amp;gt; r_{j} \\&lt;br /&gt;
\leqslant  C_{j - 1}(r, w), &amp;amp; \text{otherwise} \end{array} \right. &lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отсюда следует, что нам нужно посчитать только такие значения &amp;lt;tex&amp;gt;C_{j} (r, w)&amp;lt;/tex&amp;gt; для которых &amp;lt;tex&amp;gt;r \leqslant r_{j}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; S \subseteq \{ 1 \ldots j \} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;C_{j}(r, w) = C(S)&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;j \notin S&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;C_{j}(r, w) = C_{j - 1}(r, w)&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;j&amp;lt;/tex&amp;gt; начинается после &amp;lt;tex&amp;gt;C(S \setminus \{j\})&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим два подслучая: &lt;br /&gt;
# &amp;lt;tex&amp;gt;C(S \setminus \{j\}) \leqslant r_{j}&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; В этом случае &amp;lt;tex&amp;gt;C(S) = r_{j} + p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt;C(S \setminus \{j\}) &amp;gt; r_{j}&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt;Работы из &amp;lt;tex&amp;gt;C(S \setminus \{j\})&amp;lt;/tex&amp;gt; обрабатываются непрерывно в интервале &amp;lt;tex&amp;gt;[r_{j}, C(S \setminus \{j\})]&amp;lt;/tex&amp;gt;, потому что иначе &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; начнет обрабатываться до &amp;lt;tex&amp;gt;C(S \setminus \{j\})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Делаем вывод, что &amp;lt;tex&amp;gt;C_{j} (r, w) = \max(r_{j} , C(S \setminus \{j\}) + p_{j}&amp;lt;/tex&amp;gt;. Предположим, что &amp;lt;tex&amp;gt;C(S \setminus \{j\})&amp;lt;/tex&amp;gt; такое, что &amp;lt;tex&amp;gt;C(S \setminus \{j\}) = C_{j - 1}(r, w - w_{j})&amp;lt;/tex&amp;gt; и, если это не так, заменим  &amp;lt;tex&amp;gt;C(S \setminus \{j\})&amp;lt;/tex&amp;gt; на выполнимое подмножество из &amp;lt;tex&amp;gt;1 \ldots j - 1&amp;lt;/tex&amp;gt; для которого это выполняется. Из этого следует, что&lt;br /&gt;
:&amp;lt;tex&amp;gt;C_{j}(r, w) = \max(r_{j} , C_{j - 1}(r, w − w_{j})) + p_{j}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Второй случай ====&lt;br /&gt;
Работа &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; начинается перед &amp;lt;tex&amp;gt;C(S \setminus \{j\})&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
В этом случае существует простой в &amp;lt;tex&amp;gt;\mathrm{EDD}&amp;lt;/tex&amp;gt; расписании для множества &amp;lt;tex&amp;gt;C(S \setminus \{j\})&amp;lt;/tex&amp;gt; после &amp;lt;tex&amp;gt;r_{j}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; {{---}} последний блок в &amp;lt;tex&amp;gt;C(S \setminus \{j\})&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;r(S') = \max\{r(B) \mid B &amp;lt;/tex&amp;gt; является блоком в &amp;lt;tex&amp;gt; C(S \setminus \{j\}) \} &amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;r(S') \geqslant r_{j}&amp;lt;/tex&amp;gt;, в таком случае обязано выполняться равенство &amp;lt;tex&amp;gt;C(S') = C_{j - 1}(r(S'), w(s'))&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;(S \setminus \{j\}) \setminus S'&amp;lt;/tex&amp;gt;, лежащих в интервале &amp;lt;tex&amp;gt;[r_{j}, r(S')]&amp;lt;/tex&amp;gt;, {{---}} минимально, учитвая выполнимые множества  &amp;lt;tex&amp;gt;S  \subseteq \{1 \ldots j \}&amp;lt;/tex&amp;gt; такие, что &amp;lt;tex&amp;gt;r(S'') \geqslant r, C(S'') \leqslant r(S'), w(S'') \geqslant w - w_{j} - w(S')&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;r, r'&amp;lt;/tex&amp;gt; {{---}} даты появления &amp;lt;tex&amp;gt;r \leqslant r_{j} &amp;lt; r&amp;lt;/tex&amp;gt;, и &amp;lt;tex&amp;gt;w''&amp;lt;/tex&amp;gt; {{---}} некоторое целочисленное значение &amp;lt;tex&amp;gt;0 \leqslant w'' &amp;lt; W&amp;lt;/tex&amp;gt;. За &amp;lt;tex&amp;gt;P_{j - 1}(r, r', w'')&amp;lt;/tex&amp;gt; возьмем минимальное число сделанной работы в итервале &amp;lt;tex&amp;gt;[r_{j}, r']&amp;lt;/tex&amp;gt;,  учитвая выполнимые множества &amp;lt;tex&amp;gt;S  \subseteq \{1 \ldots j \}&amp;lt;/tex&amp;gt; такие, что &amp;lt;tex&amp;gt;r(S'') \geqslant r, C(S'') \leqslant r', w(S'') \geqslant w''&amp;lt;/tex&amp;gt;. Если таких выполнимых множеств нет, то &amp;lt;tex&amp;gt;P_{j - 1}(r, r', w'') = \infty&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;[r_j, r(S')]&amp;lt;/tex&amp;gt; записывается формулой&lt;br /&gt;
:&amp;lt;tex&amp;gt;(r(S') - r_j) - P_{j - 1}(r, r(S'), w - w_j - w(S'))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Количество готовности работы (какое количество уже сделано) &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; после времени&lt;br /&gt;
:&amp;lt;tex&amp;gt;\max(0, p_j - (r(S') - r_j) + P_{j - 1}(r, r(S'), w - w_j - w(S'))&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;S&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;tex&amp;gt;C_j(r,w) = \min\limits_{r', w'} \{ C_{j - 1}(r', w') + \max \{ 0, p_j - r' + r_j + P_{j - 1}(r, r', w - w_j - w'  \} \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Конечная формула ===&lt;br /&gt;
Собирая все написаное выше, приходим к рекуррентной формуле: &lt;br /&gt;
:&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;C_{j}(r, w) = \min&lt;br /&gt;
\left \{\begin{array}{ll} C_{j - 1}(r, w)  \\&lt;br /&gt;
\max \{r_j, C_{j - 1}(r, w - w_j) \} + p_j  \\&lt;br /&gt;
\min\limits_{r', w'} \{ C_{j - 1}(r', w') + \max \{ 0, p_j - r' + r_j + P_{j - 1}(r, r', w - w_j - w'  \} \} \end{array} \right. &lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этой формуле внутренняя минимизация берется по всем различным датам появления &amp;lt;tex&amp;gt;r' &amp;gt; r_j&amp;lt;/tex&amp;gt; таких, что &amp;lt;tex&amp;gt;r' = r(S') \in \{ r1 \ldots r_{j - 1} \} &amp;lt;/tex&amp;gt; и целочисленным значениям &amp;lt;tex&amp;gt;w'&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;0 \leqslant w' &amp;lt; w - w_j&amp;lt;/tex&amp;gt;. Важно, что формула корректна только в том случае, если правая часть не превышает &amp;lt;tex&amp;gt;d_j&amp;lt;/tex&amp;gt; и, если это не так, то &amp;lt;tex&amp;gt; C_{j}(r, w) = \infty&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим, как посчитать значения &amp;lt;tex&amp;gt;P_{j - 1}(r, r', w'')&amp;lt;/tex&amp;gt; для &amp;lt;tex&amp;gt;r \leqslant r_j &amp;lt; r'&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;0 \leqslant w'' &amp;lt; W&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;w'' = 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;P_{j - 1}(r, r', w'') = 0&amp;lt;/tex&amp;gt;. Иначе значение &amp;lt;tex&amp;gt;P_{j - 1}(r, r', w'')&amp;lt;/tex&amp;gt; можно посчитать, используя непустое множество &amp;lt;tex&amp;gt;S'' \subseteq \{ 1 \ldots j - 1\}&amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt;r (S'') &amp;gt; r&amp;lt;/tex&amp;gt;, то&amp;lt;tex&amp;gt;P_{j - 1}(r, r', w'') = P_{j - 1}(r(S''), r', w'')&amp;lt;/tex&amp;gt;. Кроме того, в общем случае, заметим, что выполнятся&lt;br /&gt;
:&amp;lt;tex&amp;gt;P_{j - 1}(r, r', w'') \leqslant P_{j - 1}(r^+, r', w'')&amp;lt;/tex&amp;gt;.&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;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;r(S'') = r&amp;lt;/tex&amp;gt;, то пусть &amp;lt;tex&amp;gt;S' \subseteq S''&amp;lt;/tex&amp;gt; будет блоком &amp;lt;tex&amp;gt;S''&amp;lt;/tex&amp;gt; таким, что &amp;lt;tex&amp;gt;r(S') = r&amp;lt;/tex&amp;gt;. Можно предположить, что &amp;lt;tex&amp;gt;C(S') = C_{j - 1}(r, w(S'))&amp;lt;/tex&amp;gt;. Следовательно, общее количество сделанной работы из &amp;lt;tex&amp;gt;S'&amp;lt;/tex&amp;gt; в интервале &amp;lt;tex&amp;gt;[r_j, r']&amp;lt;/tex&amp;gt; будет равно&lt;br /&gt;
:&amp;lt;tex&amp;gt;\max \{ 0, C_{j - 1}(r, w(S')) - r_j \} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;r''&amp;lt;/tex&amp;gt; будет наименьшей датой появления, меньшей или равной &amp;lt;tex&amp;gt;C_{j - 1}(r, w(S'))&amp;lt;/tex&amp;gt;. Тогда общее количество сделанной работы в &amp;lt;tex&amp;gt;S'' \setminus S' &amp;lt;/tex&amp;gt; в интервале &amp;lt;tex&amp;gt;[r_j, r']&amp;lt;/tex&amp;gt; будет равно &amp;lt;tex&amp;gt;P_{j - 1}(r'', r', w'' - w(S'))&amp;lt;/tex&amp;gt;. Следовательно, общее количество сделанной работы в &amp;lt;tex&amp;gt;S''&amp;lt;/tex&amp;gt; в интервале &amp;lt;tex&amp;gt;[r_j, r']&amp;lt;/tex&amp;gt; будет равно&lt;br /&gt;
:&amp;lt;tex&amp;gt;\max \{ 0, C_{j - 1}(r, w(S')) - r_j\} + P_{j - 1}(r'', r', w'' - w(S'))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Правая часть выражения должна быть минимальной для множеств &amp;lt;tex&amp;gt;S', S'' \setminus S'&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;r(S') = r, C(S') \leqslant r( S'' \setminus S') = r'', w(S') + w( S'' \setminus S') = w''&amp;lt;/tex&amp;gt;. Собирая все вместе, получим формулу&lt;br /&gt;
:&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;P_{j - 1}(r, r', w'') = \min&lt;br /&gt;
\left \{\begin{array}{ll} P_{j - 1}(r^+, r', w'') \\&lt;br /&gt;
\min\limits_{0 &amp;lt; w' \leqslant w''} \{ \max \{ 0, C_{j - 1}(r, w') - r_j \} + P_{j - 1}(r'', r', w'' - w')\} \end{array} \right. &lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С начальными значениями:&lt;br /&gt;
: &amp;lt;tex&amp;gt;P_{j - 1}(r, r', 0) = 0&amp;lt;/tex&amp;gt;    для &amp;lt;tex&amp;gt;j = 1 \ldots n&amp;lt;/tex&amp;gt;&lt;br /&gt;
: &amp;lt;tex&amp;gt;P_{0}(r, r', w'') = \infty&amp;lt;/tex&amp;gt; для &amp;lt;tex&amp;gt;w'' &amp;gt; 0\ldots n&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;C_n(r_{\min},w)&amp;lt;/tex&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;j = 1 \ldots n &amp;lt;/tex&amp;gt; существует &amp;lt;tex&amp;gt;O(k^2W)&amp;lt;/tex&amp;gt; вычислямых значений &amp;lt;tex&amp;gt;P_{j - 1}(r, r', w'')&amp;lt;/tex&amp;gt;, по одному на каждую комбинацию из &amp;lt;tex&amp;gt;r, r', w''&amp;lt;/tex&amp;gt;. По представленной выше формуле, каждое значение &amp;lt;tex&amp;gt;P_{j - 1}(r, r', w'')&amp;lt;/tex&amp;gt; находится с помощью минимизации из &amp;lt;tex&amp;gt;O(W)&amp;lt;/tex&amp;gt; выборов &amp;lt;tex&amp;gt;w' &amp;lt; w''&amp;lt;/tex&amp;gt;. Следовательно, время, требуемое для вычисления значений &amp;lt;tex&amp;gt;P_{j - 1}(r, r', w'')&amp;lt;/tex&amp;gt;, ограниченно &amp;lt;tex&amp;gt;O(k^2W^2)&amp;lt;/tex&amp;gt; на каждой итерации. Всего нам нужно посчитать &amp;lt;tex&amp;gt;O(kW)&amp;lt;/tex&amp;gt; значений &amp;lt;tex&amp;gt;C_j(r,w)&amp;lt;/tex&amp;gt;, по одному на каждую комбинацию &amp;lt;tex&amp;gt;r&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;. Из формулы, приведенной для вычисления &amp;lt;tex&amp;gt;C_j(r,w)&amp;lt;/tex&amp;gt;, каждое значение &amp;lt;tex&amp;gt;C_j(r,w)&amp;lt;/tex&amp;gt; считается с помощью минимизации &amp;lt;tex&amp;gt;O(kW)&amp;lt;/tex&amp;gt; выборов &amp;lt;tex&amp;gt;r', w'&amp;lt;/tex&amp;gt;. Следовательно, время, требуемое для вычисления значений &amp;lt;tex&amp;gt;C_j(r,w)&amp;lt;/tex&amp;gt; на каждой итерации, ограниченно &amp;lt;tex&amp;gt;O(k^2W^2)&amp;lt;/tex&amp;gt;. Максимальный вес вычислимого множества может быть посчитан с помощью нахождения максимального значения &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt; такого, что &amp;lt;tex&amp;gt;C_n(r_{\min},w)&amp;lt;/tex&amp;gt; {{---}} конечно. Сделать это мы можем за &amp;lt;tex&amp;gt;O(W)&amp;lt;/tex&amp;gt;. Итоговая сложность составляет &amp;lt;tex&amp;gt;O(nk^2W^2)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Чтобы создать вычислимое множество с максимальным весом, мы считаем характеристический вектор, учитывая значения &amp;lt;tex&amp;gt;P_{j - 1}(r, r', w'')&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;C_j(r,w)&amp;lt;/tex&amp;gt;. Вычисляем веторы за &amp;lt;tex&amp;gt;O(n^2k^2W)&amp;lt;/tex&amp;gt;, это значение меньше, чем &amp;lt;tex&amp;gt;O(nk^2W^2)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Специальные случаи ===&lt;br /&gt;
Если времена появления и дедлайны идут в одинаковом порядке, то есть &amp;lt;tex&amp;gt;r_1 \leqslant r_2 \leqslant \ldots \leqslant r_n&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;d_1 \leqslant d_2 \leqslant \ldots \leqslant d_n&amp;lt;/tex&amp;gt;, то второй случай никогда не возникает. В этом случае, формула для вычисления &amp;lt;tex&amp;gt;C_j(r,w)&amp;lt;/tex&amp;gt; может быть упрощена:&lt;br /&gt;
:&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;C_{j}(r, w) = \min&lt;br /&gt;
\left \{\begin{array}{ll} C_{j - 1}(r, w)  \\&lt;br /&gt;
\max \{r_j, C_{j - 1}(r, w - w_j) \} + p_j  \end{array} \right. &lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Либо, если мы примем &amp;lt;tex&amp;gt;C_{j}(w) = C_{j}(r_{\min}, w)&amp;lt;/tex&amp;gt;, то:&lt;br /&gt;
:&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;C_{j}(w) = \min&lt;br /&gt;
\left \{\begin{array}{ll} C_{j - 1}(w)  \\&lt;br /&gt;
\max \{r_j, C_{j - 1}(w - w_j) \} + p_j  \end{array} \right. &lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отсюда следует, что мы делаем &amp;lt;tex&amp;gt;O(nW)&amp;lt;/tex&amp;gt; вычислений в этом случае, когда максимальный вес вычислимого множества &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt; такой, что &amp;lt;tex&amp;gt;C_{n}(w)&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;
:&amp;lt;tex&amp;gt;C_j(w) = \min \{ C_{j - 1}(w), C_{j - 1}(w - w_{j}) + p_j\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отсюда следует альтернативное решение для задачи [[1sumwu|&amp;lt;tex&amp;gt;1 \mid\mid \sum w_j U_j&amp;lt;/tex&amp;gt;]], которое работает за &amp;lt;tex&amp;gt;O(n\sum w_j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
*[[1precpmtnrifmax|&amp;lt;tex&amp;gt;1 \mid prec,pmtn,r_i \mid f_{max}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
*[[1sumwu| &amp;lt;tex&amp;gt;1 \mid\mid \sum w_i U_i&amp;lt;/tex&amp;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;
* Peter Brucker «Scheduling Algorithms», fifth edition, Springer — с. 88-93 ISBN 978-3-540-69515-8&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Теория расписаний]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%82%D1%84%D0%B8%D0%B7%D0%B8%D0%BA%D0%B0_6_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81_%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B9&amp;diff=83397</id>
		<title>Матфизика 6 семестр задания с лекций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%82%D1%84%D0%B8%D0%B7%D0%B8%D0%BA%D0%B0_6_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81_%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B9&amp;diff=83397"/>
				<updated>2022-09-01T04:51:36Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
&lt;br /&gt;
Посчитать &amp;lt;tex&amp;gt; (f, \phi) &amp;lt;/tex&amp;gt; (представить через интеграл и упростить если возможно), где &amp;lt;tex&amp;gt; f(x) &amp;lt;/tex&amp;gt; равно:&lt;br /&gt;
* &amp;lt;tex&amp;gt; x^2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt; \sigma(x) &amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt; \sigma(x-x_0) &amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt; \mathit{\Theta}(x) = [x \geqslant 0] &amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt; ln|x| &amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt; \frac{1}{x} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Показать что выполняется:&lt;br /&gt;
* &amp;lt;tex&amp;gt; \mathit{\Theta'} = \sigma &amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt; \sigma^{(n)} =\ (-1)^n \phi^{(n)}(0) &amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt; ln'|x| = \frac{1}{x} &amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt; \alpha \in C^{\infty} ,\ f \in \mathcal{D}' \Rightarrow (\alpha \cdot f)' = \alpha' \cdot f + \alpha \cdot f' \quad (\mathcal{D}' &amp;lt;/tex&amp;gt; {{---}} пространство обобщённых функций &amp;lt;tex&amp;gt; ) &amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt; \ldots &amp;lt;/tex&amp;gt; &lt;br /&gt;
* Здесь что-то было&lt;br /&gt;
* &amp;lt;tex&amp;gt; \ldots &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Решить уравнение:&lt;br /&gt;
* &amp;lt;tex&amp;gt; (x-1)(x-2)y'' = \mathcal{P} \frac{1}{x-1} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Показать что выполняется:&lt;br /&gt;
* &amp;lt;tex&amp;gt; \cos nx \xrightarrow[n \rightarrow \infty]{} 0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt; \sin nx \xrightarrow[n \rightarrow \infty]{} 0 \quad &amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt; e^{inx} \xrightarrow[n \rightarrow \infty]{} 0 \quad &amp;lt;/tex&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%B0%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D1%81%D0%BB%D0%B8%D1%8F%D0%BD%D0%B8%D0%B5%D0%BC&amp;diff=83396</id>
		<title>Многопоточная сортировка слиянием</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%B0%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D1%81%D0%BB%D0%B8%D1%8F%D0%BD%D0%B8%D0%B5%D0%BC&amp;diff=83396"/>
				<updated>2022-09-01T04:51:28Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
Благодаря тому, что [[Сортировка слиянием | сортировка слиянием]] построена на принципе &amp;quot;Разделяй и властвуй&amp;quot;, выполнение данного алгоритма можно весьма эффективно распараллелить. При оценке асимптотики допускается, что возможен запуск неограниченного количества независимых процессов, т.е. процессов с вычислительными ресурсами, не зависящими от других процессов, что на практике не достижимо. Более того, при реализации имеет смысл ограничить количество параллельных потоков.&lt;br /&gt;
&lt;br /&gt;
==Сортировка с однопоточным слиянием==&lt;br /&gt;
Внесем в алгоритм сортировки слиянием следующую модификацию: будем сортировать левую и правую части массива параллельно.&lt;br /&gt;
    '''function''' mergeSortMT(array, left, right):&lt;br /&gt;
        mid = (left + right) / 2&lt;br /&gt;
    &lt;br /&gt;
        '''spawn''' mergeSortMT(array, left, mid)&lt;br /&gt;
        mergeSortMT(array, mid + 1, right)&lt;br /&gt;
        '''sync'''&lt;br /&gt;
    &lt;br /&gt;
        merge(array, left, mid, right)&lt;br /&gt;
&lt;br /&gt;
В данном алгоритме оператор &amp;lt;tex&amp;gt;\mathrm {spawn}&amp;lt;/tex&amp;gt; запускает новый поток, а оператор &amp;lt;tex&amp;gt;\mathrm {sync}&amp;lt;/tex&amp;gt; ожидает завершения этого потока. Функция &amp;lt;tex&amp;gt;\mathrm {merge}&amp;lt;/tex&amp;gt; аналогична одноименной функции из раздела [[Сортировка слиянием#Слияние двух массивов|слияние двух массивов]].&amp;lt;br&amp;gt;&lt;br /&gt;
Несмотря на наличие двух рекурсивных вызовов, при оценке будем считать, что совершается один вызов, т.к. оба вызова выполняются параллельно с одинаковой асимптотикой. Оценим время работы данного алгоритма:  &amp;lt;tex&amp;gt;T(n) = T(\dfrac {n}{2}) + \Theta(n) = \Theta(n)&amp;lt;/tex&amp;gt;. Данная асимптотика достигается при возможности запускать неограниченное количество потоков независимо друг от друга.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Многопоточное слияние==&lt;br /&gt;
Как видно из оценки первого алгоритма, слияние является его узким местом. Попытаемся распараллелить слияние, для чего рассмотрим алгоритм рекурсивного слияния массивов &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;T[left_{1} \dots right_{1}]&amp;lt;/tex&amp;gt; и &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;T[left_{2} \dots right_{2}]&amp;lt;/tex&amp;gt; в массив &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;A[left_{3} \dots right_{3}]&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
# Убедимся, что размер &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;T[left_{1} \dots right_{1}]&amp;lt;/tex&amp;gt; больше либо равен размеру &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;T[left_{2} \dots right_{2}]&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Возьмем &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;x = T[mid_{1}]&amp;lt;/tex&amp;gt; — середину первого массива (&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;x&amp;lt;/tex&amp;gt; также является и медианой этого массива)&lt;br /&gt;
# При помощи [[Целочисленный двоичный поиск|бинарного поиска]] найдем &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;mid_{2}&amp;lt;/tex&amp;gt; такое, что &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;\forall y \in T[left_{2} \dots mid_{2} - 1]: y &amp;lt; x&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;mid_{3} = left_{3} + (mid_{1} - left_{1}) + (mid_{2} - left_{2})&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;A[mid_{3}] = x&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Сольем &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;T[right_{1} \dots mid_{1} - 1]&amp;lt;/tex&amp;gt; и &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;T[right_{2} \dots mid_{2}]&amp;lt;/tex&amp;gt; в &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;A[right_{3} \dots mid_{3} - 1]&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Сольем &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;T[mid_{1} + 1 \dots right_{1}]&amp;lt;/tex&amp;gt; и &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;T[mid_{2} \dots right_{2}]&amp;lt;/tex&amp;gt; в &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;A[mid_{3} + 1 \dots right_{3}]&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Алгоритм показан на рисунке:&lt;br /&gt;
&lt;br /&gt;
[[Файл:MergeMT.png‎|Слияние массивов]]&lt;br /&gt;
&lt;br /&gt;
===Реализация===&lt;br /&gt;
    &amp;lt;font color=green&amp;gt;// если &amp;lt;tex dpi=&amp;quot;120&amp;quot; color=green&amp;gt;right \leqslant left&amp;lt;/tex&amp;gt; возвращает &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;left&amp;lt;/tex&amp;gt;&lt;br /&gt;
    // если &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;x \leqslant T[left]&amp;lt;/tex&amp;gt;, возвращает &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;left&amp;lt;/tex&amp;gt;&lt;br /&gt;
    // иначе возвращает наибольший индекс &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;i&amp;lt;/tex&amp;gt; из отрезка &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;[left, right]&amp;lt;/tex&amp;gt; такой, что &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;array[i - 1] &amp;lt; x&amp;lt;/tex&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
    '''integer''' binarySearch(x, array, left, right)&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;font color=green&amp;gt;// слияние &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;T[left_{1} \dots right_{1}]&amp;lt;/tex&amp;gt; и &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;T[left_{2} \dots right_{2}]&amp;lt;/tex&amp;gt; в &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;A[left_{3} \dots right_{1} - left_{1} + right_{2} - left_{2}]&amp;lt;/tex&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
    '''function''' mergeMT(T, left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt;, right&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt;, left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt;, right&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt;, A, left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{3}&amp;lt;/tex&amp;gt;):&lt;br /&gt;
        n&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt; = right&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt; - left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt; + 1&lt;br /&gt;
        n&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt; = right&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt; - left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt; + 1&lt;br /&gt;
        '''if''' n&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt; &amp;lt; n&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
            swap(left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt;, left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt;)&lt;br /&gt;
            swap(right&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt;, right&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt;)&lt;br /&gt;
            swap(n&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt;, n&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt;)&lt;br /&gt;
    &lt;br /&gt;
        '''if''' n&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt; == 0&lt;br /&gt;
            '''return'''&lt;br /&gt;
        '''else'''&lt;br /&gt;
            mid&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt; = (left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt; + right&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt;) / 2&lt;br /&gt;
            mid&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt; = binarySearch(T[mid&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt;], T, left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt;, right&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt;)&lt;br /&gt;
            mid&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{3}&amp;lt;/tex&amp;gt; = left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{3}&amp;lt;/tex&amp;gt; + (mid&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt; - left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt;) + (mid&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt; - left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt;)&lt;br /&gt;
            A[mid&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{3}&amp;lt;/tex&amp;gt;] = T[mid&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt;]&lt;br /&gt;
            '''spawn''' mergeMT(T, left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt;, mid&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt; - 1, left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt;, mid&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt; - 1, A, left&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{3}&amp;lt;/tex&amp;gt;)&lt;br /&gt;
            mergeMT(T, mid&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt; + 1, right&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{1}&amp;lt;/tex&amp;gt;, mid&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt;, right&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{2}&amp;lt;/tex&amp;gt;, A, mid&amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;_{3}&amp;lt;/tex&amp;gt; + 1)&lt;br /&gt;
            '''sync'''&lt;br /&gt;
&lt;br /&gt;
Оба массива содержат &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;n_{1} + n_{2} = n&amp;lt;/tex&amp;gt; элементов. К моменту рекурсивных вызовов &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;n_{2} \leqslant n_{1}&amp;lt;/tex&amp;gt;, значит,&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;n_{2} = 2 \cdot \dfrac{n_{2}}{2} \leqslant \dfrac{(n_{1} + n_{2})}{2} = \dfrac{n}{2}&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
В худшем случае один из двух рекурсивных вызовов сольет &amp;lt;tex&amp;gt;\dfrac{n_{1}}{2}&amp;lt;/tex&amp;gt; элементов &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;T[left_{1} \dots right_{1}]&amp;lt;/tex&amp;gt; с &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;n_{2}&amp;lt;/tex&amp;gt; элементами &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;T[left_{2} \dots right_{2}]&amp;lt;/tex&amp;gt; и тогда количество элементов первых двух массивов в рекурсивном вызове будет равно&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;\dfrac{n_{1}}{2} + n_{2} \leqslant \dfrac{n_{1}}{2} + \dfrac{n_{2}}{2} + \dfrac{n_{2}}{2} = \dfrac{(n_{1} + n_{2})}{2} + \dfrac{n_{2}}{2} \leqslant \dfrac{n}{2} + \dfrac{n}{4} = \dfrac{3}{4}n&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;Асимптотика каждого вызова функции — &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;\Theta(\log n)&amp;lt;/tex&amp;gt;, т.е. время, затрачиваемое на бинарный поиск. Так как рекурсивные вызовы функции выполняются параллельно, а потоки при оценке независимы, время их выполнения будет равно времени выполнения самого долгого вызова. В худшем случае это &amp;lt;tex&amp;gt;T(\dfrac{3}{4}n)&amp;lt;/tex&amp;gt;. Тогда получим оценку сверху&amp;lt;br&amp;gt;&amp;lt;tex&amp;gt;T_{\mathrm {merge}}(n) = T_{\mathrm {merge}}(\dfrac{3}{4}n) + \Theta(\log n) = \Theta(\log^2 n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Сортировка с многопоточным слиянием==&lt;br /&gt;
Приведем псевдокод алгоритма, использующего слияние из предыдущего раздела, сортирующего элементы &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;A[leftA \dots rightA]&amp;lt;/tex&amp;gt; и помещающего отсортированный массив в &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;B[leftB \dots leftB + rightA - leftA]&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    '''function''' mergeSortMT2(A, leftA, rightA, B, leftB):&lt;br /&gt;
        n = r - p + 1&lt;br /&gt;
        '''if''' n == 1&lt;br /&gt;
            B[leftB] = A[leftA]&lt;br /&gt;
        '''else'''&lt;br /&gt;
            создадим новый массив T[1 &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;\dots&amp;lt;/tex&amp;gt; n]&lt;br /&gt;
            mid = (leftA + rightA) / 2&lt;br /&gt;
            newMid = mid - leftA + 1&lt;br /&gt;
            '''spawn''' mergeSortMT2(A, leftA, mid, T, 1)&lt;br /&gt;
            mergeSortMT2(A, mid + 1, rightA, T, newMid + 1)&lt;br /&gt;
            '''sync'''&lt;br /&gt;
            mergeMT(T, 1, newMid, newMid + 1, n, B, leftB)&lt;br /&gt;
&lt;br /&gt;
Оценим данный алгоритм сверху при условии, что возможен запуск неограниченного количества независимых потоков. Из предыдущих пунктов &amp;lt;tex&amp;gt;T_{\mathrm {mergeSort}}(n) = T_{\mathrm {mergeSort}}(\dfrac{n}{2}) + T_{\mathrm {merge}}(n) = T_{\mathrm {mergeSort}}(\dfrac{n}{2}) + \Theta(\log^2 n) = \Theta(\log^3 n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Оценка при фиксированном числе потоков==&lt;br /&gt;
Понятно, что при отсутствии возможности запуска неограниченного количества независимых потоков, вычислительная сложность многопоточного алгоритма зависит от максимально возможного количества независимых потоков. Обозначим такое количество как &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;N_{ind}&amp;lt;/tex&amp;gt;. Допустим, &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;n&amp;lt;/tex&amp;gt; много больше &amp;lt;tex dpi=&amp;quot;120&amp;quot;&amp;gt;N_{ind}&amp;lt;/tex&amp;gt;, что в общем случае верно для ПК и достаточно больших объемов данных. Оценим приведенные выше алгоритмы с учетом наложенных ограничений и допущений:&amp;lt;br&amp;gt;&lt;br /&gt;
::[[#Сортировка с однопоточным слиянием|Сортировка с однопоточным слиянием]] будет иметь асимптотику &amp;lt;tex&amp;gt;\Theta(\dfrac{n}{N_{ind}}\log \dfrac{n}{N_{ind}} + n) = \Theta(\dfrac{n}{N_{ind}}\log \dfrac{n}{N_{ind}})&amp;lt;/tex&amp;gt;:&lt;br /&gt;
::::&amp;lt;tex&amp;gt;\Theta(\dfrac{n}{N_{ind}}\log \dfrac{n}{N_{ind}})&amp;lt;/tex&amp;gt; операций нужно на последовательную сортировку массива длиной &amp;lt;tex&amp;gt;\dfrac{n}{N_{ind}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
::::&amp;lt;tex dpi=&amp;quot;135&amp;quot;&amp;gt;\Theta(n)&amp;lt;/tex&amp;gt; необходимо на последовательное слияние.&lt;br /&gt;
::[[#Многопоточное слияние|Многопоточное слияние]] будет работать за &amp;lt;tex&amp;gt;\Theta((\dfrac{n}{N_{ind}})^{\log_{\frac{4}{3}}2} + \log n \cdot min(N_{ind}, \log n)=\Theta((\dfrac{n}{N_{ind}})^{\log_{\frac{4}{3}}2})&amp;lt;/tex&amp;gt;:&lt;br /&gt;
::::Прежде чем достигнуть ограничения на создание нового потока, алгоритм углубится на &amp;lt;tex dpi=&amp;quot;110&amp;quot;&amp;gt;min(N_{ind}, \log n)&amp;lt;/tex&amp;gt; уровней вглубь дерева рекурсии, где на каждом уровне выполняется бинпоиск за &amp;lt;tex dpi=&amp;quot;135&amp;quot;&amp;gt;\Theta(\log n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
::::Асимптотика многопоточного слияния при работе в одном потоке по основной теореме рекуррентных соотношений равна &lt;br /&gt;
::::&amp;lt;tex&amp;gt;T_{\mathrm {merge}}'(n) = 2T_{\mathrm {merge}}'(\frac {3}{4}n) + \Theta(\log n) = \Theta(n^{\log_{\frac{4}{3}}2})&amp;lt;/tex&amp;gt;&lt;br /&gt;
::Оценим [[#Сортировка с многопоточным слиянием|сортировку с многопоточным слиянием]] снизу:&lt;br /&gt;
::::Части массива длиной &amp;lt;tex&amp;gt;\dfrac{n}{N_{ind}}&amp;lt;/tex&amp;gt; гарантированно будут сортироваться последовательно, т.к. только алгоритм сортировки запустит к моменту вызова &amp;lt;tex&amp;gt;\mathrm {mergeSortMT2} &amp;lt;/tex&amp;gt; от массива длиной &amp;lt;tex&amp;gt;\dfrac{n}{N_{ind}}&amp;lt;/tex&amp;gt; число потоков, равное &amp;lt;tex dpi=&amp;quot;135&amp;quot;&amp;gt;N_{ind}&amp;lt;/tex&amp;gt;. Тогда по основной теореме рекуррентных соотношений:&lt;br /&gt;
::::&amp;lt;tex&amp;gt;T_{\mathrm {mergeSort}}'(\dfrac{n}{N_{ind}}) = 2T_{\mathrm {mergeSort}}'(\dfrac{n}{2N_{ind}}) + \Theta(\dfrac{n}{N_{ind}})^{\log_{\frac{4}{3}}2} = \Theta(\dfrac{n}{N_{ind}})^{\log_{\frac{4}{3}}2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
Очевидно, что нижняя оценка алгоритма сортировки с многопоточным слиянием выше. Таким образом, при приведенных выше допущениях алгоритм сортировки с однопоточным слиянием эффективнее и его асимптотика составляет &amp;lt;tex&amp;gt;\Theta(\dfrac{n}{N_{ind}}\log \dfrac{n}{N_{ind}})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
*[[Сортировка слиянием]]&lt;br /&gt;
*[[PSRS-сортировка]]&lt;br /&gt;
==Источники информации==&lt;br /&gt;
*Cormen T.H., Leiserson C.E., Rivest R.L., Stein C. {{---}} Introduction to Algorithms, Third Edition&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Сортировки]]&lt;br /&gt;
[[Категория: Многопоточные сортировки]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D1%85_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82_(PCA)&amp;diff=83395</id>
		<title>Метод главных компонент (PCA)</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D1%85_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82_(PCA)&amp;diff=83395"/>
				<updated>2022-09-01T04:51:20Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
[[File:800px-Pca 3d to 2d example v2.png|500px|thumb|right|Применение PCA к данным в трехмерном пространстве]]&lt;br /&gt;
'''Метод главных компонент''' (англ. ''Principal Components Analysis, PCA'') — один из основных способов уменьшить размерность данных, потеряв наименьшее количество информации. Изобретен К. Пирсоном (англ. Karl Pearson) &amp;lt;ref&amp;gt;[https://zenodo.org/record/1430636 Pearson, K. (1901). &amp;quot;On Lines and Planes of Closest Fit to Systems of Points in Space&amp;quot;]&amp;lt;/ref&amp;gt; в 1901 г. Применяется во многих областях, таких как распознавание образов, компьютерное зрение, сжатие данных и т.п. Вычисление главных компонент сводится к вычислению собственных векторов и собственных значений ковариационной матрицы исходных данных или к [[Сингулярное разложение|сингулярному разложению]] матрицы данных. Иногда метод главных компонент называют преобразованием Карунена-Лоэва (англ. ''Karhunen-Loeve'') &amp;lt;ref&amp;gt;[http://fourier.eng.hmc.edu/e161/lectures/klt/node3.html Karhunen-Loeve Transform (KLT)]&amp;lt;/ref&amp;gt; или преобразованием Хотеллинга (англ. ''Hotelling transform'').&lt;br /&gt;
&lt;br /&gt;
==Формальная постановка задачи==&lt;br /&gt;
[[File:Pearson pca example.jpg|300px|thumb|right|Иллюстрация к работе К. Пирсона (1901): даны точки &amp;lt;tex&amp;gt; P_i&amp;lt;/tex&amp;gt; на плоскости, &amp;lt;tex&amp;gt;  p_i&amp;lt;/tex&amp;gt; — расстояние от &amp;lt;tex&amp;gt;  P_i&amp;lt;/tex&amp;gt; до прямой &amp;lt;tex&amp;gt; AB&amp;lt;/tex&amp;gt;. Ищется прямая &amp;lt;tex&amp;gt;  AB&amp;lt;/tex&amp;gt;, минимизирующая сумму &amp;lt;tex&amp;gt;\sum_i p_i^2&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
Пусть имеется $n$ числовых признаков $f_j(x), j = 1, ... , n$. Объекты обучающей выборки будем отождествлять с их признаковыми описаниями: $x_i \equiv (f_1(x_i), ..., f_n(x_i)), i = 1, ..., l$. Рассмотрим матрицу $F$, строки которой соответствуют признаковым описаниям обучающих объектов:&lt;br /&gt;
$$F_{l \times n} =&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
f_1(x_1) &amp;amp; ... &amp;amp; f_n(x_1)\\&lt;br /&gt;
... &amp;amp; ... &amp;amp; ...\\&lt;br /&gt;
f_1(x_l) &amp;amp; ... &amp;amp; f_n(x_l)&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
x_1\\&lt;br /&gt;
...\\&lt;br /&gt;
x_l&lt;br /&gt;
\end{pmatrix}.$$&lt;br /&gt;
&lt;br /&gt;
Обозначим через $z_i = (g_1(x_i), ..., g_m(x_i))$ признаковые описания тех же объектов в новом пространстве $Z = \mathbb{R}^{m}$ меньшей размерности, $m &amp;lt; n$:&lt;br /&gt;
&lt;br /&gt;
$$G_{l \times m} =&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
g_1(x_1) &amp;amp; ... &amp;amp; g_m(x_1)\\&lt;br /&gt;
... &amp;amp; ... &amp;amp; ...\\&lt;br /&gt;
g_1(x_l) &amp;amp; ... &amp;amp; g_m(x_l)&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
z_1\\&lt;br /&gt;
...\\&lt;br /&gt;
z_l&lt;br /&gt;
\end{pmatrix}.$$&lt;br /&gt;
&lt;br /&gt;
Потребуем, чтобы исходные признаковые описания можно было восстановить по новым описаниям с помощью некоторого линейного преобразования, определяемого матрицей $U = (u_{js})_{n \times m}$:&lt;br /&gt;
&lt;br /&gt;
$$\hat{f}_j(x) = \sum_{s = 1}^{m} g_s(x)u_{js}, \; j = 1, ..., n, \; x \in X,$$&lt;br /&gt;
&lt;br /&gt;
или в векторной записи: $\hat{x} = z U^T$. Восстановленное описание $\hat{x}$ не обязано в точности совпадать с исходным описанием $x$, но их отличие на объектах обучающей выборки должно быть как можно меньше при выбранной размерности $m$. Будем искать одновременно и матрицу новых признаковых описаний $G$, и матрицу линейного преобразования $U$, при которых суммарная невязка $\Delta^2(G, U)$ восстановленных описаний минимальна:&lt;br /&gt;
&lt;br /&gt;
$$\Delta^2(G, U) = \sum_{i = 1}^{l} \| \hat{x}_i - x_i \|^2 = \sum_{i = 1}^{l} \| z_i U^T - x_i \|^2 = \| GU^T - F \|^2 \to \mathop{min}_{G, U},$$&lt;br /&gt;
&lt;br /&gt;
где все нормы евклидовы.&lt;br /&gt;
&lt;br /&gt;
Будем предполагать, что матрицы $G$ и $U$ невырождены: $rank \, G = rank \, U = m$. Иначе существовало бы представление $\bar{G} \bar{U}^T = G U^T$ с числом столбцов в матрице $\bar{G}$, меньшим $m$. Поэтому интересны лишь случаи, когда $m \leq rank \, F$.&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;m \leq rank \, F&amp;lt;/tex&amp;gt;, то минимум &amp;lt;tex&amp;gt;\Delta^2(G, U)&amp;lt;/tex&amp;gt; достигается, когда столбцы матрицы &amp;lt;tex&amp;gt;U&amp;lt;/tex&amp;gt; есть собственные векторы &amp;lt;tex&amp;gt;F^T F&amp;lt;/tex&amp;gt;, соответствующие &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; максимальным собственным значениям. При этом &amp;lt;tex&amp;gt;G = F U&amp;lt;/tex&amp;gt;, матрицы &amp;lt;tex&amp;gt;U&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; ортогональны.&lt;br /&gt;
&lt;br /&gt;
|proof = Запишем необходимые условия минимума:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\frac{\partial \Delta^2}{\partial G} = (G U^T - F) U = 0;\\&lt;br /&gt;
\frac{\partial \Delta^2}{\partial U} = G^T (G U^T - F) = 0.&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поскольку искомые матрицы $G$ и $U$ невырождены, отсюда следует:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
G = F U (U^T U)^{-1};\\&lt;br /&gt;
U = F^T G (G^T G)^{-1}.&lt;br /&gt;
\end{cases} &lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Функционал $\Delta^2(G, U)$ зависит только от произведения матриц $G U^T$, поэтому решение задачи $\Delta^2(G, U) \to \mathop{min}_{G, U}$ определено с точностью до произвольного невырожденного преобразования $R: G U^T = (G R) (R^{-1} U^T)$. Распорядимся свободой выбора $R$ так, чтобы матрицы $U^T U$ и $G^T G$ оказались диагональными. Покажем, что это всегда возможно.&lt;br /&gt;
&lt;br /&gt;
Пусть $\tilde{G} \tilde{U}^T$ {{---}} произвольное решение задачи.&lt;br /&gt;
&lt;br /&gt;
Матрица $\tilde{U}^T \tilde{U}$ симметричная, невырожденная, положительно определенная, поэтому существует невырожденная матрица $S_{m \times m}$ такая, что $S^{-1} \tilde{U}^T \tilde{U} (S^{-1})^T = I_m$.&lt;br /&gt;
&lt;br /&gt;
Матрица $S^T \tilde{G}^T \tilde{G} S$ симметричная и невырожденная, поэтому существует ортогональная матрица $T_{m \times m}$ такая, что $T^T (S^T \tilde{G}^T \tilde{G} S) T = diag(\lambda_1, ..., \lambda_m) \equiv \Lambda$ {{---}} диагональная матрица. По определению ортогональности $T^T T = I_m$.&lt;br /&gt;
&lt;br /&gt;
Преобразование $R = S T$ невырождено. Положим $G = \tilde{G} R$, $U^T = R^{-1} \tilde{U}^T$. Тогда&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;G^T G = T^T (S^T \tilde{G}^T \tilde{G} S) T = \Lambda;\\ U^T U = T^{-1} (S^{-1} \tilde{U}^T \tilde{U} (S^{-1})^T) (T^{-1})^T = (T^T T)^{-1} = I_m.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В силу $G U^T = \tilde{G} \tilde{U}^T$ матрицы $G$ и $U$ являются решением задачи $\Delta^2(G, U) \to \mathop{min}_{G, U}$ и удовлетворяют необходимому условию минимума. Подставим матрицы $G$ и $U$ в&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
G = F U (U^T U)^{-1};\\ U = F^T G (G^T G)^{-1}. &lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Благодаря диагональности $G^T G$ и $U^T U$ соотношения существенно упростятся:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
G = F U;\\&lt;br /&gt;
U \Lambda = F^T G.&lt;br /&gt;
\end{cases} &lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подставим первое соотношение во второе, получим $U \Lambda = F^T F U$.  Это означает, что столбцы матрицы $U$ обязаны быть собственными векторами матрицы $F^T F$, а диагональные элементы $\lambda_1, ..., \lambda_m$ - соответствующими им собственными значениями.&lt;br /&gt;
&lt;br /&gt;
Аналогично, подставив второе соотношение в первое, получим $G \Lambda = F F^T G$, то есть столбцы матрицы $G$ являются собственными векторами $F F^T$, соответствующими тем же самым собственным значениям.&lt;br /&gt;
&lt;br /&gt;
Подставляя $G$ и $U$ в функционал $\Delta^2(G, U)$, находим:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Delta^2(G, U)&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;\| F - G U^T \|^2&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;tr \, (F^T - U G^t)(F - G U^T)&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;tr \, F^T (F - G U^T)&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;tr \, F^T F - tr \, F^T G U^T&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;\| F \|^2 - tr \, U \Lambda U^T&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;\| F \|^2 - tr \, \Lambda&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;\sum_{j = 1}^{n} \lambda_j - \sum_{j = 1}^{m} \lambda_j - \sum_{j = m + 1}^{n} \lambda_j,&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где $\lambda_1 , ..., \lambda_n$ -  все собственные значения матрицы $F^T F$.  Минимум $\Delta^2$ достигается, когда $\lambda_1, ..., \lambda_m$ {{---}} наибольшие $m$ из $n$ собственных значений.&lt;br /&gt;
&lt;br /&gt;
Собственные векторы $u_1, ..., u_m$, отвечающие максимальным собственным значениям, называют ''главными компонентами''.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Свойства==&lt;br /&gt;
&lt;br /&gt;
===Связь с сингулярным разложением===&lt;br /&gt;
&lt;br /&gt;
Если $m = n$, то $\Delta^2(G, U) = 0$. В этом случае представление $F = G U^T$ является точным и совпадает с сингулярным разложением: $F = G U^T = V D U^T$, если положить $G = V D$ и $\Lambda = D^2$. При этом матрица $V$ ортогональна: $V^T V = I_m$.&lt;br /&gt;
&lt;br /&gt;
Если $m &amp;lt; n$, то представление $F \approx G U^T$ является приближённым. Сингулярное разложение матрицы $G U^T$ получается из сингулярного разложения матрицы $F$ путём отбрасывания (обнуления) $n - m$ минимальных собственных значений.&lt;br /&gt;
&lt;br /&gt;
===Преобразование Карунена–Лоэва===&lt;br /&gt;
&lt;br /&gt;
Диагональность матрицы $G^T G = \Lambda$ означает, что новые признаки $g_1, ..., g_m$ не коррелируют на объектах из обучающей выборки. Ортогональное преобразование $U$ называют ''декоррелирующим'' или преобразованием ''Карунена–Лоэва''. Если $m = n$, то о прямое и обратное преобразование вычисляются с помощью одной и той же матрицы $U: F = G U^T$ и $G = F U$.&lt;br /&gt;
&lt;br /&gt;
===Эффективная размерность===&lt;br /&gt;
&lt;br /&gt;
Главные компоненты содержат основную информацию о матрице $F$. Число главных компонент $m$ называют также ''эффективной размерностью'' задачи. На практике её определяют следующим образом. Все собственные значения матрицы $F^T F$ упорядочиваются по убыванию: $\lambda_1 \geq ... \geq \lambda_n \geq 0$. Задаётся пороговое значение $\epsilon \in [0, 1]$, достаточно близкое к нулю, и определяется наименьшее целое $m$, при котором относительная погрешность приближения матрицы $F$ не превышает $\epsilon$:&lt;br /&gt;
&lt;br /&gt;
$$E(m) = \frac{\| G U^T - F \|^2}{\| F \|^2} = \frac{\lambda_{m + 1} + ... + \lambda_n}{\lambda_1 + ... + \lambda_n} \leq \epsilon .$$&lt;br /&gt;
&lt;br /&gt;
Величина $E(m)$ показывает, какая доля информации теряется при замене исходных признаковых описаний длины $n$ на более короткие описания длины $m$. Метод главных компонент особенно эффективен в тех случаях, когда $E(m)$ оказывается малым уже при малых значениях $m$. Если задать число $\epsilon$ из априорных соображений не представляется возможным, прибегают к ''критерию «крутого обрыва»''.  На графике $E(m)$ отмечается то значение $m$, при котором происходит резкий скачок: $E(m - 1) \gg E(m)$, при условии, что $E(m)$ уже достаточно мало.&lt;br /&gt;
&lt;br /&gt;
==Визуализация многомерных данных==&lt;br /&gt;
&lt;br /&gt;
[[File:Pca dim reduction.png|650px|thumb|right|Уменьшение размерности данных с помощью PCA]]&lt;br /&gt;
Метод главных компонент часто используется для представления многомерной выборки данных на двумерном графике. Для этого полагают $m = 2$ и полученные пары значений $(g_1(x_i), g_2(x_i)), i = 1, ..., l$,  наносят как точки на график. Проекция на главные компоненты является наименее искаженной из всех линейных проекций многомерной выборки на какую-либо пару осей. Как правило, в осях главных компонент удаётся увидеть наиболее существенные особенности исходных данных, даже несмотря на неизбежные искажения. В частности, можно судить о наличии кластерных структур и выбросов. Две оси $g_1$ и $g_2$ отражают «две основные тенденции» в данных. Иногда их удаётся интерпретировать, если внимательно изучить, какие точки на графике являются «самыми левыми», «самыми правыми», «самыми верхними» и «самыми нижними». Этот вид анализа не позволяет делать точные количественные выводы и обычно используется&lt;br /&gt;
с целью понимания данных. Аналогичную роль играют многомерное шкалирование &amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BC%D0%B5%D1%80%D0%BD%D0%BE%D0%B5_%D1%88%D0%BA%D0%B0%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 Многомерное шкалирование]&amp;lt;/ref&amp;gt; и карты Кохонена &amp;lt;ref name=Cohonen&amp;gt; [https://ru.wikipedia.org/wiki/%D0%A1%D0%B0%D0%BC%D0%BE%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D1%83%D1%8E%D1%89%D0%B0%D1%8F%D1%81%D1%8F_%D0%BA%D0%B0%D1%80%D1%82%D0%B0_%D0%9A%D0%BE%D1%85%D0%BE%D0%BD%D0%B5%D0%BD%D0%B0 Самоорганизующаяся карта Кохонена]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Пределы применимости и ограничения эффективности метода==&lt;br /&gt;
&lt;br /&gt;
Метод главных компонент применим всегда. Распространённое утверждение о том, что он применим только к нормально распределённым данным (или для распределений, близких к нормальным) неверно: в исходной формулировке К. Пирсона ставится задача об ''аппроксимации'' конечного множества данных и отсутствует даже гипотеза о их статистическом порождении, не говоря уж о распределении.&lt;br /&gt;
&lt;br /&gt;
Однако метод не всегда эффективно снижает размерность при заданных ограничениях на точность $E(m)$. Прямые и плоскости не всегда обеспечивают хорошую аппроксимацию. Например, данные могут с хорошей точностью следовать какой-нибудь кривой, а эта кривая может быть сложно расположена в пространстве данных. В этом случае метод главных компонент для приемлемой точности потребует нескольких компонент (вместо одной), или вообще не даст снижения размерности при приемлемой точности.&lt;br /&gt;
&lt;br /&gt;
Больше неприятностей могут доставить данные сложной топологии. Для их аппроксимации также изобретены различные методы, например самоорганизующиеся карты Кохонена &amp;lt;ref name=Cohonen /&amp;gt; или нейронный газ &amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D0%B0%D0%B7 Нейронный газ]&amp;lt;/ref&amp;gt;. Если данные статистически порождены с распределением, сильно отличающимся от нормального, то для аппроксимации распределения полезно перейти от главных компонент к независимым компонентам &amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%BD%D0%B5%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D1%8B%D1%85_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82 Анализ независимых компонент]&amp;lt;/ref&amp;gt;, которые уже не ортогональны в исходном скалярном произведении. Наконец, для изотропного распределения (даже нормального) вместо эллипсоида рассеяния получаем шар, и уменьшить размерность методами аппроксимации невозможно.&lt;br /&gt;
&lt;br /&gt;
==Примеры кода==&lt;br /&gt;
===Пример кода scikit-learn===&lt;br /&gt;
Пример применения PCA к датасету Iris для уменьшения размерности:&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:#3D9970&amp;gt;# Импорт библиотек&amp;lt;/span&amp;gt;&lt;br /&gt;
  import numpy as np&lt;br /&gt;
  import matplotlib.pyplot as plt&lt;br /&gt;
  from sklearn import decomposition&lt;br /&gt;
  from sklearn import datasets&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:#3D9970&amp;gt;# Загрузка данных&amp;lt;/span&amp;gt;&lt;br /&gt;
  centers = [[1, 1], [-1, -1], [1, -1]]&lt;br /&gt;
  iris = datasets.load_iris()&lt;br /&gt;
  X = iris.data&lt;br /&gt;
  y = iris.target&lt;br /&gt;
&lt;br /&gt;
  [[File:Pca iris example.png|275px|thumb|right|Применения PCA к датасету Iris]]&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:#3D9970&amp;gt;# Преобразование данных датасета Iris, уменьшающее размерность до 2&amp;lt;/span&amp;gt;&lt;br /&gt;
  pca = decomposition.PCA(n_components=3)&lt;br /&gt;
  pca.fit(X)&lt;br /&gt;
  X = pca.transform(X)&lt;br /&gt;
  y = np.choose(y, [1, 2, 0]).astype(np.float)&lt;br /&gt;
  plt.clf()&lt;br /&gt;
  plt.cla()&lt;br /&gt;
  plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.nipy_spectral, edgecolor='k')&lt;br /&gt;
  plt.xlabel(&amp;quot;PC1&amp;quot;)&lt;br /&gt;
  plt.ylabel(&amp;quot;PC2&amp;quot;)&lt;br /&gt;
  plt.show()&lt;br /&gt;
&lt;br /&gt;
=== Пример на языке R ===&lt;br /&gt;
{{Main|Примеры кода на R}}&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;gray&amp;quot;&amp;gt;# importing library and its' dependencies&amp;lt;/font&amp;gt;&lt;br /&gt;
 library(h2o)&lt;br /&gt;
 h2o.init()&lt;br /&gt;
 &lt;br /&gt;
 path &amp;lt;- system.file(&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&amp;quot;extdata&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&amp;quot;data.csv&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#660099&amp;quot;&amp;gt;package&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&amp;quot;h2o&amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
 data &amp;lt;- h2o.uploadFile(&amp;lt;font color=&amp;quot;#660099&amp;quot;&amp;gt;path&amp;lt;/font&amp;gt; = data)&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;font color=&amp;quot;gray&amp;quot;&amp;gt;# evaluating&amp;lt;/font&amp;gt;&lt;br /&gt;
 h2o.prcomp(&amp;lt;font color=&amp;quot;#660099&amp;quot;&amp;gt;training_frame&amp;lt;/font&amp;gt; = data, &amp;lt;font color=&amp;quot;#660099&amp;quot;&amp;gt;k&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;8&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#660099&amp;quot;&amp;gt;transform&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&amp;quot;STANDARDIZE&amp;quot;&amp;lt;/font&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;
&lt;br /&gt;
#[http://www.machinelearning.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D1%85_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82 machinelearning.ru — Метод главных компонент]&lt;br /&gt;
#[https://www.youtube.com/watch?v=wcJ0nSUr7ws Лекция &amp;quot;Регрессионный анализ и метод главных компонентов&amp;quot;] {{---}} К.В. Воронцов, курс &amp;quot;Машинное обучение&amp;quot; 2014&lt;br /&gt;
#[http://research.cs.tamu.edu/prism/lectures/pr/pr_l9.pdf PCA] {{---}} курс ML Texas A&amp;amp;M University&lt;br /&gt;
#[https://en.wikipedia.org/wiki/Principal_component_analysis Principal Component Analysis] {{---}} статья про Principal Component Analysis в Wikipedia&lt;br /&gt;
#[https://towardsdatascience.com/understanding-pca-fae3e243731d Understanding PCA]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Уменьшение размерности]]&lt;br /&gt;
[[Категория: Метод главных компонент]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9D%D0%B5%D0%BF%D0%BE%D0%BB%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B8_null&amp;diff=83394</id>
		<title>Неполные данные и null</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9D%D0%B5%D0%BF%D0%BE%D0%BB%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B8_null&amp;diff=83394"/>
				<updated>2022-09-01T04:51:12Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
== Что означает null ==&lt;br /&gt;
Представим себе таблицы в БД университета ИТМО &lt;br /&gt;
* ''Students(StudentId, StudentName, GroupId)''&lt;br /&gt;
* ''Groups(GroupId, GroupName)''&lt;br /&gt;
Что может означать тот факт, что у студента '''null''' в столбце GroupId?&lt;br /&gt;
* Значение неизвестно (нет информации, из какой группы студент)&lt;br /&gt;
* Значение неверно (студент учится в какой-то группе, но эта группа не представлена в БД)&lt;br /&gt;
* Значение еще/уже не существует (студент был зачислен, но еще не распределен в группу или уже отчислен)&lt;br /&gt;
* Значение не имеет смысла (студент из другого университета, который пришел с какими-то целями в ИТМО)&lt;br /&gt;
* Значение недоступно (недостаточно прав узнать группу)&lt;br /&gt;
На основе этих предположений можно сделать вывод, что значение '''null''' сильно зависит от контекста (какую предметную область мы моделируем итд.).&amp;lt;br&amp;gt; &lt;br /&gt;
Вполне возможно, что возникнет необходимость различать разные виды того, что значение в том или ином смысле отсутствует.&lt;br /&gt;
== Можно ли обойтись без null? ==&lt;br /&gt;
Как представить кортеж с неопределенными частями в нашем случае?&lt;br /&gt;
* Разбить на 2 группы и сделать необязательную связь 1:1. В таком случае, в дополнительной таблице будет запись ''(StudentId, GroupId)'' тогда и только тогда, когда у студента определена группа&lt;br /&gt;
=== Где еще появляется null ===&lt;br /&gt;
* Результаты внешних соединений&lt;br /&gt;
* Результаты множественных операций&lt;br /&gt;
Оказывается, что в некоторых случаях без null не обойтись и надо уметь с ним работать.&lt;br /&gt;
== Тернарная логика с использованием null ==&lt;br /&gt;
С точки зрения SQL, результат логического выражения может быть ''true'', ''false'' или ''unknown''.&amp;lt;br&amp;gt;&lt;br /&gt;
С другой стороны есть тип ''boolean'', и у него есть 3 значения: ''true'', ''false'' и '''''null''''' &amp;lt;br&amp;gt;&lt;br /&gt;
То есть формально ''unknown'' - это результат вычисления, а '''''null''''' - это конкретное значение, которое может быть записано в БД. На практике ''unknown'' представляется значением '''''null''''', и это различие не будет иметь большого значения.&lt;br /&gt;
=== Конъюнкция ===&lt;br /&gt;
{| style=&amp;quot;background-color:#CCC;margin:0.5px;text-align:center&amp;quot;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE;color:#00F&amp;quot;| &amp;lt;tex&amp;gt;\bf{and}&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{true}&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{unknown}&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{false}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{true}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;unknown&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{unknown}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;unknown&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;unknown&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{false}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Дизъюнкция ===&lt;br /&gt;
{| style=&amp;quot;background-color:#CCC;margin:0.5px;text-align:center&amp;quot;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE;color:#00F&amp;quot;| &amp;lt;tex&amp;gt;\bf{or}&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{true}&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{unknown}&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{false}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{true}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{unknown}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;unknown&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;unknown&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{false}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;unknown&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Отрицание ===&lt;br /&gt;
{| style=&amp;quot;background-color:#CCC;margin:0.5px;text-align:center&amp;quot;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE;color:#00F&amp;quot;| &amp;lt;tex&amp;gt;&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{true}&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{unknown}&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{false}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;color:#00F;;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{not}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;unknown&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Сравнение ===&lt;br /&gt;
==== Равенство ====&lt;br /&gt;
{| style=&amp;quot;background-color:#CCC;margin:0.5px;text-align:center&amp;quot;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE;color:#00F&amp;quot;| &amp;lt;tex&amp;gt;\bf{=}&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{true}&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{unknown}&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{false}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{true}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;unknown&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{unknown}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;unknown&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;unknown&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;unknown&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{false}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;unknown&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== is ====&lt;br /&gt;
{| style=&amp;quot;background-color:#CCC;margin:0.5px;text-align:center&amp;quot;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE;color:#00F&amp;quot;| &amp;lt;tex&amp;gt;&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{true}&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{unknown}&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background-color:#EEE&amp;quot;| &amp;lt;tex&amp;gt;\bf{false}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;color:#00F;;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{is\ true}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;color:#00F;;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{is\ unknown}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;color:#00F;;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{is\ false}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;color:#00F;;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{is\ not\ true}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;color:#00F;;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{is\ not\ unknown}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#EEE;color:#00F;;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;\bf{is\ not\ false}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;true&amp;lt;/tex&amp;gt;&lt;br /&gt;
|style=&amp;quot;background-color:#FFF;padding:2px 30px&amp;quot;| &amp;lt;tex&amp;gt;false&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Проблемы при работе с null ==&lt;br /&gt;
При работе с '''null''' в процессе разработки БД, во избежание непредвиденных ошибок, необъодимо заранее ознакомиться с тем, какие проблемы могут возникнуть.&lt;br /&gt;
=== Вывод логических выражений ===&lt;br /&gt;
В новой тернарной логике работают не все правила преобразований, присущие двоичной.&lt;br /&gt;
Например, нельзя полагать, что &amp;lt;tex&amp;gt;(A\ \vee\ \neg\ A)&amp;lt;/tex&amp;gt; всегда истинно, потому что теперь может получиться ''unknown''. &amp;lt;br&amp;gt;&lt;br /&gt;
Поэтому при каждом преобразовании троичного логического выражения, лучше сверяться с таблицами истинности.&lt;br /&gt;
&lt;br /&gt;
=== Скалярные операции, порождающие null ===&lt;br /&gt;
Следующие операции с '''null''' порождают '''null''', и иногда это может сбивать с толку начинающих разработчиков.&lt;br /&gt;
* &amp;lt;tex&amp;gt;=&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;&amp;lt;&amp;gt;&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;&amp;lt;&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;&amp;lt;=&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;&amp;gt;&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;&amp;gt;=&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;+&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;−&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;*&amp;lt;/tex&amp;gt;,&amp;lt;tex&amp;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;in&amp;lt;/tex&amp;gt;&lt;br /&gt;
Рассмотрим несколько примеров.&lt;br /&gt;
 &amp;lt;font color = blue&amp;gt;select&amp;lt;/font&amp;gt; (1 + &amp;lt;font color = blue&amp;gt;null&amp;lt;/font&amp;gt;) &amp;lt;font color = blue&amp;gt;from&amp;lt;/font&amp;gt; Students;&lt;br /&gt;
Не смотря на то, что этот запрос не несет большого смысла, на его примере можно убедиться, что в арифметических операциях '''null''' &amp;quot;заразен&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color = blue&amp;gt;select&amp;lt;/font&amp;gt; StudentId &amp;lt;font color = blue&amp;gt;from&amp;lt;/font&amp;gt; Students where GroupId = null;&lt;br /&gt;
Это частая ошибка, сравнение с '''''null''''' дает ''unknown'', а значит запрос вернет пустую таблицу.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Говоря об операции сравнения, стоит отметить, что она не транзитивна и не рефлексивна.&lt;br /&gt;
* &amp;lt;tex&amp;gt;x\ =\ x&amp;lt;/tex&amp;gt; - ''true'' или '''''null'''''&lt;br /&gt;
* &amp;lt;tex&amp;gt;x\ &amp;lt;&amp;gt;\ x&amp;lt;/tex&amp;gt; - ''true'' или '''''null'''''&lt;br /&gt;
* &amp;lt;tex&amp;gt;x\ or\ x&amp;lt;/tex&amp;gt; - ''true'' или '''''null'''''&lt;br /&gt;
* &amp;lt;tex&amp;gt;x\ or\ not\ x&amp;lt;/tex&amp;gt; - ''true'' или '''''null'''''&lt;br /&gt;
* &amp;lt;tex&amp;gt;x\ and\ not\ x&amp;lt;/tex&amp;gt; - ''false'' или '''''null'''''&lt;br /&gt;
&lt;br /&gt;
=== Дубликаты и null ===&lt;br /&gt;
Так как null ≠ null, сравнения кортежей, содержащих null не обладают интуитивными свойствами, например:&lt;br /&gt;
* &amp;lt;tex&amp;gt;R \cup 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 \cap 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 \bowtie R&amp;lt;/tex&amp;gt; - не всегда &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Неинтуитивность null ===&lt;br /&gt;
Рассмотрим запрос, для нахождения студентов не из группы 'M34391'.&lt;br /&gt;
 &amp;lt;font color = blue&amp;gt;select&amp;lt;/font&amp;gt; * &amp;lt;font color = blue&amp;gt;from&amp;lt;/font&amp;gt; Students &amp;lt;font color = blue&amp;gt;where&amp;lt;/font&amp;gt; GroupId &amp;lt;&amp;gt; &amp;lt;font color = green&amp;gt;'M34391'&amp;lt;/font&amp;gt;&lt;br /&gt;
Корректность запроса зависит от смысла '''null'''. Неясно, надо ли возвращать в этом запросе студента, о котором нет информации, в какой группе он учится.&lt;br /&gt;
&lt;br /&gt;
Следующий запрос, хоть и выглядит странно, предполагает просто поиск всевозможных студентов&lt;br /&gt;
 &amp;lt;font color = blue&amp;gt;select&amp;lt;/font&amp;gt; * &amp;lt;font color = blue&amp;gt;from&amp;lt;/font&amp;gt; Students &amp;lt;font color = blue&amp;gt;where&amp;lt;/font&amp;gt; GroupId &amp;lt;&amp;gt; &amp;lt;font color = green&amp;gt;'M34391'&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color = blue&amp;gt;union&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color = blue&amp;gt;select&amp;lt;/font&amp;gt; * &amp;lt;font color = blue&amp;gt;from&amp;lt;/font&amp;gt; Students &amp;lt;font color = blue&amp;gt;where&amp;lt;/font&amp;gt; GroupId = &amp;lt;font color = green&amp;gt;'M34391'&amp;lt;/font&amp;gt;&lt;br /&gt;
Но из-за наличия '''null''', этот запрос не отработает так, как предполагалось. Если ''GroupId'' студента '''''null''''', то сравнение не вернет ''true'', а значит в результате это учтено не будет. &amp;lt;br&amp;gt;&lt;br /&gt;
Подробнее у работе функции &amp;lt;font color = blue&amp;gt;where&amp;lt;/font&amp;gt; будет рассказано в следующем разделе.&lt;br /&gt;
&lt;br /&gt;
== Работа с null в SQL ==&lt;br /&gt;
Несмотря на множество проблем, описанных выше, в SQL существуют механизмы, позволяющие корректно обработать '''null'''.&lt;br /&gt;
=== Проверки значений ===&lt;br /&gt;
Для сравнения с '''null''' используется &amp;lt;font color = blue&amp;gt;is null&amp;lt;/font&amp;gt; (или &amp;lt;font color = blue&amp;gt;is not null&amp;lt;/font&amp;gt;).&lt;br /&gt;
Получить всех студентов с '''''null''''' в поле ''GroupId'' можно следующим образом:&lt;br /&gt;
 &amp;lt;font color = blue&amp;gt;select&amp;lt;/font&amp;gt; StudentId &amp;lt;font color = blue&amp;gt;from&amp;lt;/font&amp;gt; Students &amp;lt;font color = blue&amp;gt;where&amp;lt;/font&amp;gt; GroupId &amp;lt;font color = blue&amp;gt;is null&amp;lt;/font&amp;gt;;&lt;br /&gt;
В общем виде синтаксис проверки значений выглядит следующим образом:&lt;br /&gt;
&amp;lt;font color = red&amp;gt;значение&amp;lt;/font&amp;gt; &amp;lt;font color = blue&amp;gt;is&amp;lt;/font&amp;gt; &amp;lt;font color = red&amp;gt;[&amp;lt;/font&amp;gt;&amp;lt;font color = blue&amp;gt;not&amp;lt;/font&amp;gt;&amp;lt;font color = red&amp;gt;]&amp;lt;/font&amp;gt; &amp;lt;font color = red&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;font color = blue&amp;gt;null&amp;lt;/font&amp;gt;|true|false|unknown&amp;lt;font color = red&amp;gt;}&amp;lt;/font&amp;gt;, например:&lt;br /&gt;
* x &amp;lt;font color = blue&amp;gt;is not&amp;lt;/font&amp;gt; true&lt;br /&gt;
* x &amp;lt;font color = blue&amp;gt;or&amp;lt;/font&amp;gt; x &amp;lt;font color = blue&amp;gt;is not null&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так же в SQL существует функция '''''coalesce(v1, v2, ...)''''', которая принимает произвольное число аргументов и возвращает первый не '''не null'''. Если все аргументы '''null''', то возвращает '''null'''.&lt;br /&gt;
&lt;br /&gt;
=== Ключи и null ===&lt;br /&gt;
Можно использовать null:&lt;br /&gt;
* Альтернативные ключи&lt;br /&gt;
* Внешние ключи&lt;br /&gt;
** Простые&lt;br /&gt;
** Составные, отсутствующие целиком&lt;br /&gt;
'''Первичные ключи не могут содержать null.'''&lt;br /&gt;
&lt;br /&gt;
=== Предикаты ===&lt;br /&gt;
==== DML ====&lt;br /&gt;
&amp;lt;font color = blue&amp;gt;where&amp;lt;/font&amp;gt; и &amp;lt;font color = blue&amp;gt;having&amp;lt;/font&amp;gt; считают истинным предикат '''только если он вернул ''true'''''&lt;br /&gt;
Зная этот факт можно, например убедиться, что ''false'' &amp;lt;font color = blue&amp;gt;and&amp;lt;/font&amp;gt; ''unknown'' дает ''false''. Следующий запрос вернет 1:&lt;br /&gt;
 &amp;lt;font color = blue&amp;gt;select&amp;lt;/font&amp;gt; 1 &amp;lt;font color = blue&amp;gt;where not&amp;lt;/font&amp;gt; (0 = 1 &amp;lt;font color = blue&amp;gt;and&amp;lt;/font&amp;gt; 0 = &amp;lt;font color = blue&amp;gt;null&amp;lt;/font&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==== DDL ====&lt;br /&gt;
C точки зрения &amp;lt;font color = blue&amp;gt;check&amp;lt;/font&amp;gt; constraint-ов не подходит только ''false''. ''Unknown'' превращается в ''true''&lt;br /&gt;
&lt;br /&gt;
=== Различимость ===&lt;br /&gt;
Два '''null''' не равны и не различимы. Это важно для &amp;lt;font color = blue&amp;gt;distinct&amp;lt;/font&amp;gt; и &amp;lt;font color = blue&amp;gt;group by&amp;lt;/font&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Например, кортежи ''(1, '''null''')'' и ''(1, '''null''')'' склеятся в случае &amp;lt;font color = blue&amp;gt;distinct&amp;lt;/font&amp;gt; и не породят разные группы в случае &amp;lt;font color = blue&amp;gt;group by&amp;lt;/font&amp;gt;, т.к. не различимы&lt;br /&gt;
&lt;br /&gt;
=== Типы столбцов ===&lt;br /&gt;
В SQL столбцы могут быть &amp;lt;font color = blue&amp;gt;nullable&amp;lt;/font&amp;gt; (по умолчанию) и не &amp;lt;font color = blue&amp;gt;nullable&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color&amp;gt;birthday date&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color&amp;gt;birthday date&amp;lt;/font&amp;gt; &amp;lt;font color = blue&amp;gt;not null&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перед созданием &amp;lt;font color = blue&amp;gt;nullable&amp;lt;/font&amp;gt; столбца, рекомендуется дополнительно обдумать, какой конкретно смысл вкладывается в '''null''' в данном случае, не скажется ли это негативно на остальных запросах, в случае, если начать его использовать. Если есть возможность, во избежание дополнительных проблем, описанных выше, лучше объявлять столбцы '''not null'''.&lt;br /&gt;
&lt;br /&gt;
=== Прочее ===&lt;br /&gt;
* &amp;lt;font color = blue&amp;gt;exists&amp;lt;/font&amp;gt;&lt;br /&gt;
** возвращает ''true'' или 'false'&lt;br /&gt;
** если внутри получились только строки, состоящие из '''null''', то вернет так же ''false''&lt;br /&gt;
* агрегирующие функции (&amp;lt;font color = blue&amp;gt;count&amp;lt;/font&amp;gt;, &amp;lt;font color = blue&amp;gt;sum&amp;lt;/font&amp;gt;, &amp;lt;font color = blue&amp;gt;avg&amp;lt;/font&amp;gt; и т.д.)&lt;br /&gt;
** пропускают '''''null''''', т.е. не учитывают его при подсчете&lt;br /&gt;
** при отсутствии аргументов, отличных от '''''null''''', возвращают '''''null'''''&lt;br /&gt;
** исключением является &amp;lt;font color = blue&amp;gt;count&amp;lt;/font&amp;gt;(*), что просто считает количество строк&lt;br /&gt;
* &amp;lt;font color = blue&amp;gt;order by&amp;lt;/font&amp;gt;&lt;br /&gt;
** Помимо указаний порядка сортировки (asc или desc), можно указывать, куда ставить '''''null'''-ы'' - в начало или в конец. Например &amp;lt;font color = blue&amp;gt;order by&amp;lt;/font&amp;gt; year nulls first. По умолчанию '''''null'''-ы'' складываются либо в начало, либо в конец, это нужно уточнять в документации к конкретной СУБД.&lt;/div&gt;</summary>
		<author><name>91.212.153.123</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%D1%8B_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D0%B8%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=83393</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%D1%8B_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D0%B8%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=83393"/>
				<updated>2022-09-01T04:51:05Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
==Заливка(flooding)==&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;
==Маршрутизация по вектору расстояний(distance vector routing)==&lt;br /&gt;
Алгоритмы маршрутизации работают опираясь на таблицы(называемые векторами), поддерживаемые всеми маршрутизаторами и содержащие сведения о кратчайших путях к каждому из возможных адресатов и о том, какую линию соединения при этом использовать. Для обновления этих таблиц маршрутизаторы периодически обмениваются информацией с соседними маршрутизаторами.&lt;br /&gt;
&lt;br /&gt;
Каждая запись таблицы состоит из двух частей: предпочитаемые номер линии для данного адресата и предполагаемое расстояние до него. Будем считать, что каждый маршрутизатор знает расстояние до своих соседей(если расстояние изменяется в транзитных участках то оно равно 1, а если же расстояние измеряется временем задержки распространения, то маршрутизатор может измерить его с помощью специального пакета &amp;lt;tex&amp;gt;ECHO&amp;lt;/tex&amp;gt;, в который отправитель помещает время отправления, а получатель отправляет обратно как можно быстрее). Каждые &amp;lt;tex&amp;gt;T&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;Y&amp;lt;/tex&amp;gt;, обозначим его &amp;lt;tex&amp;gt;T_{xy}&amp;lt;/tex&amp;gt;. Если маршрутизатор знает, что расстояние между ним и маршрутизатором &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; равно &amp;lt;tex&amp;gt;T_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;T_x + T_{xy}&amp;lt;/tex&amp;gt;. Выполнив такие расчеты для всех своих соседей маршрутизатор может выбрать наилучшие пути и поместить их в соответствующую запись таблицы.&lt;br /&gt;
&lt;br /&gt;
====Проблема счета до бесконечности====&lt;br /&gt;
Рассмотрим ситуацию: пусть в сети 5 маршрутизаторов &amp;lt;tex&amp;gt;A, B, C, D, E&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;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;, но маршрутизатор &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; сообщает, что он знает путь до &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; длиной 2. Маршрутизатор &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; изменяет запись в таблице и считает, что теперь у него есть путь длиной 3 до маршрутизатора &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;A&amp;lt;/tex&amp;gt; равным 4, так как получит от маршрутизаторов &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;D&amp;lt;/tex&amp;gt; таблицы, по которым они знают путь до маршрутизатора &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; длиной 3. С каждой следующей итерацией обновления таблиц расстояние до маршрутизатора &amp;lt;tex&amp;gt;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;br /&gt;
====Недостатки====&lt;br /&gt;
*проблемы счета до бесконечности&lt;br /&gt;
&lt;br /&gt;
==Маршрутизация с учетом состояния линий(link state routing)==&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;HELLO&amp;lt;/tex&amp;gt;. В ответ маршрутизатор на другом конце линии посылает ответ, содержащий свое имя. Имена маршрутизаторов должны быть совершенно уникальными.&lt;br /&gt;
В случае соединений &amp;lt;tex&amp;gt;point-to-point&amp;lt;/tex&amp;gt; проблем не возникает, но если некоторые маршрутизаторы соединены широковещательной связью ситуация усложняется. Пусть, например, маршрутизаторы &amp;lt;tex&amp;gt;A, B, C&amp;lt;/tex&amp;gt; соединены широковещательной связью. Моделирование данной модели в виде связей &amp;lt;tex&amp;gt;point-to-point&amp;lt;/tex&amp;gt; будет сильно увеличивать размер топологии, поэтому создает искусственный узел, назовем его &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;, соответствующий самой широковещательной связи. На самом деле роль этого узла будет играть один из маршрутизаторов &amp;lt;tex&amp;gt;A, B, C&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;ANC&amp;lt;/tex&amp;gt;.&lt;br /&gt;
====Задание метрики расстояний====&lt;br /&gt;
Метрика расстояния между двумя соседними маршрутизаторами может быть задана автоматически или оператором сети. Чаще всего ее задают обратно пропорциональной пропускной способности линии, благодаря этому будут выбираться пути с большей пропускной способностью. Второй способ заключается в определении задержки специального пакета &amp;lt;tex&amp;gt;ECHO&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;
С этим связано несколько проблем. Первая из них заключается в том, что порядковый номер может достигнуть максимального значения. Решение заключается в использовании 32-битных порядковых номеров, в этом случае даже если каждую секунду рассылать пакеты состояния линий, то порядковых номеров хватит больше, чем 137 лет.&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;
*Э. Таненбаум, Д.Уэзеролл - Компьютерные сети (5-е издание, 2012)&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Алгоритмы_маршрутизации Алгоритмы маршрутизации - Википедия]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%92%D0%B5%D1%80%D1%88%D0%B8%D0%BD%D0%BD%D0%B0%D1%8F,_%D1%80%D1%91%D0%B1%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D1%81%D0%B2%D1%8F%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D1%8C,_%D1%81%D0%B2%D1%8F%D0%B7%D1%8C_%D0%BC%D0%B5%D0%B6%D0%B4%D1%83_%D0%BD%D0%B8%D0%BC%D0%B8_%D0%B8_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D0%B5%D0%BF%D0%B5%D0%BD%D1%8C%D1%8E_%D0%B2%D0%B5%D1%80%D1%88%D0%B8%D0%BD%D1%8B&amp;diff=83392</id>
		<title>Вершинная, рёберная связность, связь между ними и минимальной степенью вершины</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%92%D0%B5%D1%80%D1%88%D0%B8%D0%BD%D0%BD%D0%B0%D1%8F,_%D1%80%D1%91%D0%B1%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D1%81%D0%B2%D1%8F%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D1%8C,_%D1%81%D0%B2%D1%8F%D0%B7%D1%8C_%D0%BC%D0%B5%D0%B6%D0%B4%D1%83_%D0%BD%D0%B8%D0%BC%D0%B8_%D0%B8_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D0%B5%D0%BF%D0%B5%D0%BD%D1%8C%D1%8E_%D0%B2%D0%B5%D1%80%D1%88%D0%B8%D0%BD%D1%8B&amp;diff=83392"/>
				<updated>2022-09-01T04:50:55Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;\kappa&amp;lt;/tex&amp;gt; графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; (англ. ''vertex-connectivity'') называется наименьшее число вершин, удаление которых приводит к несвязному или тривиальному графу.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Реберной связностью''' &amp;lt;tex&amp;gt;\lambda&amp;lt;/tex&amp;gt; графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; (англ. ''edge-connectivity'') называется наименьшее количество ребер, удаление которых приводит к несвязному или тривиальному графу.&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;\delta&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Для любого графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; справедливо следующее неравенство: &amp;lt;tex&amp;gt;\kappa \leqslant \lambda \leqslant \delta &amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Ver_ed_coh_1.png|thumb|right|150px|Полный граф. &amp;lt;tex&amp;gt; \lambda = \delta = \kappa = 4&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
# Проверим второе неравенство. Если в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; нет ребер, то &amp;lt;tex&amp;gt; \lambda = 0 &amp;lt;/tex&amp;gt;. Если ребра есть, то несвязный граф получаем из данного, удаляя все ребра, инцидентные вершине с наименьшей степенью. В любом случае &amp;lt;tex&amp;gt; \lambda \leqslant \delta &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; \kappa = \lambda = 0 &amp;lt;/tex&amp;gt;. &lt;br /&gt;
##Если &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; связен и имеет мост &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\lambda = 1 &amp;lt;/tex&amp;gt;. В последнем случае &amp;lt;tex&amp;gt; \kappa = 1 &amp;lt;/tex&amp;gt;, поскольку или граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; имеет точку сочленения, инцидентную ребру &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, или же &amp;lt;tex&amp;gt;G=K_2&amp;lt;/tex&amp;gt;. &lt;br /&gt;
##Наконец, предположим, что граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; содержит множество из &amp;lt;tex&amp;gt; \lambda \geqslant 2 &amp;lt;/tex&amp;gt; ребер, удаление которых делает его несвязным. Ясно, что удаляя &amp;lt;tex&amp;gt;\lambda - 1 &amp;lt;/tex&amp;gt; ребер из этого множества получаем граф, имеющий мост &amp;lt;tex&amp;gt;x = uv&amp;lt;/tex&amp;gt;. Для каждого из этих &amp;lt;tex&amp;gt;\lambda - 1 &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;\lambda - 1 &amp;lt;/tex&amp;gt; (а возможно, и большего числа) ребер. Если получаемый после такого удаления граф не связен, то &amp;lt;tex&amp;gt;\kappa \lt \lambda&amp;lt;/tex&amp;gt;; если же он связен, то в нем есть мост &amp;lt;tex&amp;gt;x&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; \kappa \leqslant \lambda&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Для любых натуральных чисел &amp;lt;tex&amp;gt;a, b, c&amp;lt;/tex&amp;gt;, таких что &amp;lt;tex&amp;gt;a \leqslant b \leqslant c&amp;lt;/tex&amp;gt;, существует граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, у которого &amp;lt;tex&amp;gt;\kappa  = a, \lambda  = b&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\delta = c &amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=[[Файл:Ver_ed_coh_2.png|thumb|right|335px|Граф, в котором &amp;lt;tex&amp;gt; \delta = 4&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\lambda = 3&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\kappa = 2&amp;lt;/tex&amp;gt;.]]&lt;br /&gt;
Рассмотрим граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, являющийся объединением двух полных графов &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;G_2&amp;lt;/tex&amp;gt;, содержащих &amp;lt;tex&amp;gt;c + 1&amp;lt;/tex&amp;gt; вершину. Отметим &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; вершин, принадлежащих подграфу &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; вершин, принадлежащих подграфу &amp;lt;tex&amp;gt;G_2&amp;lt;/tex&amp;gt;. Добавим в граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; ребер так, чтобы каждое ребро было инцидентно помеченной вершине, лежащей в  подграфе &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; и помеченной вершине, лежащей в подграфе &amp;lt;tex&amp;gt;G_2&amp;lt;/tex&amp;gt;, причем не осталось ни одной помеченной вершины, у которой не появилось хотя бы одно новое ребро, инцидентное ей.&lt;br /&gt;
Тогда:&lt;br /&gt;
&lt;br /&gt;
# Поскольку &amp;lt;tex&amp;gt;b \leqslant c&amp;lt;/tex&amp;gt;, то было как минимум две непомеченные вершины, поэтому &amp;lt;tex&amp;gt; \delta = c&amp;lt;/tex&amp;gt;, так как минимальные степени вершин графов &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;G_2&amp;lt;/tex&amp;gt; были равны &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt;, а степени их вершин не уменьшались.&lt;br /&gt;
# Заметим, что между двумя вершинами графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; существует не меньше &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; вершинно-непересекающихся простых цепей, следовательно по [[теорема Менгера|теореме Менгера]] &amp;lt;tex&amp;gt;\kappa \geqslant a&amp;lt;/tex&amp;gt;. Однако если удалить из графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; помеченные вершины его подграфа &amp;lt;tex&amp;gt;G_2&amp;lt;/tex&amp;gt;, то граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; потеряет связность. Значит, &amp;lt;tex&amp;gt;\kappa = a&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Аналогично рассуждению пункта 2, легко убедится, что &amp;lt;tex&amp;gt;\lambda = b&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;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; и выбрать минимум.&lt;br /&gt;
Пусть он равен &amp;lt;tex&amp;gt;l&amp;lt;/tex&amp;gt;. По утверждению, граф является [[k-связность#def_2|&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;l&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;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;t&amp;lt;/tex&amp;gt;, по которым поток неотрицателен и равен &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; (т.к. пропускная способность всех ребер равна &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;). А значит, если поток равен &amp;lt;tex&amp;gt;flow&amp;lt;/tex&amp;gt;, то и количество путей равно &amp;lt;tex&amp;gt;flow&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
''' Псевдокод алгоритма '''&lt;br /&gt;
  '''function''' disjoint_paths_count(): '''int'''&lt;br /&gt;
    ans = INF&lt;br /&gt;
    '''for''' &amp;lt;tex&amp;gt;s \in V:&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''for''' &amp;lt;tex&amp;gt;t \in V:&amp;lt;/tex&amp;gt;&lt;br /&gt;
              flow = find_max_flow(s, t) &amp;lt;font color=darkgreen&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;/font&amp;gt;&lt;br /&gt;
              ans = min(ans, flow)&lt;br /&gt;
    '''return''' ans&lt;br /&gt;
&lt;br /&gt;
'''Оценка работы'''&lt;br /&gt;
&lt;br /&gt;
Время работы равно &amp;lt;tex&amp;gt;V^2 \times O(find\_max\_flow)&amp;lt;/tex&amp;gt;. При использовании алгоритма Эдмондса-Карпа время равно &amp;lt;tex&amp;gt;V^2 \times O(V E^2)&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;O(V^3 E^2)&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;.&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;v_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_2&amp;lt;/tex&amp;gt;. Все ребра, которые входили в &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; будут входить в &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt;. Все ребра, которые выходили из &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; будут выходить из &amp;lt;tex&amp;gt;v_2&amp;lt;/tex&amp;gt;. Так же добавим ребро &amp;lt;tex&amp;gt;(v_1, v_2)&amp;lt;/tex&amp;gt; с пропускной способностью &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vertex-2vertex.png|300px|left|thumb|Иллюстрация]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&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;
*[https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%A0%D0%BE%D0%B1%D0%B1%D0%B8%D0%BD%D1%81%D0%B0 Википедия {{---}} Теорема Роббинса]&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
&lt;br /&gt;
* [https://stugum.files.wordpress.com/2014/03/harary-graph-theory.pdf Харари Ф. Теория графов: Пер. с англ. / Предисл. В. П. Козырева; Под ред. Г.П.Гаврилова. Изд. 4-е. — М.: Книжный дом &amp;quot;ЛИБРОКОМ&amp;quot;, 2009. — 60 с.]&lt;br /&gt;
&lt;br /&gt;
* [http://alleng.org/d/comp/comp384.htm Дж. Клейнберг, Е. Тардос. Алгоритмы: разработка и применение. Классика Computers Science. 2016. - 383 c.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Связность в графах]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=P2_pi1_prec_ri_Sum_Ci&amp;diff=83391</id>
		<title>P2 pi1 prec ri Sum Ci</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=P2_pi1_prec_ri_Sum_Ci&amp;diff=83391"/>
				<updated>2022-09-01T04:50:48Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
Задача &amp;lt;tex&amp;gt; P_2 \mid p_i = 1, prec, r_i \mid \sum C_i &amp;lt;/tex&amp;gt; ([[Классификация_задач|в нотации Грэхема]]).&lt;br /&gt;
&lt;br /&gt;
Есть два станка и &amp;lt;tex&amp;gt; n &amp;lt;/tex&amp;gt; работ. Любая работа выполняется за единицу времени. Для каждой работы задано число &amp;lt;tex&amp;gt; r_i &amp;lt;/tex&amp;gt; {{---}} минимальное время, когда можно начать ее выполнять. Кроме того, определено отношение предшествования: если работа &amp;lt;tex&amp;gt; J_j&amp;lt;/tex&amp;gt; предшествует работе &amp;lt;tex&amp;gt; J_k&amp;lt;/tex&amp;gt;, то будем записывать так: &amp;lt;tex&amp;gt;J_j \prec J_k&amp;lt;/tex&amp;gt; (что означает, что время начала выполнения работы &amp;lt;tex&amp;gt; J_k &amp;lt;/tex&amp;gt; больше или равно времени завершения работы &amp;lt;tex&amp;gt; J_j &amp;lt;/tex&amp;gt;). Записью &amp;lt;tex&amp;gt; J_j \preceq J_k &amp;lt;/tex&amp;gt; будем обозначать, что либо &amp;lt;tex&amp;gt; j = k&amp;lt;/tex&amp;gt; либо &amp;lt;tex&amp;gt;J_j \prec J_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Необходимо составить расписание, в котором сумма времени окончания работ &amp;lt;tex&amp;gt;\sum C_i&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; r_i &amp;lt;/tex&amp;gt; тоже целые.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
&lt;br /&gt;
* [http://www.springerlink.com/content/8kr73f7n44m1mjtr/ Philippe Baptiste and Vadim G. Timkovsky &amp;quot;Shortest path to nonpreemptive schedules of unit-time jobs on two identical parallel machines with minimum total completion time&amp;quot; (2004)]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A6%D0%B5%D0%BF%D0%BD%D1%8B%D0%B5_%D0%BA%D0%BE%D0%B4%D1%8B&amp;diff=83390</id>
		<title>Цепные коды</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A6%D0%B5%D0%BF%D0%BD%D1%8B%D0%B5_%D0%BA%D0%BE%D0%B4%D1%8B&amp;diff=83390"/>
				<updated>2022-09-01T04:50:41Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
[[Файл:Chain4.png|right]]&lt;br /&gt;
'''Цепной код''' (англ. ''chain code'') — это такое упорядочивание двоичных векторов одной длины, каждый следующий столбец которого (можно рассматривать как таблицу из &amp;lt;tex&amp;gt;2^n \times n&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;n&amp;lt;/tex&amp;gt; нулей. Чтобы получить следующий вектор, берём последний добавленный вектор, пусть &amp;lt;tex&amp;gt;a_1\dots a_n&amp;lt;/tex&amp;gt;. Если в коде до этого не встречался вектор &amp;lt;tex&amp;gt;a_2\dots a_n 1&amp;lt;/tex&amp;gt;, то добавляем его. Иначе проверяем на наличие в коде вектора &amp;lt;tex&amp;gt;a_2\dots a_n 0&amp;lt;/tex&amp;gt;. Если такой не встречался, добавляем его. Если вектор уже встречался, значит, генерация кода закончена.&lt;br /&gt;
&lt;br /&gt;
При таком построении видно, что элементы таблицы &amp;lt;tex&amp;gt; a_1^i\dots a_1^{i+n}&amp;lt;/tex&amp;gt; равны элементам &amp;lt;tex&amp;gt; a_1^i\dots a_n^i&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Псевдокод алгоритма ==&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathtt {current}&amp;lt;/tex&amp;gt; — последний добавленный битовый вектор&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathtt {result}&amp;lt;/tex&amp;gt; — список битовых векторов&lt;br /&gt;
&lt;br /&gt;
 '''string[]''' chain_code('''int''' n):&lt;br /&gt;
   current = '0' * n&lt;br /&gt;
   result = [current]&lt;br /&gt;
   '''while''' ''true''&lt;br /&gt;
     prefix = current[2..n]&lt;br /&gt;
     '''if''' prefix + '1' '''not in''' result&lt;br /&gt;
       current = prefix + '1'&lt;br /&gt;
     '''else''' prefix + '0' '''not in''' result&lt;br /&gt;
       current = prefix + '0'&lt;br /&gt;
     '''else'''&lt;br /&gt;
       '''break'''&lt;br /&gt;
     result.append(current)&lt;br /&gt;
   '''return''' result&lt;br /&gt;
&lt;br /&gt;
==Доказательство корректности==&lt;br /&gt;
Разобьем доказательство на две части:&lt;br /&gt;
# Доказательство того, что один и тот же вектор встречается в коде не более одного раза.&lt;br /&gt;
# Доказательство того, что алгоритм перебирает все возможные вектора прежде, чем получит вектор из &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;n&amp;lt;/tex&amp;gt; нулей. Рассмотрим первое такое противоречие: последним добавлен вектор &amp;lt;tex&amp;gt;a_1 a_2 \dots a_n&amp;lt;/tex&amp;gt;, вектора &amp;lt;tex&amp;gt;a_2 \dots 1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;a_2 \dots a_n 0&amp;lt;/tex&amp;gt; уже присутствуют в коде.&lt;br /&gt;
&lt;br /&gt;
Далее есть две возможных ситуации: вектор &amp;lt;tex&amp;gt;a_2 \dots a_n 0&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;a_2 \dots a_n 1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;a_2 \dots a_n 0&amp;lt;/tex&amp;gt; предшествовали некоторые вектора в коде, пусть &amp;lt;tex&amp;gt;B_1 = b_1 a_2 \dots a_n&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B_2 = b_2 a_2 \dots a_n&amp;lt;/tex&amp;gt;. Так как мы рассматриваем первое противоречие, то &amp;lt;tex&amp;gt;b_1 \neq b_2&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Но в таком случае вектор &amp;lt;tex&amp;gt;a_1 a_2 \dots a_n&amp;lt;/tex&amp;gt; совпадает с одним из векторов &amp;lt;tex&amp;gt;B_1&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;B_2&amp;lt;/tex&amp;gt;. Это противоречит предположению о том, что рассмотренная конфликтная ситуация является первой, следовательно, реализуется только первый вариант ситуации.&lt;br /&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;Z&amp;lt;/tex&amp;gt;, которые не были сгенерированы алгоритмом и оканчиваются на ноль.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;a_1 a_2 \dots a_{n - 1} 0 \in Z&amp;lt;/tex&amp;gt;. Докажем, что &amp;lt;tex&amp;gt;a_2 \dots a_{n - 1} 0 0 \in Z&amp;lt;/tex&amp;gt;. От противного, пусть вектор &amp;lt;tex&amp;gt;a_2 \dots a_{n - 1} 0 0 &amp;lt;/tex&amp;gt; был сгенерирован. Тогда ему предшествовал вектор &amp;lt;tex&amp;gt;b_1 a_2 \dots a_{n - 1} 0&amp;lt;/tex&amp;gt;. Так как по предположению &amp;lt;tex&amp;gt;b_1 \neq a_1&amp;lt;/tex&amp;gt;, то в коде может быть только один вектор такого вида, а в таком случае алгоритм может сгенерировать только &amp;lt;tex&amp;gt;a_2 \dots a_{n - 1} 0 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит, если множество &amp;lt;tex&amp;gt;Z&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; нулей был сгенерирован. Следовательно, это предположение не верно и все вектора с нулём в последней позиции были сгенерированы.&lt;br /&gt;
&lt;br /&gt;
Пусть был сгенерирован вектор &amp;lt;tex&amp;gt;a_1 \dots a_{n - 1} 0&amp;lt;/tex&amp;gt;. Ему предшествовал некоторый вектор &amp;lt;tex&amp;gt;b_1 a_1 \dots a_{n - 1}&amp;lt;/tex&amp;gt;. Так как алгоритм сначала пытается поместить в код вектор &amp;lt;tex&amp;gt;a_1 \dots a_{n - 1} 1&amp;lt;/tex&amp;gt;, то на этом шаге вектор &amp;lt;tex&amp;gt;a_1 \dots a_{n - 1} 1&amp;lt;/tex&amp;gt; уже присутсовал в коде. Предыдущее рассуждение показывает, что всякий вектор вида &amp;lt;tex&amp;gt;a_1 \dots a_{n - 1} 0&amp;lt;/tex&amp;gt; был добавлен в код, а значит, и вектор вида &amp;lt;tex&amp;gt;a_1 \dots a_{n - 1} 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;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Chain_code Wikipedia  {{---}} Chain code]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Комбинаторика ]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D1%83%D0%BC%D0%BD%D0%BE%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D1%8C&amp;diff=83389</id>
		<title>Матричный умножитель</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D1%83%D0%BC%D0%BD%D0%BE%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D1%8C&amp;diff=83389"/>
				<updated>2022-09-01T04:50:33Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
[[Файл:mult_bin.png|300px|right|thumb|''Умножение в столбик'']]&lt;br /&gt;
&lt;br /&gt;
Умножение в бинарной системе счисления происходит точно так же, как в десятичной {{---}}  по схеме ''умножения столбиком''. &lt;br /&gt;
Если множимое {{---}} &amp;lt;tex&amp;gt;k&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;  частичных   произведений и сложить их между собой.&lt;br /&gt;
&lt;br /&gt;
===== Вычисление частичных произведений =====&lt;br /&gt;
В бинарной системе для вычисления частичного произведения можно воспользоваться логическими элементами &amp;lt;tex&amp;gt;\&amp;amp;&amp;lt;/tex&amp;gt; {{---}} конъюнкторами.&lt;br /&gt;
Каждое частичное произведение &amp;lt;tex&amp;gt;(m_i)&amp;lt;/tex&amp;gt; {{---}} это результат выполнения &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; логических операции &amp;lt;tex&amp;gt;\&amp;amp;&amp;lt;/tex&amp;gt; ( между текущим &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, где  &amp;lt;tex&amp;gt;i=1..n&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;m_i = 2^{i - 1} (a \&amp;amp; b_i), (i=1..n)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Суммирование частичных произведений =====&lt;br /&gt;
На этом этапе происходит сложение всех частичных произведений &amp;lt;tex&amp;gt; m &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Схема ====&lt;br /&gt;
[[Файл:Mult_3.png|700px|right|thumb|Схема матричного умножителя]]&lt;br /&gt;
Принципиальная схема умножителя, реализующая алгоритм двоичного умножения в столбик для двух четырёх {{---}} разрядных чисел приведена на рисунке. &lt;br /&gt;
Формирование частичных произведений осуществляется посредством логических элементов &amp;lt;tex&amp;gt;\&amp;amp;&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Полные одноразрядные сумматоры обеспечивают формирование разрядов результата.&lt;br /&gt;
Разрядность результата {{---}} &amp;lt;tex&amp;gt;l&amp;lt;/tex&amp;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;
&amp;lt;tex&amp;gt; l=n+k &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; p8 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== '''Матричный умножитель''' ====&lt;br /&gt;
Если внимательно посмотреть на схему '''матричного умножителя''' (англ. ''binary multiplier''), то можно увидеть, что она образует матрицу, сформированную проводниками, по которым передаются разряды числа &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;\&amp;amp;&amp;lt;/tex&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;n - 1&amp;lt;/tex&amp;gt; шаг. Последнее сложение можно выполнить за &amp;lt;tex&amp;gt;O(\log 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) + O(n) + O(\log n) = O(n) &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(\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;
== Источники информации ==&lt;br /&gt;
* [http://bookfi.net/book/556972  Е. Угрюмов &amp;quot;Цифровая схемотехника&amp;quot; 2001г.] &lt;br /&gt;
&lt;br /&gt;
* [http://bookfi.net/book/532753  Дк. Ф. Уэйкерли &amp;quot;Проектирование цифровых устройств, том 1.&amp;quot; 2002г.] &lt;br /&gt;
&lt;br /&gt;
* [http://bookfi.net/book/637011 М.И. Богданович &amp;quot;Цифровые интегральные микросхемы&amp;quot; 1996г.] &lt;br /&gt;
&lt;br /&gt;
* [http://library.espec.ws/section6/article46.html Схема умножителя]&lt;br /&gt;
&lt;br /&gt;
* ''[http://ru.wikipedia.org/wiki/Кормен Кормен Т.], [http://ru.wikipedia.org/wiki/Лейзерсон,_Чарльз_Эрик Лейзерсон Ч.], [http://ru.wikipedia.org/wiki/Ривест,_Рональд_Линн Ривест Р.]''. Алгоритмы: построение и анализ = Introduction to Algorithms / Пер. с англ. под ред. А. Шеня. — М.: МЦНМО, 2000. — 960 с. — ISBN 5-900916-37-5&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Схемы из функциональных элементов ]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B8_%D0%BA_%D0%BE%D1%81%D0%BB%D0%B0%D0%B1%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%84%D0%BE%D1%80%D0%BC%D0%B5_%D0%93%D1%80%D0%B5%D0%B9%D0%B1%D0%B0%D1%85&amp;diff=83388</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%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B8_%D0%BA_%D0%BE%D1%81%D0%BB%D0%B0%D0%B1%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%84%D0%BE%D1%80%D0%BC%D0%B5_%D0%93%D1%80%D0%B5%D0%B9%D0%B1%D0%B0%D1%85&amp;diff=83388"/>
				<updated>2022-09-01T04:50:25Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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=Грамматикой в '''нормальной форме Грейбах''' (англ. ''Greibach normal form'') называется [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная грамматика]], в которой могут содержаться только правила одного из следующих типов:&lt;br /&gt;
:&amp;lt;tex&amp;gt; A \rightarrow a\gamma &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt; S \rightarrow \varepsilon &amp;lt;/tex&amp;gt;&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; \varepsilon &amp;lt;/tex&amp;gt; {{---}} пустая строка, &amp;lt;tex&amp;gt; \gamma &amp;lt;/tex&amp;gt; {{---}} строка из не более, чем двух нетерминалов.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=Грамматикой в '''ослабленной нормальной форме Грейбах''' (англ. ''Greibach weak normal form'') называется [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная грамматика]], в которой могут содержаться только правила одного из следующих типов:&lt;br /&gt;
:&amp;lt;tex&amp;gt; A \rightarrow a\gamma &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt; S \rightarrow \varepsilon &amp;lt;/tex&amp;gt;&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; \varepsilon &amp;lt;/tex&amp;gt; {{---}} пустая строка, &amp;lt;tex&amp;gt; \gamma &amp;lt;/tex&amp;gt; {{---}} строка из произвольного числа терминалов и нетерминалов.  &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Приведение грамматики к ослабленной нормальной форме Грейбах ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=Любую контекстно-свободную грамматику можно привести к ослабленной нормальной форме Грейбах.&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим контекстно-свободную грамматику &amp;lt;tex&amp;gt; \Gamma &amp;lt;/tex&amp;gt;. Для приведения её к нормальной ослабленной форме Грейбах нужно выполнить три шага. На каждом шаге мы строим новую грамматику, допускающую тот же язык, что и &amp;lt;tex&amp;gt; \Gamma &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
#Избавимся от &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил. Для этого воспользуемся [[Удаление_eps-правил_из_грамматики | алгоритмом удаления &amp;lt;tex&amp;gt; \varepsilon &amp;lt;/tex&amp;gt;-правил]].&lt;br /&gt;
#Воспользуемся [[Устранение_левой_рекурсии|алгоритмом устранения левой рекурсии]].Получим грамматику, все правила которой будут иметь следующий вид:&lt;br /&gt;
#* &amp;lt;tex&amp;gt; A_i \rightarrow a \gamma &amp;lt;/tex&amp;gt;, &lt;br /&gt;
#* &amp;lt;tex&amp;gt; A_i \rightarrow A_j \gamma &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 &amp;lt;/tex&amp;gt; {{---}} терминал, &amp;lt;tex&amp;gt; \gamma &amp;lt;/tex&amp;gt; {{---}} произвольная последовательность из терминалов и нетерминалов, &amp;lt;tex&amp;gt; i &amp;lt; j &amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Воспользуемся следующей функцией для придания грамматике нужного вида:&lt;br /&gt;
 '''function''' greibah(правила &amp;lt;tex&amp;gt;A_1 \dots A_n&amp;lt;/tex&amp;gt; из контекстно-свободной грамматики &amp;lt;tex&amp;gt; \Gamma &amp;lt;/tex&amp;gt;): &lt;br /&gt;
    '''for''' i = n .. 1&lt;br /&gt;
       '''for''' j = i + 1 .. n&lt;br /&gt;
          Для каждого правила вывода из &amp;lt;tex&amp;gt; A_j &amp;lt;/tex&amp;gt; вида &amp;lt;tex&amp;gt; A_j \rightarrow \delta_1 | \ldots | \delta_k &amp;lt;/tex&amp;gt; заменить каждое правило &amp;lt;tex&amp;gt; A_i \rightarrow A_j \gamma &amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; A_i \rightarrow \delta_1\gamma | \ldots | \delta_k\gamma &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После каждой итерации главного цикла все правила для &amp;lt;tex&amp;gt; A_k &amp;lt;/tex&amp;gt; (где &amp;lt;tex&amp;gt;k \geqslant i&amp;lt;/tex&amp;gt;) будут иметь вид &amp;lt;tex&amp;gt; A_k \rightarrow a \gamma &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Значит, после применения процедуры все правила грамматики будут иметь вид &amp;lt;tex&amp;gt; A \rightarrow a \gamma &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, мы получили грамматику в ослабленной нормальной форме Грейбах, которая допускает тот же язык, что и исходная.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 500px; height: 500px; float: left;&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#41aef0&amp;quot;|Текущий шаг&lt;br /&gt;
!style=&amp;quot;background:#41aef0&amp;quot;|Грамматика после применения правила&lt;br /&gt;
|-&lt;br /&gt;
|''0. Исходная грамматика''&lt;br /&gt;
|&amp;lt;tex&amp;gt;S\rightarrow XA|BB&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;B\rightarrow b|SB&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;X\rightarrow b&amp;lt;/tex&amp;gt;&amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;A\rightarrow a&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|''1. Удаление &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-правил''&lt;br /&gt;
|&amp;lt;tex&amp;gt;S\rightarrow XA|BB&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;B\rightarrow b|SB&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;X\rightarrow b&amp;lt;/tex&amp;gt;&amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;A\rightarrow a&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|''2. Удаление стартового нетерминала из правых частей правил&lt;br /&gt;
|&amp;lt;tex&amp;gt;S\rightarrow XA|BB&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;B\rightarrow bAB|BBB|b&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;X\rightarrow b&amp;lt;/tex&amp;gt;&amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;A\rightarrow a&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|''3. Удаление левой рекурсии&lt;br /&gt;
|&amp;lt;tex&amp;gt;S\rightarrow XA|BB&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;B\rightarrow bAB|b|bABZ|bZ&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;Z\rightarrow BB|BBZ&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;X\rightarrow b&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;A\rightarrow a&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|''4. Выполняем функцию '''greibah''' для правила &amp;lt;tex&amp;gt;S\rightarrow XA|BB&amp;lt;/tex&amp;gt;&lt;br /&gt;
|&amp;lt;tex&amp;gt;S\rightarrow bA|bABB|bB|bABZB|bZB&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;B\rightarrow bAB|b|bABZ|bZ&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;Z\rightarrow BB|BBZ&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;X\rightarrow b&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;A\rightarrow a&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|''5. Выполняем функцию '''greibah''' для правила &amp;lt;tex&amp;gt;Z\rightarrow BB|BBZ&amp;lt;/tex&amp;gt;&lt;br /&gt;
|&amp;lt;tex&amp;gt;S\rightarrow bA|bABB|bB|bABZB|bZB&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;B\rightarrow bAB|b|bABZ|bZ&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;Z\rightarrow bABB|bB|bABZB|bZB|bABBZ|bBZ|bABZBZ|bZBZ&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;X\rightarrow b&amp;lt;/tex&amp;gt; &amp;lt;br&amp;gt; &amp;lt;tex&amp;gt;A\rightarrow a&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Асимптотика ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм состоит из трех шагов, сложность первого и последнего шага равны &amp;lt;tex&amp;gt;O(\left| \Gamma \right|)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;O(\left| \Gamma \right| ^ 2)&amp;lt;/tex&amp;gt; соответственно. Таким обзом, сложность алгоритма является &amp;lt;tex&amp;gt;O(\left| \Gamma \right| ^ 2) + 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;
Использование нормальных форм существенно упрощает доказательство теорем. Например, использование нормальной формы Грейбах позволяет доказать, что для каждого контекстно-свободного языка (не содержащего &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;) существует автомат с магазинной памятью без переходов по &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;. &amp;lt;ref&amp;gt;[http://www.cis.upenn.edu/~jean/old511/html/cis51108sl4b.pdf Jean Gallier {{---}} Discrete Mathematics]&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;
* [[Нормальная_форма_Куроды | Нормальная форма Куроды]]&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;
* [[wikipedia:en:Greibach normal form | Wikipedia {{---}} Greibach normal form]]&lt;br /&gt;
* [http://www.iitg.ernet.in/gkd/ma513/oct/oct18/note.pdf MA513: Formal Languages and Automata Theory]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;br /&gt;
[[Категория: Нормальные формы КС-грамматик]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D1%81%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D1%81%D0%B5%D1%85_%D0%BC%D0%B0%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%BF%D0%BE_%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8E_%D0%B1%D0%B0%D1%80%D1%8C%D0%B5%D1%80%D0%BE%D0%B2&amp;diff=83387</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%B5%D1%81%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D1%81%D0%B5%D1%85_%D0%BC%D0%B0%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%BF%D0%BE_%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8E_%D0%B1%D0%B0%D1%80%D1%8C%D0%B5%D1%80%D0%BE%D0%B2&amp;diff=83387"/>
				<updated>2022-09-01T04:50:17Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
|id = maximum_barrier&lt;br /&gt;
|neat = 1 &lt;br /&gt;
|definition = '''Максимальным по включению [[ Декомпозиция Эдмондса-Галлаи#barrier | барьером ]] '''(англ.''maximal barrier'') называется барьер, не являющийся подмножеством любого другого барьера.&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 = theorem_about_maximum_barriers&lt;br /&gt;
|statement = Пересечение всех максимальных по включению барьеров графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; равно &amp;lt;tex&amp;gt;A(G)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof = Пусть &amp;lt;tex&amp;gt;H&amp;lt;/tex&amp;gt; {{---}} пересечение всех максимальных по включению барьеров графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Чтобы доказать теорему, докажем, что &amp;lt;tex&amp;gt;A(G)\subset H&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A(G)\supset H&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл: Max_barriers_a.png|170px|thumb|right|Рисунок &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
[[Файл: Max_barriers_b.png|170px|thumb|right|Рисунок &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;A(G)\subset H&amp;lt;/tex&amp;gt;:&amp;lt;br&amp;gt; &lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; {{---}} максимальный по включению барьер, &amp;lt;tex&amp;gt;|A(G)\setminus B| = k &amp;gt; 0&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;B' = B \cup A(G) \Rightarrow |B'| = |B| + k&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Докажем, что &amp;lt;tex&amp;gt;B'&amp;lt;/tex&amp;gt; {{---}} барьер и получим противоречие. Для этого достаточно доказать, что &amp;lt;tex&amp;gt;\mathrm{odd}(G\setminus B')\ \geqslant \mathrm{odd}(G\setminus B)\ + k&amp;lt;/tex&amp;gt;, ведь в таком случае &amp;lt;tex&amp;gt;\mathrm{odd}(G\setminus B')\ \geqslant \mathrm{def}(G)\ + |B| + k \Rightarrow \mathrm{odd}(G\setminus B')\ - |B'| \geqslant \mathrm{def}(G)&amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;W&amp;lt;/tex&amp;gt; {{---}} компонента связности графа &amp;lt;tex&amp;gt;G - B&amp;lt;/tex&amp;gt;, содержащая &amp;lt;tex&amp;gt;t &amp;gt; 0&amp;lt;/tex&amp;gt; вершин из &amp;lt;tex&amp;gt;A(G)&amp;lt;/tex&amp;gt; (см. рисунок &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;), если такой компоненты нет, то &amp;lt;tex&amp;gt;k = 0&amp;lt;/tex&amp;gt; {{---}} противоречие. &amp;lt;br&amp;gt;&lt;br /&gt;
В силу [[ Декомпозиция Эдмондса-Галлаи#barier_struct1| леммы о связи барьера]] с &amp;lt;tex&amp;gt;D(G)&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;B\cap D(G) = \varnothing \Rightarrow B'\cap D(G) = \varnothing&amp;lt;/tex&amp;gt;. Поэтому, &amp;lt;tex&amp;gt;W&amp;lt;/tex&amp;gt; содержит все компоненты связности графа &amp;lt;tex&amp;gt;G(D(G))&amp;lt;/tex&amp;gt;, соединённые рёбрами с &amp;lt;tex&amp;gt;W\cap A(G)&amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
По [[ Декомпозиция Эдмондса-Галлаи#theorem_Gallai_Edmonds| теореме Эдмондса-Галлаи]] все эти компоненты связности нечетные и их хотя бы &amp;lt;tex&amp;gt;t + 1&amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Таким образом, при добавлении &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; вершин из &amp;lt;tex&amp;gt;W\cap A(G)&amp;lt;/tex&amp;gt; в барьер может исчезнуть одна нечётная компонента связности (если &amp;lt;tex&amp;gt;|W|&amp;lt;/tex&amp;gt; нечётно), а появляется хотя бы &amp;lt;tex&amp;gt;t + 1&amp;lt;/tex&amp;gt; нечётных компонент связности. &amp;lt;br&amp;gt;&lt;br /&gt;
Просуммировав прибавления по всем компонентам связности графа &amp;lt;tex&amp;gt;G - B&amp;lt;/tex&amp;gt;, содержащим вершины из &amp;lt;tex&amp;gt;A(G)&amp;lt;/tex&amp;gt;, мы получим, что &amp;lt;tex&amp;gt;\mathrm{odd}(G\setminus B')\ \geqslant \mathrm{odd}(G\setminus B)\ + k&amp;lt;/tex&amp;gt;, что и требовалось доказать.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;A(G)\supset H&amp;lt;/tex&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
Предположим противное: пусть существует вершина &amp;lt;tex&amp;gt;x\notin A(G)&amp;lt;/tex&amp;gt;, принадлежащая всем максимальным барьерам. По [[ Декомпозиция Эдмондса-Галлаи#barier_struct3| теореме о структуре барьера]] &amp;lt;tex&amp;gt;x\in C(G)&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Рассмотрим максимальное паросочетание &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, пусть &amp;lt;tex&amp;gt;xy\in M&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Докажем, что &amp;lt;tex&amp;gt;B = A(G)\cup \{ y \}&amp;lt;/tex&amp;gt; {{---}} барьер графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Так как &amp;lt;tex&amp;gt;|B| = |A(G)| + 1&amp;lt;/tex&amp;gt;, достаточно доказать, что &amp;lt;tex&amp;gt;\mathrm{odd}(B)\ \geqslant \mathrm{odd}(A(G))\ + 1&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
По [[ Декомпозиция Эдмондса-Галлаи#theorem_Gallai_Edmonds| теореме Эдмондса-Галлаи]] &amp;lt;tex&amp;gt;y\in C(G)&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;W&amp;lt;/tex&amp;gt; {{---}} компонента связности графа &amp;lt;tex&amp;gt;C(G)&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;2&amp;lt;/tex&amp;gt;). Вершины &amp;lt;tex&amp;gt;W&amp;lt;/tex&amp;gt; разбиваются на пары соединённых рёбрами из &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, поэтому &amp;lt;tex&amp;gt;|W|&amp;lt;/tex&amp;gt; чётно.&amp;lt;br&amp;gt;&lt;br /&gt;
Множество &amp;lt;tex&amp;gt;W' = W\setminus \{ y \}&amp;lt;/tex&amp;gt; содержит нечётное число вершин и является объединением нескольких компонент связности графа &amp;lt;tex&amp;gt; G - B&amp;lt;/tex&amp;gt;, которых нет в &amp;lt;tex&amp;gt;G - A(G)&amp;lt;/tex&amp;gt;. Среди этих компонент связности есть нечётная, значит &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; {{---}} барьер графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;B'&amp;lt;/tex&amp;gt; {{---}} максимальный барьер графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, содержащий &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
В максимальном паросочетании &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; все вершины барьера &amp;lt;tex&amp;gt;B'&amp;lt;/tex&amp;gt; должны быть соединены рёбрами с вершинами различных нечётных компонент связности графа &amp;lt;tex&amp;gt;G - B'&amp;lt;/tex&amp;gt;, следовательно, &amp;lt;tex&amp;gt;x\notin B'&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Полученное противоречие показывает, что пересечение всех максимальных барьеров графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; может содержать только вершины из &amp;lt;tex&amp;gt;A(G)&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;
*  Карпов Д. В. {{---}} Теория графов, стр 54-55&lt;br /&gt;
&lt;br /&gt;
[[ Категория: Алгоритмы и структуры данных ]]&lt;br /&gt;
[[ Категория: Задача о паросочетании ]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D1%80%D0%B0%D1%84_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82_%D1%80%D1%91%D0%B1%D0%B5%D1%80%D0%BD%D0%BE%D0%B9_%D0%B4%D0%B2%D1%83%D1%81%D0%B2%D1%8F%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=83386</id>
		<title>Граф компонент рёберной двусвязности</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D1%80%D0%B0%D1%84_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82_%D1%80%D1%91%D0%B1%D0%B5%D1%80%D0%BD%D0%BE%D0%B9_%D0%B4%D0%B2%D1%83%D1%81%D0%B2%D1%8F%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=83386"/>
				<updated>2022-09-01T04:50:10Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;A_1\ldots A_n&amp;lt;/tex&amp;gt; {{---}} компоненты рёберной двусвязности, а &amp;lt;tex&amp;gt;a_1\ldots a_m&amp;lt;/tex&amp;gt; {{---}} [[Мост, эквивалентные определения|мосты]] &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Построим граф &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;, в котором вершинами будут &amp;lt;tex&amp;gt;A_1\ldots A_n&amp;lt;/tex&amp;gt;, а рёбрами {{---}} &amp;lt;tex&amp;gt;a_1\ldots a_m&amp;lt;/tex&amp;gt;, соединяющими соответствующие вершины из соответствующих компонент рёберной двусвязности. Полученный граф &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; называют '''графом компонент [[Отношение рёберной двусвязности|рёберной двусвязности]]''' ''(англ. costal doubly-linked components graph)'' графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt;[[Файл:Double_edge_1.png|thumb|240px|Граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt;[[Файл:Double_edge_2.png|thumb|175px|Граф &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
В определении, приведенном выше, &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; {{---}} [[Дерево, эквивалентные определения|дерево]].&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; {{---}} связно. (Следует из определения)&lt;br /&gt;
#В &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; нет циклов. (Пусть какие-то две смежные вершины &amp;lt;tex&amp;gt;A_k&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;A_l&amp;lt;/tex&amp;gt; принадлежат какому-то циклу. Тогда ребро &amp;lt;tex&amp;gt;(A_k,  A_l)&amp;lt;/tex&amp;gt; принадлежит этому же циклу. Следовательно, существуют два рёберно-непересекающихся пути между вершинами &amp;lt;tex&amp;gt;A_k&amp;lt;/tex&amp;gt;  и &amp;lt;tex&amp;gt;A_l&amp;lt;/tex&amp;gt;, т.е. &amp;lt;tex&amp;gt;(A_k, A_l)&amp;lt;/tex&amp;gt; {{---}} не является мостом. Но &amp;lt;tex&amp;gt;(A_k, A_l)&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;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Граф блоков-точек сочленения]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория:Связность в графах]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B8&amp;diff=83385</id>
		<title>Формальные грамматики</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B8&amp;diff=83385"/>
				<updated>2022-09-01T04:50:01Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
'''Формальная грамматика'''  (англ. ''Formal grammar'') — способ описания формального языка, представляющий собой четверку&lt;br /&gt;
&amp;lt;tex&amp;gt;\Gamma =\langle \Sigma, N, S \in N, P \subset ((\Sigma \cup N)^* N (\Sigma \cup N)^*) \times (\Sigma\cup N)^{*}\rangle&amp;lt;/tex&amp;gt;, где:&lt;br /&gt;
* &amp;lt;tex&amp;gt;\Sigma&amp;lt;/tex&amp;gt; — [[Основные_определения: алфавит, слово, язык, конкатенация, свободный моноид слов|алфавит]], элементы которого называют '''терминалами''' (англ. ''terminals'');&lt;br /&gt;
* &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; — множество, элементы которого называют '''нетерминалами''' (англ. ''nonterminals'');&lt;br /&gt;
* &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; — начальный символ грамматики (англ. ''start symbol'');&lt;br /&gt;
* &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; — набор правил вывода (англ. ''production rules'' или ''productions'')       &amp;lt;tex&amp;gt;\alpha\rightarrow \beta&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;\beta&amp;lt;/tex&amp;gt; выводится из &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; за один шаг''' &amp;lt;tex&amp;gt;(\alpha \Rightarrow \beta)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
# &amp;lt;tex&amp;gt;\alpha=\alpha_1\alpha_2\alpha_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\beta=\beta_1\beta_2\beta_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
# &amp;lt;tex&amp;gt;\alpha_1=\beta_1&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\alpha_3=\beta_3&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\alpha_2\rightarrow\beta_2 \in P&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;\beta&amp;lt;/tex&amp;gt; выводится из &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; за ноль или более шагов''' &amp;lt;tex&amp;gt;(\alpha \Rightarrow^* \beta)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&amp;lt;tex&amp;gt;\exists \gamma_1, \gamma_2, \ldots,\gamma_n : \alpha \Rightarrow \gamma_1 \Rightarrow \gamma_2 \Rightarrow  \ldots \Rightarrow \gamma_n \Rightarrow \beta&amp;lt;/tex&amp;gt; ([[Транзитивное замыкание | Рефлексивно-транзитивное замыкание]] отношения &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt;).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
  '''Языком грамматики''' (англ. ''Language of grammar'')        называется &amp;lt;tex&amp;gt;L(\Gamma) = \{\omega \in \Sigma^{*} \mid S \Rightarrow^{*}\omega\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id=sform&lt;br /&gt;
|definition = &lt;br /&gt;
'''Сентенциальная форма''' (англ. ''Sentential form'')  — последовательность терминалов и нетерминалов, выводимых из начального символа. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Обозначения ==&lt;br /&gt;
* Нетерминалы обозначаются заглавными буквами латинского алфавита (например: &amp;lt;tex&amp;gt;A, B, C&amp;lt;/tex&amp;gt;).&lt;br /&gt;
* Терминалы обозначаются строчными буквами из начала латинского алфавита (например: &amp;lt;tex&amp;gt;a, b, c&amp;lt;/tex&amp;gt;).&lt;br /&gt;
* Последовательности из терминалов (слова) обозначают строчными буквами из конца латинского или греческого алфавита (например: &amp;lt;tex&amp;gt;\omega&amp;lt;/tex&amp;gt;).&amp;lt;br/&amp;gt;&lt;br /&gt;
* Последовательности из терминалов и нетерминалов обозначаются строчными буквами из начала греческого алфавита (например: &amp;lt;tex&amp;gt;\beta, \alpha&amp;lt;/tex&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Примеры грамматик==&lt;br /&gt;
===Правильные скобочные последовательности===&lt;br /&gt;
&amp;lt;tex&amp;gt;\Sigma = \{(, )\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;\begin{array}{lcr}&lt;br /&gt;
S \to (S) \\&lt;br /&gt;
S \to SS \\&lt;br /&gt;
S \to \varepsilon&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вывод строки &amp;lt;tex&amp;gt;(()())&amp;lt;/tex&amp;gt;:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;S\Rightarrow(\boldsymbol{S})\Rightarrow(\boldsymbol{S}S)\Rightarrow((S)\boldsymbol{S})\Rightarrow((\boldsymbol{S})(S))\Rightarrow(()(\boldsymbol{S}))\Rightarrow(()())&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Вывод строки &amp;lt;tex&amp;gt;((()())(()))&amp;lt;/tex&amp;gt;:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;S\Rightarrow(\boldsymbol{S})\Rightarrow(\boldsymbol{S}S)\rightarrow((S)\boldsymbol{S})\rightarrow((\boldsymbol{S})(S))\rightarrow&amp;lt;/tex&amp;gt;&amp;lt;tex&amp;gt;\rightarrow((\boldsymbol{S}S)((S)))\rightarrow (((\boldsymbol{S})S)((S))) \rightarrow ((()\boldsymbol{S})((S)))\rightarrow&amp;lt;/tex&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;tex&amp;gt;\rightarrow((()(\boldsymbol{S}))((S)))\rightarrow ((()())((\boldsymbol{S})))\rightarrow ((()())(()))&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Арифметические выражения===&lt;br /&gt;
&amp;lt;tex&amp;gt;\Sigma = \{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, *, /, -, (, )\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\begin{array}{lcr}&lt;br /&gt;
S \rightarrow S O S\\&lt;br /&gt;
S \rightarrow (S)\\&lt;br /&gt;
S \rightarrow 0\\&lt;br /&gt;
S \rightarrow DN\\&lt;br /&gt;
O \rightarrow +  \mid -  \mid *  \mid /\\&lt;br /&gt;
D \rightarrow 1  \mid 2  \mid 3  \mid 4  \mid 5  \mid 6  \mid 7  \mid 8  \mid 9\\&lt;br /&gt;
N \rightarrow NN  \mid \varepsilon\\&lt;br /&gt;
N \rightarrow 0  \mid 1  \mid 2  \mid 3  \mid 4  \mid 5  \mid 6  \mid 7  \mid 8  \mid 9.&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/tex&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вывод строки &amp;lt;tex&amp;gt;2+2*2&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;S \Rightarrow SO\boldsymbol{S} \Rightarrow \boldsymbol{S} OSOS \Rightarrow 2O \boldsymbol{S} OS \Rightarrow 2O2O \boldsymbol{S} \Rightarrow 2 \boldsymbol{O} 2O2 \Rightarrow 2+2\boldsymbol{O}2 \Rightarrow 2+2*2&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|Левосторонний вывод]] этой же строки: &amp;lt;tex&amp;gt;S \Rightarrow \boldsymbol{S}OS \Rightarrow 2\boldsymbol{O}S \Rightarrow 2+\boldsymbol{S} \Rightarrow 2+\boldsymbol{S}OS \Rightarrow 2+2\boldsymbol{O}S \Rightarrow  2+2*\boldsymbol{S} \Rightarrow  2+2*2&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Язык &amp;lt;tex&amp;gt;0^n1^n2^n&amp;lt;/tex&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Данный язык является [[Иерархия Хомского формальных грамматик#Класс 1 |контекстно-зависимым]]. КЗ-грамматика для языка приведена ниже, а через [[Лемма о разрастании для КС-грамматик#Пример доказательства неконтекстно-свободности языка с использованием леммы | лемму о разрастании]] доказывается его неконтекстно-свободность. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Sigma = \{0, 1, 2\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
S \rightarrow 012 \\&lt;br /&gt;
S \rightarrow 0TS2 \\&lt;br /&gt;
T0 \rightarrow 0T \\ &lt;br /&gt;
T1 \rightarrow 11 &lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вывод строки &amp;lt;tex&amp;gt;000111222&amp;lt;/tex&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S \Rightarrow 0T\boldsymbol{S} 2 \Rightarrow 0T0T\boldsymbol{S}22 \Rightarrow 0T0\boldsymbol{T0}1222 \Rightarrow  0\boldsymbol{T0}0T1222 \Rightarrow 00\boldsymbol{T0}T1222 \Rightarrow 000T\boldsymbol{T1}222 \Rightarrow 000\boldsymbol{T1}1222 \Rightarrow 000111222&amp;lt;/tex&amp;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 \rightarrow 0TS2 &amp;lt;/tex&amp;gt;. Потом выполняем правило &amp;lt;tex&amp;gt;S \rightarrow 012 &amp;lt;/tex&amp;gt;,  &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; раз выполняем &amp;lt;tex&amp;gt;T0 \rightarrow 0T &amp;lt;/tex&amp;gt;. После этого у нас получается строка &amp;lt;tex&amp;gt;0^nT^{n-1}2^n&amp;lt;/tex&amp;gt;. Выполняем &amp;lt;tex&amp;gt;n-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;
&lt;br /&gt;
== Источники информации==&lt;br /&gt;
* [[wikipedia:Formal_grammar | Wikipedia {{---}} Formal grammar]]&lt;br /&gt;
* [[wikipedia:Formal_language_theory | Wikipedia {{---}} Formal language]]&lt;br /&gt;
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория формальных языков]]&lt;br /&gt;
[[Категория: Контекстно-свободные грамматики]]&lt;br /&gt;
[[Категория: Базовые понятия о грамматиках]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</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%9A%D0%B0%D1%80%D0%BF%D0%B0_%E2%80%94_%D0%9B%D0%B8%D0%BF%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=83384</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%9A%D0%B0%D1%80%D0%BF%D0%B0_%E2%80%94_%D0%9B%D0%B8%D0%BF%D1%82%D0%BE%D0%BD%D0%B0&amp;diff=83384"/>
				<updated>2022-09-01T04:49:54Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
|statement= Пусть &amp;lt;tex&amp;gt;\mathrm{SAT} \in \mathrm{P}/poly &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;
|proof=&lt;br /&gt;
Пусть нам дана формула &amp;lt;tex&amp;gt;\phi&amp;lt;/tex&amp;gt; с &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменными.&amp;lt;br&amp;gt;&lt;br /&gt;
Попробуем построить схемы &amp;lt;tex&amp;gt;C_n^1, \ldots, C_n^n&amp;lt;/tex&amp;gt;, работающие следующим образом:&lt;br /&gt;
*&amp;lt;tex&amp;gt;C_n^1(\phi) = 1 \Leftrightarrow \exists x_2,\ldots, x_n: \phi(1,x_2, \ldots, x_n)=1&amp;lt;/tex&amp;gt;;&lt;br /&gt;
*&amp;lt;tex&amp;gt; \ldots &amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;C_n^i(\phi, b_1, \ldots, b_{i-1}) = 1 \Leftrightarrow \exists x_{i+1},\ldots, x_n: \phi(b_1, \ldots, b_{i-1},1,x_{i+1}, \ldots, x_n)=1&amp;lt;/tex&amp;gt;;&lt;br /&gt;
*&amp;lt;tex&amp;gt; \ldots &amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;C_n^n(\phi, b_1, \ldots, b_{n - 1}) = 1 \Leftrightarrow \phi(b_1, \ldots, b_{n-1}, 1)=1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Задача определения возвращаемого значения таких схем тогда будет эквивалентна задаче &amp;lt;tex&amp;gt;\mathrm{SAT}&amp;lt;/tex&amp;gt;. По условию &amp;lt;tex&amp;gt;\mathrm{SAT} \in \mathrm{P}/poly &amp;lt;/tex&amp;gt;, следовательно, такие схемы существуют и каждая из них будет полиномиального размера. Рассмотрим последовательность: &amp;lt;tex&amp;gt;b_1=C_n^1(\phi), b_2=C_n^2(\phi, b1), \ldots, b_n=C_n^n(\phi, b_1, \ldots, b_{n-1})&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; удовлетворить нельзя. Если при &amp;lt;tex&amp;gt;b_1=1&amp;lt;/tex&amp;gt; формулу &amp;lt;tex&amp;gt;\phi&amp;lt;/tex&amp;gt; удовлетворить возможно, то есть &amp;lt;tex&amp;gt;C_n^1(\phi)=1&amp;lt;/tex&amp;gt;, то нужно взять &amp;lt;tex&amp;gt;b_1=1&amp;lt;/tex&amp;gt;, если же нет, если &amp;lt;tex&amp;gt;C_n^1(\phi)=0&amp;lt;/tex&amp;gt;, тогда имеет смысл искать следующие биты последовательности, удовлетворяющей &amp;lt;tex&amp;gt;\phi&amp;lt;/tex&amp;gt; только при &amp;lt;tex&amp;gt;b_1=0&amp;lt;/tex&amp;gt;. Следующие биты последовательности выбираются по аналогии. &amp;lt;br&amp;gt;&lt;br /&gt;
За &amp;lt;tex&amp;gt;C_n&amp;lt;/tex&amp;gt; обозначим схему, строящую описанным алгоритмом требуемую последовательность. Очевидно, что она будет полиномиального размера (как совокупность &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; схем полиномиального размера). Это и есть требуемая схема для &amp;lt;tex&amp;gt;\phi&amp;lt;/tex&amp;gt;.&lt;br /&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;\mathrm{NP} \subset \mathrm{P}/poly&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\Sigma_2 = \Pi_2&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt;L \in \mathrm{\Pi_2}&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt; \exists p \in poly, \phi \in \mathrm{\widetilde{P}}, \forall x  \in L  \Leftrightarrow \forall y \ \exists z : |y|,|z| \le p(|x|), \phi(x, y, z) = 1&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Для фиксированного &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\phi&amp;lt;/tex&amp;gt; можно рассматривать как формулу с &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; битовыми переменными (так как мы знаем, что &amp;lt;tex&amp;gt;\phi \in \mathrm{\widetilde{P}}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;\mathrm{P} \subset \mathrm{P}/poly&amp;lt;/tex&amp;gt;), где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} полином от длины входа &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; (из-за ограничений накладываемых по определению класса &amp;lt;tex&amp;gt;\mathrm{\Pi_2}&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;|y|, |z|)&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;z&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;\phi(x,y,z)=1&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;\phi&amp;lt;/tex&amp;gt;. Теперь &amp;lt;tex&amp;gt;\phi&amp;lt;/tex&amp;gt; зависит только от &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;\phi_{xy}(z)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Из предыдущей леммы мы установили существования семейство схем полиномиального размера &amp;lt;tex&amp;gt;C_1, \ldots, C_n, \ldots &amp;lt;/tex&amp;gt; Запустим схему &amp;lt;tex&amp;gt;C_{p(|x|)}&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;\phi_{xy}&amp;lt;/tex&amp;gt;. Эта схема вернет нам такое значение &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;\phi(x,y,z)=1&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;\phi(x,y,z) &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;br&amp;gt;&lt;br /&gt;
Тогда определение языка &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; можно переписать: &amp;lt;tex&amp;gt;L = \{x \bigm| \forall y \ \phi(x, y, C_{p(|x|)}(\phi_{xy})) = 1\}&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt;L_1 = \{x\bigm|\exists G \ \forall y \ \phi(x, y, G(\phi_{xy})) = 1\}&amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Покажем, что &amp;lt;tex&amp;gt;L=L_1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
*&amp;lt;tex&amp;gt; L \subset L_1&amp;lt;/tex&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Очевидно. Можно за &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; взять &amp;lt;tex&amp;gt;C_{p(|x|)}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_1 \subset L&amp;lt;/tex&amp;gt;&lt;br /&gt;
Мы докажем это утверждение, если покажем, что если какое-то слово не принадлежит &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, то оно не принадлежит и &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\exists y \ \forall z \ \phi(x,y,z)=0 &amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;\nexists G \ \forall y \ \phi(x, y, G(\phi_{xy}))=1&amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Таким образом &amp;lt;tex&amp;gt;L =\{x\bigm|\exists G, |G| &amp;lt; p(|x|) \ \forall y, |y|&amp;lt;p(|x|) \ \phi(x, y, G(\phi_{xy})) = 1\}&amp;lt;/tex&amp;gt;. Следовательно, &amp;lt;tex&amp;gt;L \in \Sigma_2&amp;lt;/tex&amp;gt;. Значит, &amp;lt;tex&amp;gt;\mathrm{\Pi_2} \subset \mathrm{\Sigma_2} &amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Докажем теперь, что &amp;lt;tex&amp;gt;\mathrm{\Sigma_2} \subset \mathrm{\Pi_2} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt;L \in \mathrm{\Sigma_2}&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;L \in \mathrm{\Sigma_2} \Rightarrow \overline{L} \in \mathrm{\Pi_2} \Rightarrow \overline{L} \in \mathrm{\Sigma_2} \Rightarrow L \in \mathrm{\Pi_2}&amp;lt;/tex&amp;gt;. Получается, что &amp;lt;tex&amp;gt;\mathrm{\Sigma_2} \subset \mathrm{\Pi_2} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Итого, &amp;lt;tex&amp;gt;\mathrm{\Sigma_2} = \mathrm{\Pi_2} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория сложности]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%BE%D0%B9_%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8,_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%A4%D0%B8%D1%88%D0%B5%D1%80%D0%B0-%D0%99%D0%B5%D1%82%D1%81%D0%B0&amp;diff=83383</id>
		<title>Метод генерации случайной перестановки, алгоритм Фишера-Йетса</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%BE%D0%B9_%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8,_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%A4%D0%B8%D1%88%D0%B5%D1%80%D0%B0-%D0%99%D0%B5%D1%82%D1%81%D0%B0&amp;diff=83383"/>
				<updated>2022-09-01T04:49:46Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
'''Тасование Фишера-Йетса''' (названо в честь Рональда Фишера (Ronald Fisher) и Франка Йетса (Frank Yates)) {{---}} алгоритм создания случайных перестановок конечного множества, попросту говоря, для случайного тасования множества.  &lt;br /&gt;
Основная процедура тасования Фишера-Йетса аналогична случайному вытаскиванию записок с числами из шляпы или карт из колоды, один элемент за другим, пока элементы не кончатся. Алгоритм обеспечивает эффективный и строгий метод таких операций, гарантирующий несмещённый результат. Время работы алгоритма &amp;lt;tex&amp;gt; O(n)&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;
&lt;br /&gt;
Пусть &amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{random(1..i) }&amp;lt;/tex&amp;gt; генерирует случайное число в отрезке &amp;lt;tex&amp;gt; [1;\; i] &amp;lt;/tex&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
Следующий алгоритм решает задачу:&lt;br /&gt;
&lt;br /&gt;
  '''int[n]''' randomPermutation(a: '''int[n]'''):  &amp;lt;font color = green&amp;gt; // '''n''' {{---}} длина перестановки &amp;lt;/font&amp;gt;&lt;br /&gt;
    '''for''' i = n '''downto''' 1&lt;br /&gt;
      j = random(1..i)&lt;br /&gt;
      swap(a[i], a[j])&lt;br /&gt;
    '''return''' a&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;1&amp;lt;/tex&amp;gt; элемент, &amp;lt;tex&amp;gt; n - 1&amp;lt;/tex&amp;gt; способов выбрать &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;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; n \times (n - 1) \times \ldots \times 1 = n!  &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; \dfrac{1}{n!}&amp;lt;/tex&amp;gt;, то есть все перестановки равновероятны.&lt;br /&gt;
&lt;br /&gt;
==Неправильные способы реализации==&lt;br /&gt;
Небольшая модификация этого алгоритма, может резко сказаться на его корректности. &lt;br /&gt;
&lt;br /&gt;
===Пример неправильной реализации:===&lt;br /&gt;
  '''for''' i = n '''downto''' 1&lt;br /&gt;
    swap(a[i], a[random(1..n)])&lt;br /&gt;
В данном случае число способов сгенерировать последовательность равно &amp;lt;tex&amp;gt;n^n&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; n^n&amp;lt;/tex&amp;gt; никогда не может делиться на &amp;lt;tex&amp;gt; n!&amp;lt;/tex&amp;gt; без остатка при &amp;lt;tex&amp;gt; n &amp;gt; 2&amp;lt;/tex&amp;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; n&amp;lt;/tex&amp;gt; общих простых делителей), то некоторые перестановки должны появляться чаще, чем другие.&lt;br /&gt;
&lt;br /&gt;
===Другой пример неправильной реализации:===&lt;br /&gt;
  '''for''' i = n '''downto''' 1&lt;br /&gt;
    swap(a[random(1..n)], a[random(1..n)])&lt;br /&gt;
&lt;br /&gt;
Теперь уже число способов сгенерировать последовательность равно &amp;lt;tex&amp;gt;(n^2)^n&amp;lt;/tex&amp;gt;. По той же причине, что и раньше &amp;lt;tex&amp;gt; (n^2)^n&amp;lt;/tex&amp;gt; не делится на  &amp;lt;tex&amp;gt; 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;
==См.также==&lt;br /&gt;
*[[Методы генерации случайного сочетания | Методы генерации случайного сочетания]]&lt;br /&gt;
==Источники информации==&lt;br /&gt;
*[http://bost.ocks.org/mike/shuffle/ Интерактивный пример]&lt;br /&gt;
*Д.Э. Кнут Искусство программирования, том 2. Получисленные методы — 3-е изд. — М.: «Вильямс», 2007. — С. 832. — ISBN 0-201-89684-2&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/%D0%A2%D0%B0%D1%81%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A4%D0%B8%D1%88%D0%B5%D1%80%D0%B0%E2%80%93%D0%99%D0%B5%D1%82%D1%81%D0%B0 Википедия — Тасование Фишера-Йетса]&lt;br /&gt;
*[https://en.wikipedia.org/wiki/Fisher–Yates_shuffle Wikipedia — Fisher-Yates shuffle]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Комбинаторика ]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Генерация комбинаторных объектов]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</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%94%D0%B6%D0%BE%D0%BD%D1%81%D0%BE%D0%BD%D0%B0&amp;diff=83382</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%94%D0%B6%D0%BE%D0%BD%D1%81%D0%BE%D0%BD%D0%B0&amp;diff=83382"/>
				<updated>2022-09-01T04:49:38Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
'''Алгоритм Джонсона''' (англ. ''Johnson's algorithm'') находит кратчайшие пути между всеми парами вершин во взвешенном ориентированном графе с любыми весами ребер, но не имеющем отрицательных циклов.&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^2\log(V) + VE) &amp;lt;/tex&amp;gt;. Для разреженных графов этот алгоритм ведет себя асимптотически быстрее [[Алгоритм Флойда|алгоритма Флойда]]. Этот алгоритм либо возвращает матрицу кратчайших расстояний между всеми парами вершин, либо сообщение о том, что в графе существует цикл отрицательной длины.&lt;br /&gt;
&lt;br /&gt;
В этом алгоритме используется метод '''изменения веса''' (англ. ''reweighting''). Суть его заключается в том, что для заданного графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; строится новая весовая функция &amp;lt;tex&amp;gt; \omega_\varphi &amp;lt;/tex&amp;gt;, неотрицательная для всех ребер графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; и сохраняющая кратчайшие пути. Такая весовая функция строится с помощью так называемой [[Амортизационный_анализ#.D0.9C.D0.B5.D1.82.D0.BE.D0.B4_.D0.BF.D0.BE.D1.82.D0.B5.D0.BD.D1.86.D0.B8.D0.B0.D0.BB.D0.BE.D0.B2|потенциальной]] функции.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; \varphi : V \rightarrow \mathbb R &amp;lt;/tex&amp;gt; — произвольное отображение из множества вершин в вещественные числа. Тогда новой весовой функцией будет &amp;lt;tex&amp;gt; \omega_\varphi(u, v) = \omega(u, v) + \varphi(u) - \varphi(v) &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; G &amp;lt;/tex&amp;gt;, из которой проведены ориентированные ребра нулевого веса во все остальные вершины графа, и запуском [[Алгоритм Форда-Беллмана|алгоритма Форда-Беллмана]] из нее (&amp;lt;tex&amp;gt; \varphi(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;). На этом же этапе мы сможем обнаружить наличие отрицательного цикла в графе.&lt;br /&gt;
&lt;br /&gt;
Теперь, когда мы знаем, что веса всех ребер неотрицательны, и кратчайшие пути сохранятся, можно запустить [[Алгоритм Дейкстры|алгоритм Дейкстры]] из каждой вершины и таким образом найти кратчайшие расстояния между всеми парами вершин.&lt;br /&gt;
&lt;br /&gt;
=== Сохранение кратчайших путей ===&lt;br /&gt;
Утверждается, что если какой-то путь &amp;lt;tex&amp;gt; P &amp;lt;/tex&amp;gt; был кратчайшим относительно весовой функции &amp;lt;tex&amp;gt; \omega &amp;lt;/tex&amp;gt;, то он будет кратчайшим и относительно новой весовой функции &amp;lt;tex&amp;gt; \omega_\varphi &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;P,\; Q &amp;lt;/tex&amp;gt; {{---}} два пути &amp;lt;tex&amp;gt; a \rightsquigarrow b\;&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\omega(P) &amp;lt; \omega(Q).&amp;lt;/tex&amp;gt; Тогда &amp;lt;tex&amp;gt;\forall \varphi: \; \omega_\varphi(P) &amp;lt; \omega_\varphi(Q)&amp;lt;/tex&amp;gt; &lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
:Рассмотрим путь &amp;lt;tex&amp;gt;P: \;u_0 \rightarrow u_1 \rightarrow u_2 \rightarrow \ldots \rightarrow u_k &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Его вес с новой весовой функцией равен &amp;lt;tex&amp;gt;\omega_\varphi(P) = \omega_\varphi(u_0u_1) + \omega_\varphi(u_1u_2) + \ldots + \omega_\varphi(u_{k-1}u_k) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:Вставим определение функции &amp;lt;tex&amp;gt; \omega_\varphi : \omega_\varphi(P) = \varphi(u_0) + \omega(u_0u_1) - \varphi(u_1) + \ldots + \varphi(u_{k-1}) + \omega(u_{k-1}u_k) - \varphi(u_k) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Заметим, что потенциалы все промежуточных вершин в пути сократятся. &amp;lt;tex&amp;gt; \omega_\varphi(P) = \varphi(u_0) + \omega(P) - \varphi(u_k)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:По изначальному предположению: &amp;lt;tex&amp;gt;\omega(P) &amp;lt; \omega(Q)&amp;lt;/tex&amp;gt;. С новой весовой функцией веса соответствующих путей будут: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt;\omega_\varphi(P) = \varphi(a) + \omega(P) - \varphi(b)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt;\omega_\varphi(Q) = \varphi(a) + \omega(Q) - \varphi(b)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Отсюда, &amp;lt;tex&amp;gt;\omega_\varphi(P) &amp;lt; \omega_\varphi(Q)&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;
В графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; нет отрицательных циклов &amp;lt;tex&amp;gt;\Leftrightarrow&amp;lt;/tex&amp;gt; существует потенциальная функция &amp;lt;tex&amp;gt; \phi:\; \forall uv \in E\; \omega_\varphi(uv) \geqslant 0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Leftarrow &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;&lt;br /&gt;
&lt;br /&gt;
:По лемме, его вес равен &amp;lt;tex&amp;gt; \omega(C) = \omega_\varphi(C) + \varphi(u_0) - \varphi(u_0) = \omega_\varphi(C) \geqslant 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\Rightarrow &amp;lt;/tex&amp;gt;: Добавим фиктивную вершину &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в граф, а также ребра &amp;lt;tex&amp;gt; s \to u &amp;lt;/tex&amp;gt; весом &amp;lt;tex&amp;gt; 0 &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;\delta(u,v)&amp;lt;/tex&amp;gt; как минимальное расстояние между вершинами &amp;lt;tex&amp;gt;u,\; v&amp;lt;/tex&amp;gt;, введем потенциальную функцию &amp;lt;tex&amp;gt; \phi &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;tex&amp;gt;\phi(u) = \delta(s,u)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Рассмотрим вес произвольного ребра &amp;lt;tex&amp;gt; uv \in E &amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;\omega_\phi(uv) = \phi(u) + \omega(uv) - \phi(v) = \delta(s, u) + \omega(uv) - \delta(s, v)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:Поскольку &amp;lt;tex&amp;gt;\delta(s, u) + \omega(uv) &amp;lt;/tex&amp;gt; {{---}} вес какого-то пути &amp;lt;tex&amp;gt; s \rightsquigarrow v &amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; \delta(s, v) &amp;lt;/tex&amp;gt; {{---}} вес кратчайшего пути &amp;lt;tex&amp;gt; s \rightsquigarrow v&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt; \delta(s, u) + \omega(uv) \geqslant \delta(s, v) \Rightarrow \delta(s, u) + \omega(uv) - \delta(s, v) = \omega_\varphi(uv) \geqslant 0 &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;G' = (V',\;E')&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V' = V \cup \{s\}&amp;lt;/tex&amp;gt;,  &amp;lt;tex&amp;gt;s \not\in V&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;E' = E \cup \{(s,\;v): \omega(s, v) = 0,\ v \in V \}&amp;lt;/tex&amp;gt;&lt;br /&gt;
 '''function''' Johnson(G): '''int[][]'''&lt;br /&gt;
     '''if''' BellmanFord&amp;lt;tex&amp;gt;(G',\;\omega,\;s)&amp;lt;/tex&amp;gt; == ''false''&lt;br /&gt;
         print &amp;quot;Входной граф содержит цикл с отрицательным весом&amp;quot;&lt;br /&gt;
         '''return''' &amp;lt;tex&amp;gt;\varnothing&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''else''' '''for''' &amp;lt;tex&amp;gt;v \in V'&amp;lt;/tex&amp;gt;&lt;br /&gt;
         &amp;lt;tex&amp;gt;\varphi(v)&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;\delta(s,\;v)&amp;lt;/tex&amp;gt; &amp;lt;font color = green&amp;gt;// &amp;lt;tex&amp;gt;\delta(s,\;v)&amp;lt;/tex&amp;gt; вычислено алгоритмом Беллмана — Форда&amp;lt;/font&amp;gt;&lt;br /&gt;
         '''for''' &amp;lt;tex&amp;gt;(u,\;v) \in E'&amp;lt;/tex&amp;gt;&lt;br /&gt;
             &amp;lt;tex&amp;gt;\omega_\varphi(u,\;v)&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt; \omega(u,\;v) + \varphi(u) - \varphi(v)&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''for''' &amp;lt;tex&amp;gt;u \in V&amp;lt;/tex&amp;gt;&lt;br /&gt;
             Dijkstra&amp;lt;tex&amp;gt;(G,\;\omega_\varphi,\;u)&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''for''' &amp;lt;tex&amp;gt;v \in V&amp;lt;/tex&amp;gt;&lt;br /&gt;
                 &amp;lt;tex&amp;gt;d_{uv} \leftarrow \delta_\varphi(u,\;v) + \varphi(v) - \varphi(u)&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''return''' &amp;lt;tex&amp;gt;d&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;O(VE + VD)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;O(D)&amp;lt;/tex&amp;gt; — время работы [[Алгоритм Дейкстры| алгоритма Дейкстры]]. Если в алгоритме Дейкстры неубывающая очередь с приоритетами реализована в виде [[Фибоначчиевы кучи| фибоначчиевой кучи]], то время работы алгоритма Джонсона есть &amp;lt;tex&amp;gt;O(V^2\log V + V E)&amp;lt;/tex&amp;gt;. В случае реализации очереди с приоритетами в виде двоичной кучи время работы равно &amp;lt;tex&amp;gt;O(V E \log V)&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;
* ''Кормен Т., Лейзерсон Ч., Ривест Р.'' Алгоритмы: построение и анализ. 2-е изд. — М.: Издательский дом «Вильямс», 2007. — С. 1296.&lt;br /&gt;
* [http://rain.ifmo.ru/cat/view.php/vis/graph-paths/johnson-2001 Визуализатор алгоритма]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Кратчайшие пути в графах ]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE%D1%82%D0%B5%D1%80%D1%8C_%D0%B8_%D1%8D%D0%BC%D0%BF%D0%B8%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%80%D0%B8%D1%81%D0%BA&amp;diff=83381</id>
		<title>Функция потерь и эмпирический риск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE%D1%82%D0%B5%D1%80%D1%8C_%D0%B8_%D1%8D%D0%BC%D0%BF%D0%B8%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%80%D0%B8%D1%81%D0%BA&amp;diff=83381"/>
				<updated>2022-09-01T04:49:31Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
'''Функция потерь''' ('''loss function''') — отображение результата работы алгоритма на &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt;, показывающее &amp;quot;стоимость&amp;quot; ошибки.&lt;br /&gt;
&lt;br /&gt;
Часто применяются следующие функции потерь (&amp;lt;tex&amp;gt;a : (X → \mathbb R)&amp;lt;/tex&amp;gt; — уверенность алгоритма в определённом классе для задач классификации / значение функции для регрессии, &amp;lt;tex&amp;gt;y : (X → Y)&amp;lt;/tex&amp;gt; — метки; для бинарного классификатора &amp;lt;tex&amp;gt;Y = \{-1;1\}&amp;lt;/tex&amp;gt;):&lt;br /&gt;
* 0-1 функция&lt;br /&gt;
: &amp;lt;tex&amp;gt;L(a, x) = [a(x) \neq y(x)]&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Квадратичная функция&lt;br /&gt;
: &amp;lt;tex&amp;gt;L(a, x) = (a(x) - y(x))^2&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Hinge loss&lt;br /&gt;
: &amp;lt;tex&amp;gt;L(a, x) = max(0, 1 - a(x) \cdot y(x))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Логистическая&lt;br /&gt;
: &amp;lt;tex&amp;gt;L(a, x) = \dfrac{ln(1+e^{-y(x)a(x)})}{ln 2}&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Log loss&lt;br /&gt;
: &amp;lt;tex&amp;gt;t(y, x) = \dfrac{1 + y(x)}{2}, L(a, x) = -t \cdot ln (a(x)) - (1-t) \cdot ln (1-a(x))&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;Q(a, X^m) = \dfrac{1}{m} \sum\limits_{x \in X} L(a, x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Метод минимизации эмпирического риска = &lt;br /&gt;
Логично предположить, что если алгоритм хорошо показывает себя на обучающей выборке, то и на реальных данных он будет работать неплохо. Так подходим к конструктивному методу обучения — методу минимизации эмпирического риска. &lt;br /&gt;
Суть метода, как следует из названия, в минимизации функционала &amp;lt;tex&amp;gt;Q(a, X^m)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
: &amp;lt;tex&amp;gt;\DeclareMathOperator{\argmin}{argmin} a^{*} = \argmin\limits_{a \in A} Q(a, X^m)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Метод простой, общий, конструктивный и зачастую сводит задачу обучения к численному поиску минимума в [[Модель_алгоритма_и_её_выбор|модели алгоритма]]. Однако столь пристальное внимание к обучающей выборке приводит к явлению [[Переобучение|переобучения]].&lt;/div&gt;</summary>
		<author><name>91.212.153.123</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%BE_%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D0%BA%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%81%D0%BE%D0%BF%D1%80%D1%8F%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0&amp;diff=83380</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%BE_%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D0%BA%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%81%D0%BE%D0%BF%D1%80%D1%8F%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0&amp;diff=83380"/>
				<updated>2022-09-01T04:49:23Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;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;
Итак, рассмотрим оператор &amp;lt;tex&amp;gt;A^*: F^* \to E^*&amp;lt;/tex&amp;gt;. &lt;br /&gt;
По определению сопряженного оператора, если &amp;lt;tex&amp;gt;\phi \in F^*&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;A^*\phi = \phi A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Будем последовательны.&lt;br /&gt;
&lt;br /&gt;
1. Для доказательства необходимо показать, что множество &amp;lt;tex&amp;gt;\{A^*\phi \mid \|\phi\| \le 1\}&amp;lt;/tex&amp;gt; будет относительно компактно в &amp;lt;tex&amp;gt;E^*&amp;lt;/tex&amp;gt;. &lt;br /&gt;
Для этого надо показать, что если взята последовательность &amp;lt;tex&amp;gt;\{\phi_n\}&amp;lt;/tex&amp;gt; такая, что &amp;lt;tex&amp;gt;\|\phi_n\| \le 1\&amp;lt;/tex&amp;gt;, то можно выбрать &amp;lt;tex&amp;gt;\{\phi_{n_k}\}&amp;lt;/tex&amp;gt; такую, что &amp;lt;tex&amp;gt;A^*\phi_{n_k}&amp;lt;/tex&amp;gt; сходится в &amp;lt;tex&amp;gt;E^*&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
2. Рассмотрим в &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; единичный замкнутый шар &amp;lt;tex&amp;gt;\overline{V}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
По компактности оператора &amp;lt;tex&amp;gt;K = Cl(A(\overline{V})) \subset F&amp;lt;/tex&amp;gt; будет метрическим компактом.&lt;br /&gt;
Рассмотрим ''сужение'' функционалов &amp;lt;tex&amp;gt;\phi_n&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;K&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3. Докажем [[равностепенная непрерывность|равностепенную непрерывность]] этой последовательности: рассмотрим &amp;lt;tex&amp;gt;y, z \in K&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Норма &lt;br /&gt;
:&amp;lt;tex&amp;gt;\|\phi_n(z) - \phi_n(y)\| = \|\phi_n(z - y)\| \le \|\phi_n\| \|z - y\| \le \|z - y\|&amp;lt;/tex&amp;gt;&lt;br /&gt;
не зависит от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, а следовательно &amp;lt;tex&amp;gt;\{\phi_n\}&amp;lt;/tex&amp;gt; равностепенно непрерывна.&lt;br /&gt;
&lt;br /&gt;
4. Выполняется и ''равномерная ограниченность'' последовательности. Для любого &amp;lt;tex&amp;gt;y \in K&amp;lt;/tex&amp;gt;:&lt;br /&gt;
:&amp;lt;tex&amp;gt;\|\phi_n(y)\| \le \|\phi_n\| \|y\| \le \|y\| \le const&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
5. Таким образом &amp;lt;tex&amp;gt;\{\phi_n\}&amp;lt;/tex&amp;gt; равномерно ограничена и равностепенно непрерывна, следовательно, по теореме Арцела — Асколи из нее можно выделить равномерно сходящуюся последовательность &amp;lt;tex&amp;gt;\{\phi_{n_m}\}&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;A^*\{\phi_{n_m}\}&amp;lt;/tex&amp;gt; сходится в &amp;lt;tex&amp;gt;E^*&amp;lt;/tex&amp;gt;. Для этого достаточно выяснить, что &amp;lt;tex&amp;gt;A^*\{\phi_{n_m}\}&amp;lt;/tex&amp;gt; равномерно сходится (при устремлении &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; к бесконечности) на &amp;lt;tex&amp;gt;\overline{V}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
6. Рассмотрим &amp;lt;tex&amp;gt;\varepsilon &amp;gt; 0&amp;lt;/tex&amp;gt;. По равномерной сходимости &amp;lt;tex&amp;gt;\{\phi_{n_m}\}&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;K&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&amp;lt;tex&amp;gt;\exists p_0 : \forall i, j \ge p_0 : \forall y \in K : \| \phi_{n_j}(y) - \phi_{n_i}(y) \| \le \varepsilon&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
7. Следовательно, для любого &amp;lt;tex&amp;gt;x \in \overline{V}&amp;lt;/tex&amp;gt; верно &amp;lt;tex&amp;gt;\| \phi_{n_j}(Ax) - \phi_{n_i}(Ax) \| \le \varepsilon&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Замечая, что &amp;lt;tex&amp;gt;\phi_{n_i}(Ax) = A^*(\phi_{n_i}, x)&amp;lt;/tex&amp;gt;, приходим к равномерной сходимости &amp;lt;tex&amp;gt;A^*\phi_{n_m}&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;\overline{V}&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Таким образом, теорема доказана.&lt;/div&gt;</summary>
		<author><name>91.212.153.123</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_2019_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0&amp;diff=83379</id>
		<title>Список заданий по ДМ 2к 2019 весна</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_2019_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0&amp;diff=83379"/>
				<updated>2022-09-01T04:49:16Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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(s) = e^s$ определен как $e^s=1+\frac{1}{1!}s+\frac{1}{2!}s^2+\frac{1}{3!}s^3+\ldots+\frac{1}{n!}s^n+\ldots$. Логично, что $e^{-s}=1-\frac{1}{1!}s+\frac{1}{2!}s^2-\frac{1}{3!}s^3+\ldots+(-1)^n\frac{1}{n!}s^n+\ldots$. Докажите, используя определение умножения для степенных рядов, что $e^se^{-s}=1$.&lt;br /&gt;
# Формальный степенной ряд $(1+s)^\alpha$ определен как $(1+s)^\alpha=1+\frac{\alpha}{1}s+\frac{\alpha(\alpha-1)}{1 \cdot 2}s^2+\ldots+\frac{\alpha(\alpha-1)\ldots(\alpha-n+1)}{1 \cdot 2 \cdot\ldots\cdot n}s^n+\ldots$. Докажите, что $(1+s)^\alpha(1+s)^\beta=(1+s)^{\alpha+\beta}$.&lt;br /&gt;
# Формальный степенной ряд $\ln\left(\frac{1}{1-s}\right)$ определен как $\ln\left(\frac{1}{1-s}\right)=s+\frac{1}{2}s^2+\frac{1}{3}s^3+\ldots+\frac{1}{n}s^n+\ldots$. Докажите, что $\exp\left(\ln\left(\frac{1}{1-s}\right)\right)=(1-s)^{-1}$.&lt;br /&gt;
# Пусть $B(s) = b_1s+b_2s^2+b_3s^3+\ldots+b_ns^n+\ldots$, причем $b_1\ne 0$. Пусть формальные степенные ряды $A(s)$ и $C(s)$ таковы, что $A(B(s)) = s$, $B(C(s))=s$. Докажите, что $A(s)=C(s)$ Этот ряд называется обратным к $B(s)$, обозначается как $B^{-1}(s)$.&lt;br /&gt;
# Будем называть нулем степенной ряд $0(s) = 0 + 0s + 0s^2 + \ldots$. Докажите, что $A(s) \ne 0(s)$, $B(s) \ne 0(s)$, то $A(s)B(s) \ne 0(s)$.&lt;br /&gt;
# Докажите, что $(A(s)B(s))' = A'(s)B(s) + A(s)B'(s)$.&lt;br /&gt;
# Докажите, что $\int(A'(s)B(s) + A(s)B'(s)) = A(s)B(s) - 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(s)=a_0+a_1s+a_2s^2+\ldots$. Найдите производящую функцию последовательности $a_0 + a_1, a_1 + a_2, \ldots, a_k+a_{k+1}$&lt;br /&gt;
# Последовательность $a_0, a_1, a_2, \ldots, a_k, \ldots$ имеет производящую функцию $A(s)=a_0+a_1s+a_2s^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(s)=a_0+a_1s+a_2s^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(s)=a_0+a_1s+a_2s^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(s)=a_0+a_1s+a_2s^2+\ldots$. Найдите производящую функцию последовательности $a_0, a_2, a_4, a_6 \ldots$&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;
# Найдите производящую функцию для замощений прямоугольника $2\times n$ доминошками и единичными клетками.&lt;br /&gt;
# Найдите производящую функцию для замощений прямоугольника $2\times n$ уголками (квадратами $2\times 2$ с вырезанной одной клеткой) и единичными клетками. &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;
# Найдите производящую функцию для чисел &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;
# Производящая функция называется рациональной, если она представима в виде отношения двух многочленов. Для производящих функций каждой из следующих последовательностей выясните, является ли она рациональной, если да, приведите ее представление в таком виде. Последовательность $1, -2, 3, -4, 5, \ldots$.&lt;br /&gt;
# Последовательность $2, -6, 12, \ldots, (-1)^k(k+1)(k+2),\ldots$&lt;br /&gt;
# Последовательность $0, 1, 4, 9, 16, 25, \ldots, k^2,\ldots$&lt;br /&gt;
# Последовательность $0, 1, 8, 27, 64, 125, \ldots, k^3,\ldots$&lt;br /&gt;
# Последовательность $0, 1, 2^s, 3^s, 4^s, 5^s, \ldots, k^s,\ldots$ для константного целого $s&amp;gt;0$&lt;br /&gt;
# Последовательность $1, -4, 9, -16, \ldots, (-1)^k(k+1)^2,\ldots$&lt;br /&gt;
# Последовательность $1, 1, 4, 9, 25, \ldots, F_k^2,\ldots$&lt;br /&gt;
# Найдите производящую функцию для чисел Каталана.&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$ шагов, оканчивающихся в 0 и не заходящих в отрицательную полупрямую. &lt;br /&gt;
# Найдите рекуррентную формулу и производящую функцию для числа блужданий из $n$ шагов, оканчивающихся в фиксированной точке $N &amp;gt; 0$.&lt;br /&gt;
# Найдите рекуррентную формулу и производящую функцию для числа блужданий из $n$ шагов, оканчивающихся в фиксированной точке $N &amp;gt; 0$ и не заходящих в отрицательную полупрямую.&lt;br /&gt;
# &amp;lt;s&amp;gt; Найдите производящую функцию для последовательности, заданной рекуррентным соотношением $a_0 = 2$, $a_n = a_{n-1}^2$. &amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt; Найдите производящую функцию для последовательности, заданной рекуррентным соотношением $a_0 = 2$, $a_n = a_{n-1}^3$. &amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt; Найдите производящую функцию для последовательности, заданной рекуррентным соотношением $a_0=a_1= 2$, $a_n = a_{n-1}\cdot a_{n - 2}$. &amp;lt;/s&amp;gt;&lt;br /&gt;
# Последовательность задана рекуррентным соотношением $a_0=a_1=1$, $a_n = 5a_{n-1}-6a_{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 = 4a_{n-1}-4a_{n-2}$. Оцените асимптотическое поведение $a_n$ при $n\to+\infty$.&lt;br /&gt;
# Петя заинтересовался, что будет, если последовательность, заданная линейным рекуррентным соотношением, имеет производящую фукнцию, в знаменателе которой стоит $Q(t)=(1-ct)(1+ct)$, ведь тогда асимптотическое поведение членов на четных и нечетных позициях разное. Разберитесь.&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_n$ допускает представление в виде $a_n = \sum_i p_i(n)q_i^n$, где $p_i(n)$ - полиномы, и все $q_i$ различны, то такое представление единственно с точностью до порядка слагаемых.&lt;br /&gt;
# Используя результат из предыдушего задания, докажите, что формальный степенной ряд $\ln\left(\frac{1}{1-s}\right)=s+\frac{1}{2}s^2+\frac{1}{3}s^3+\ldots+\frac{1}{n}s^n+\ldots$ не представим в виде отношения двух полиномов.&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-x}$ и $\frac{1}{1-2x}$.&lt;br /&gt;
# Найдите произведение Адамара $\frac{1}{1-2x}$ и $\frac{1}{1-3x}$.&lt;br /&gt;
# Найдите произведение Адамара $\frac{1}{1+3x-x^2}$ и $\frac{1}{1-2x}$.&lt;br /&gt;
# Найдите произведение Адамара $\frac{1}{1-2x-x^2}$ и $\frac{1}{1-2x}$.&lt;br /&gt;
# Пусть $A$ - семейство комбинаторных объектов. Пусть $M = MSet(A)$, а $P = Set(A)$. Докажите, что $M(t) = P(t)M(t^2)$.&lt;br /&gt;
# Пусть $A$ - семейство комбинаторных объектов с производящей функцией $A(t)$. Обозначим как $Seq^k(A)$ множество последовательностей длины $k$, каждый элемент которого является последовательностью из $k$ объектов. Найдите производящую функцию для $Seq^k(A)$.&lt;br /&gt;
# Пусть $A$ - семейство комбинаторных объектов с производящей функцией $A(t)$. Обозначим как $Seq^{\le k}(A)$ множество последовательностей длины не большей $k$, каждый элемент которого является последовательностью из не более чем $k$ объектов. Найдите производящую функцию для $Seq^{\le k}(A)$.&lt;br /&gt;
# Пусть $A$ - семейство комбинаторных объектов с производящей функцией $A(t)$. Обозначим как $Seq^{\ge k}(A)$ множество последовательностей длины не меньшей $k$, каждый элемент которого является последовательностью из не менее чем $k$ объектов. Найдите производящую функцию для $Seq^{\ge k}(A)$.&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;
# Обозначим как $P^T$ множество разбиений на слагаемые, где порядок слагаемых не важен, а слагаемые выбраны из множества $T$. Осознайте, что $P^T = MSet(Seq_T(Z))$. Найдите производяющую функцию для $P^T$.&lt;br /&gt;
# Индекс Хирша. Докажите, что $\prod\limits_{n=1}^\infty\frac{1}{1-z^n}=\sum\limits_{n\ge 0}\frac{z^{n^2}}{((1-z)\cdots(1-z^n))^2}$.&lt;br /&gt;
# Докажите, что $\frac{1}{1-z}=\prod\limits_{j=0}^\infty(1+z^{2^j})$.&lt;br /&gt;
# Экспоненциальная производящая функция для целочисленной последовательности называется функцией Гурвица. Докажите, что сумма, произведение, интеграл и производная функции Гурвица является функцией Гурвица.&lt;br /&gt;
# Докажите, что результат подстановки функции Гурвица в функцию Гурвица является функцией Гурвица&lt;br /&gt;
# Опишите класс помеченных объектов $seq(cyc(Z))$. Найдите его экспоненциальную производящую функцию.&lt;br /&gt;
# Будем обозначать $seq_T$, $cyc_T$, $set_T$ соответственно последовательности, циклы и множества, размер которых принадлежит множеству $T$. Опишите класс помеченных объектов $set(cyc_{&amp;gt; 1}(Z))$. Найдите его экспоненциальную производящую функцию.&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;
# Гиперболический синус $\mathrm{sh}\,z$ равен $\frac{1}{2}(e^{z}-e^{-z})$. Гиперболический косинус $\mathrm{ch}\,z$ равен $\frac{1}{2}(e^{z}+e^{-z})$. Рассмотрим разбиения $n$-элементного множества на непустые подмножества. Для произвольных подмножеств экспоненциальная производящая функция равна $e^{e^z-1}$. Докажите, что для разбиений на нечетное число подмножеств экспоненциальная производящая функция равна $\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;
# Найдите производящую функцию для слов над $m$-буквенным алфавитом (вес каждой буквы равен 1, слова равен его длине).&lt;br /&gt;
# Обозначим как $W$ множество слов над алфавитом $\{a, b\}$. Осознайте, что $W=Seq\{a\}\times Seq(\{b\}\times Seq\{a\})$. Проверьте равенство для производящих функций.&lt;br /&gt;
# Обозначим как $W^{(k)}$ множество слов над алфавитом $\{a, b\}$, не содержащих $k$ букв $a$ подряд. Запишите $W^{(k)}$ через $Seq_T$ и $\times$. Найдите производящую функцию для $W^{(k)}$.&lt;br /&gt;
# Обобщите задание 72 на произвольный алфавит.&lt;br /&gt;
# Обобщите задание 73 на произвольный алфавит.&lt;br /&gt;
# Неявное задание КО. Пусть $A$, $B$ и $X$ - семейства комбинаторных объектов, причем $B \cap X = \varnothing$, $A = B \cup X$. Пусть производящие функции для $A$ и $B$ - $A(t)$ и $B(t)$, соответственно. Найдите производящую функцию $X(t)$.&lt;br /&gt;
# Неявное задание КО 2. Пусть $A$, $B$ и $X$ - семейства комбинаторных объектов, причем $A = B \times X$. Пусть производящие функции для $A$ и $B$ - $A(t)$ и $B(t)$, соответственно. Найдите производящую функцию $X(t)$.&lt;br /&gt;
# Неявное задание КО 3. Пусть $A$ и $X$ - семейства комбинаторных объектов, причем $A = Seq(X)$. Пусть производящая функция для $A$ - $A(t)$. Найдите производящую функцию $X(t)$.&lt;br /&gt;
# Неявное задание КО 4. Пусть $A$ и $X$ - семейства комбинаторных объектов, причем $A = MSet(X)$. Пусть производящая функция для $A$ - $A(t)$. Найдите производящую функцию $X(t)$.&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;
# Докажите, что функция вычислима тогда и только тогда, когда ее график перечислим.&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;
# Вещественное число $\alpha$ называется вычислимым, если существует вычислимая функция $a$, которая по любому рациональному $\varepsilon &amp;gt; 0$ даёт рациональное приближение к $\alpha$ с ошибкой не более $\varepsilon$, то есть $|\alpha − a(\varepsilon)| \le \varepsilon$ для любого рационального $\varepsilon &amp;gt; 0$. Докажите, что число $\alpha$ вычислимо тогда и только тогда, когда множество рациональных чисел, меньших $\alpha$, разрешимо.&lt;br /&gt;
# Докажите, что число $\alpha$ вычислимо тогда и только тогда, когда последовательность знаков представляющей его десятичной (или двоичной) дроби вычислима.&lt;br /&gt;
# Докажите, что число $\alpha$ вычислимо тогда и только тогда, когда существует вычислимая последовательность рациональных чисел, вычислимо сходящаяся к $\alpha$ (последнее означает, что можно алгоритмически указать $N$ по $\varepsilon$ в стандартном $\varepsilon$-$N$-определении сходимости.)&lt;br /&gt;
# Покажите, что сумма, произведение, разность и частное вычислимых вещественных чисел вычислимы. Покажите, что корень многочлена с вычислимыми коэффициентами вычислим.&lt;br /&gt;
# Сформулируйте и докажите утверждение о том, что предел вычислимо сходящейся последовательности вычислимых вещественных чисел вычислим.&lt;br /&gt;
# Вещественное число $\alpha$ называют перечислимым снизу, если множество всех рациональных чисел, меньших $\alpha$, перечислимо. (Перечислимость сверху определяется аналогично.) Докажите, что число $\alpha$ перечислимо снизу тогда и только тогда, когда оно является пределом некоторой вычислимой возрастающей последовательности рациональных чисел.&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$ — перечислимые множества, если и только если его можно представить в виде симметрической разности (суммы по модулю 2) трёх перечислимых множеств.&lt;br /&gt;
# Докажите, что множество $\langle p \rangle$ программ, останавливающихся на своём собсвтенном исходном коде, перечислимо, но не разрешимо.&lt;br /&gt;
# Некоторое множество $S$ натуральных чисел разрешимо. Разложим все числа из $S$ на простые множители и составим множество $D$ всех простых чисел, встречающихся в этих разложениях. Можно ли утверждать, что множество $D$ перечислимо?&lt;br /&gt;
# Некоторое множество $S$ натуральных чисел разрешимо. Разложим все числа из $S$ на простые множители и составим множество $D$ всех простых чисел, встречающихся в этих разложениях. Можно ли утверждать, что множество $D$ разрешимо?&lt;br /&gt;
# Множество $U \subset \mathbb{N} \times \mathbb{N}$ разрешимо. Можно ли утверждать, что множество «нижних точек» множества $U$, то есть множество $V = \{\langle x,y\rangle | (\langle x,y\rangle \in U)$ и $(\langle x,z\rangle \not\in U$ для всех $z &amp;lt; y)\}$ является разрешимым? &lt;br /&gt;
# В предыдущем задании можно ли утверждать, что $V$ перечислимо, если $U$ перечислимо?&lt;br /&gt;
# Покажите, что существуют перечислимые снизу, но не вычислимые числа. Указание: рассмотрим сумму ряда $\sum 2^{-k}$ по $k$ из какого-либо перечислимого множества $P$. Она всегда перечислима снизу, но будет вычислимой только при разрешимом $P$.)&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_i$ печатает текст программы $p_{i+1}$.&lt;br /&gt;
# Докажите, что существует бесконечная последовательность различных программ $p_i$, такая что $p_1$ печатает пустую строку, а $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;
# Рассмотрим два множества $A$ и $B$. Назовём их вычислимо изоморфными, если существует всюду определенная вычислимая биекция $\varphi : \mathbb{N} \to \mathbb{N}$, такая что $x \in A$ тогда и только тогда, когда $\varphi(x) \in B$. Приведите пример различных бесконечных вычислимо изоморфных множеств.&lt;br /&gt;
# Докажите или опровергните, что любые два бесконечных разрешимых множества, дополнения к которым также бесконечны, являются вычислимо изоморфными.&lt;br /&gt;
# Докажите или опровергните, что любые два бесконечных перечислимых множества, дополнения к которым также бесконечны, являются вычислимо изоморфными.&lt;br /&gt;
# Множество $A$ называется m-сводимым к $B$, если существует вычислимая всюду определенная функция $f$, для которой $x \in A$ тогда и только тогда, когда $f(x) \in B$. Пишут $A \le_m B$. Докажите, что если $A$ неразрешимо и $A \le_m B$, то $B$ неразрешимо.&lt;br /&gt;
# Докажите, что если $A$ неперечислимо и $A \le_m B$, то $B$ неперечислимо.&lt;br /&gt;
# Верно ли, что для любого непустого $A$ с непустым дополнением выполнено $A \le_m \mathbb{N} \setminus A$?&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;
# Существует ли множество натуральных чисел $A$, к которому m-сводится любой множество натуральных чисел?&lt;br /&gt;
# Множество называется m-полным, если к нему m-сводится любое перечислимое множество. Докажите, что универсальное множество является $m$-полным.&lt;br /&gt;
# Докажите, что диагональ универсального множества (множество $\{u | (u, u) \in U\}$ является m-полным.&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;
# Докажите, что проверка грамматики на однозначность является неразрешимой проблемой. Указание: сведите к ней или её дополнению проблему соответствий Поста, используя конструкцию языка списка из предыдущего задания.&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;
# Рассмотрим абстрактный вычислитель &amp;quot;автомат с очередью&amp;quot; - по аналогии с автоматом с магазинной памятью, но вместо стека очередь. На переходе автомат извлекает первый символ из головы очереди, смотрит очередной символ на ленте и текущее состояние, переходит в новое состояние и добавляет в конец очереди произвольную строку. Докажите, что автомат с очередью может распознать любой перечислимый язык (указание: просимулируйте на автомате с очередью автомат с двумя стеками).&lt;br /&gt;
# Докажите, что машина Тьюринга без возможности записи на ленту, эквивалентна по вычислительной мощности конечному автомату.&lt;br /&gt;
# Отберем у машины Тьюринга возможность перемещаться налево, но разрешим новую команду RESET, которая перемещает головку на первый символ входного слова. Докажите, что такая модификация не меняет вычислительной мощности машины Тьюринга.&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;
# Множество $A$ называется иммунным, если оно бесконечно, но не является эффективно бесконечным. Множество называется простым, если оно перечислимо, а его дополнение иммунно. Докажите, что существует простое множество. Указание: рассмотрите множество $T = \left\{\langle p, x\rangle | p(x) = 1, x &amp;gt; 2p\right\}$. &lt;br /&gt;
# Докажите, что множество является иммунным тогда и только тогда, когда оно не содержит бесконечных разрешимых подмножеств.&lt;br /&gt;
# Два перечислимых множества $A$ и $B$, где $A \cap B = \varnothing$ называются неотделимыми, если не сущестует разрешимых множеств $X$ и $Y$, таких что $A \subset X$, $B \subset Y$, $X \cup Y = \varnothing$. Покажите, что существуют неотделимые множества. Указание: рассмотрите множества пар $\langle p, x\rangle$, где $p$ - программа, возвращающая целое число, для некоторого условия.&lt;br /&gt;
# Обобщите определение неотделимых множеств на счетное семейство множеств. Докажите, что существует счетное семейство неотделимых множеств.&lt;br /&gt;
# Докажите, что существует вычислимая функция $f$, у которой не существует всюду определенного вычислимого продолжения.&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=OSI_Model&amp;diff=83378</id>
		<title>OSI Model</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=OSI_Model&amp;diff=83378"/>
				<updated>2022-09-01T04:49:08Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
=Сетевая модель OSI=&lt;br /&gt;
'''Сетевая модель OSI''' (англ. ''open systems interconnection basic reference model'') - концептуальная модель, которая обобщает и стандартизирует представление средств сетевого взаимодействия в телекоммуникационных и компьютерных системах, независимо от их внутреннего устройства и используемых технологий. Модель OSI была разработана в 1984 году Международной организацией стандартизации (ISO). Основной целью ее создания был поиск решения проблемы несовместимости устройств, использующих различные коммуникационные протоколы, путем перехода на единый, общий для всех систем стек протоколов.&lt;br /&gt;
&lt;br /&gt;
==Общая характеристика модели==&lt;br /&gt;
[[File:OSI_Interconnection.gif|right|Схема взаимодействия компьютеров в модели OSI]]&lt;br /&gt;
OSI состоит из двух основных частей:&lt;br /&gt;
*абстрактная модель сетевого взаимодействия (семиуровневая модель)&lt;br /&gt;
*набор специализированных протоколов взаимодействия&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Концепция семиуровневой модели была описана в работе Чарльза Бахмана. Данная модель подразделяет коммуникационную систему на уровни абстракции (англ. ''&amp;quot;abstraction layers&amp;quot;''). В модели OSI средства взаимодействия делятся на семь уровней: прикладной, представления, сеансовый, транспортный, сетевой, канальный и физический. Каждый уровень: &lt;br /&gt;
*имеет дело с совершенно определенным аспектом взаимодействия сетевых устройств&lt;br /&gt;
*обслуживает уровень, находящийся непосредственно над ним, и обслуживается уровнем, находящимся под ним&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Протоколы связи же решают две задачи: они обеспечивают взаимодействие между сущностями, находящимися на одном и том же уровне абстракции, но на разных хостах и абстрактно описывают функционал, который (N-1)-ый уровень предоставляет (N)-ому, где N - один из 7 уровней модели OSI. В рамках модели, любой протокол может взаимодействовать либо с протоколами своего уровня (горизонтальные взаимодействия), либо с протоколами уровня на единицу выше/ниже своего уровня (вертикальные взаимодействия).&lt;br /&gt;
&lt;br /&gt;
Каждый из семи уровней характеризуется типом данных (PDU, сокращение от англ. ''protocol data units''), которым данный уровень оперирует и функционалом, который он предоставляет слою, находящемуся выше него. Предполагается, что пользовательские приложения обращаются только к самому верхнему (прикладному) уровню, однако на практике это выполняется далеко не всегда.&lt;br /&gt;
&lt;br /&gt;
==Описание уровней модели OSI==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:30cm&amp;quot; border=1&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot; bgcolor=#EEEEFF&lt;br /&gt;
| Уровень || Функции || PDU || Примеры&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; bgcolor=#FFFFFF&lt;br /&gt;
| 7. Прикладной || Некоторое высокоуровневое API || Данные || HTTP, FTP&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; bgcolor=#FFFFFF&lt;br /&gt;
| 6. Представительский || Представление данных между сетевым сервисом и приложением  || Данные || ASCII, EBCDIC, JPEG&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; bgcolor=#FFFFFF&lt;br /&gt;
| 5. Сеансовый || Управление сеансами: продолжительный обмен информацией в виде множества передач между нодами  || Данные || RPC, PAP&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; bgcolor=#FFFFFF&lt;br /&gt;
| 4. Транспортный || Надёжная передача сегментов между двумя нодами в сети  || Сегменты/Датаграммы || TCP, UDP&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; bgcolor=#FFFFFF&lt;br /&gt;
| 3. Сетевой || Структуризация и управление множеством нод в сети  || Пакеты || IPv4, IPv6&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; bgcolor=#FFFFFF&lt;br /&gt;
| 2. Канальный || Надёжная передача датафреймов между двумя нодами соединённых физическим уровнем || Фреймы  || PPP, IEEE 802.2, Ethernet&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; bgcolor=#FFFFFF&lt;br /&gt;
| 1. Физический || Передача и приём потока байтов через физическое устройство || Биты || USB, витая пара&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Прикладной уровень (Application layer)===&lt;br /&gt;
Самый верхний уровень модели, предоставляет набор интерфейсов для взаимодействия пользовательских процессов с сетью. Единицу информации, которой оперируют три верхних уровня модели OSI, принято называть сообщение (англ. ''message''). &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;
*FTP (File Transfer Protocol) протокол передачи файлов&lt;br /&gt;
*HTTP (HyperText Transfer Protocol)&lt;br /&gt;
*TELNET&lt;br /&gt;
*RDP (Remote Desktop Protocol)&lt;br /&gt;
&lt;br /&gt;
===Уровень представления (Presentation layer)===&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;
*AFP — Apple Filing Protocol&lt;br /&gt;
*ICA — Independent Computing Architecture&lt;br /&gt;
*LPP — Lightweight Presentation Protocol&lt;br /&gt;
*NCP — NetWare Core Protocol&lt;br /&gt;
===Сеансовый уровень (Session layer)===&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 уровня над ним, сеансовый уровень использует сообщения в качестве PDU.&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;
*ADSP (AppleTalk Data Stream)&lt;br /&gt;
*ASP (AppleTalk Session)&lt;br /&gt;
*RPC (Remote Procedure Call)&lt;br /&gt;
*PAP (Password Authentication Protocol)&lt;br /&gt;
===Транспортный уровень (Transport layer)===&lt;br /&gt;
Транспортный уровень предназначен для передачи надежной последовательностей данных произвольной длины через коммуникационную сеть от отправителя к получателю. Уровень надежности может варьироваться в зависимости от класса протокола транспортного уровня. Так например UDP гарантирует только целостность данных в рамках одной датаграммы и не исключает возможности потери/дублирования пакета или нарушения порядка получения данных; TCP обеспечивает передачу данных, исключающую потерю данных или нарушение порядка их поступления или дублирования, может перераспределять данные, разбивая большие порции данных на фрагменты и наоборот, склеивая фрагменты в один пакет.&lt;br /&gt;
 &lt;br /&gt;
Модель OSI определяет пять классов сервиса, предоставляемых транспортным уровнем. Эти виды сервиса отличаются качеством предоставляемых услуг: срочностью, возможностью восстановления прерванной связи, наличием средств мультиплексирования нескольких соединений между различными прикладными протоколами через общий транспортный протокол, а главное способностью к обнаружению и исправлению ошибок передачи, таких как искажение, потеря и дублирование пакетов. &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;
*TCP (Transmission Control Protocol)&lt;br /&gt;
*UDP (User Datagram Protocol)&lt;br /&gt;
*SCTP (Stream Control Transmission Protocol)&lt;br /&gt;
===Сетевой уровень (Network layer)===&lt;br /&gt;
Сетевой уровень предоставляет функционал для определения пути передачи пакетов данных между клиентами, подключенными к одной коммуникационной сети. На данном уровне решается проблема маршрутизации (выбора оптимального пути передачи данных), трансляцией логических адресов в физические, отслеживанием неполадок в сети.&lt;br /&gt;
&lt;br /&gt;
В рамках сетевого надежность доставки сообщений не гарантируется; сетевой уровень может реализовывать соответствующий функционал, но не обязан это делать. Роль PDU исполняют пакеты (англ. ''packet'').&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;
*IP/IPv4/IPv6 (Internet Protocol) сетевой протокол стека TCP/IP&lt;br /&gt;
*IPX (Internetwork Packet Exchange, протокол межсетевого обмена)&lt;br /&gt;
*AppleTalk&lt;br /&gt;
&lt;br /&gt;
===Канальный уровень (Data link layer)===&lt;br /&gt;
Канальный уровень предназначен для передачи данных между двумя узлами, находящихся в одной локальной сети. Роль PDU исполняют фреймы (англ. ''frame''). Фреймы канального уровня не пересекают границ локальной сети, что позволяет данному уровню сосредоточиться на локальной доставке (фактически межсетевой доставкой занимаются более высокие уровни).&lt;br /&gt;
&lt;br /&gt;
Заголовок фрейма формируется из аппаратных адресов отправителя и получателя, что позволяет однозначно определить устройство, которое отправило данный фрейм и устройство, которому он предназначен. При этом никакая часть адреса не может быть использована, чтобы определить некую логическую/физическую группу к которой принадлежит устройство.&lt;br /&gt;
&lt;br /&gt;
Канальный уровень состоит из двух подуровней: LLC и MAC.&lt;br /&gt;
&lt;br /&gt;
Канальный уровень выполняет функции:&lt;br /&gt;
* LLC Multiplexing: Интерфейс между сетевым уровнем и MAC, чтобы несколько различных протоколов сетевого уровня могли сосуществовать.&lt;br /&gt;
* LLC Flow control: Механизм ограничении скорости передачи данных при медленном приёмнике&lt;br /&gt;
* LLC Error control: Определение (и иногда исправление) ошибок с помощью чексумм&lt;br /&gt;
* MAC Adressing mechanism: Адрессация на основе уникальных MAC-адресов&lt;br /&gt;
* MAC Channel access control mechanism: Предоставляет протокол множественного доступа&lt;br /&gt;
&lt;br /&gt;
Наиболее часто на канальной уровне используются протоколы:&lt;br /&gt;
*PPP (Point-To-Point Protocol, протокол прямого соединения между двумя узлами)&lt;br /&gt;
*SLIP (Serial Line Internet Protocol, предшественник PPP, который всё ещё используется в микроконтроллерах)&lt;br /&gt;
*Ethernet II framing&lt;br /&gt;
&lt;br /&gt;
===Физический уровень (Physical layer)===&lt;br /&gt;
Физический уровень описывает способы передачи потока бит через дата линк, соединяющий сетевые устройства. Поток байт может быть сгруппирован в слова и сконвертирован в физический сигнал, который посылается через некоторое устройство.&lt;br /&gt;
&lt;br /&gt;
Здесь специфицируются такие низкоуровневые параметры как частота, амплитуда и модуляция.&lt;br /&gt;
&lt;br /&gt;
Физический уровень выполняет функции:&lt;br /&gt;
* Побитовая доставка&lt;br /&gt;
* Физическое кодирование (способ представления данных в виде импульсов)&lt;br /&gt;
* LLC Error control: Определение (и иногда исправление) ошибок с помощью чексумм&lt;br /&gt;
* MAC Adressing mechanism: Адрессация на основе уникальных MAC-адресов&lt;br /&gt;
* MAC Channel access control mechanism: Предоставляет протокол множественного доступа&lt;br /&gt;
&lt;br /&gt;
Наиболее часто на физическом уровне используются протоколы:&lt;br /&gt;
*Ethernet physical layer (семейство стандартов с оптическими или электрическими свойствами соединений между устройствами)&lt;br /&gt;
*USB&lt;br /&gt;
&lt;br /&gt;
==Инкапсуляция==&lt;br /&gt;
[[File:UDP_Encapsulation.png|right|Аналогичный пример инкапсуляции данных в UDP]]&lt;br /&gt;
'''Инкапсуляция''' (англ. ''encapsulation'') -- метод проектирования протоколов в которой логически независимые функции сети не зависят от реализации нижележащих механизмов с помощью включения этих механизмов в более высокоуровневые объекты.&lt;br /&gt;
&lt;br /&gt;
Физический уровень ответственен за физическую передачу данных. IP предоставляет глобальный способ адресации устройств. TCP добавляет возможность выбора приложения (порт).&lt;br /&gt;
&lt;br /&gt;
Во время инкапсуляции каждый уровень собирает свой собственный PDU, добавляя некоторый заголовок с контрольной информацией к PDU с более высокого уровня.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
Предположим мы отправляем веб-страницу клиенту:&lt;br /&gt;
* К содержимому страницы добавляются некоторые HTTP заголовки (тип результата, размер страницы итд)&lt;br /&gt;
* Далее добавляются TCP заголовки (номера портов, флаги, чексумма и прочее)&lt;br /&gt;
* IP добавляет свой заголовок (флаги, длина пакета, TTL)&lt;br /&gt;
* Канальный уровень добавляет заголовок (например MAC адреса получателя и отправителя)&lt;br /&gt;
* Наконец, фрейм приходит к получателю и он декапсулирует его в предыдущие PDU и обрабатывает на каждом уровне&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Heavy-light_%D0%B4%D0%B5%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F&amp;diff=83377</id>
		<title>Heavy-light декомпозиция</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Heavy-light_%D0%B4%D0%B5%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F&amp;diff=83377"/>
				<updated>2022-09-01T04:49:00Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
'''Heavy-light декомпозиция''' {{---}} техника разбиения подвешенного дерева на множество путей для решения задач о запросах на пути в дереве (в том числе с модификациями).&lt;br /&gt;
==Описание задачи==&lt;br /&gt;
{{Задача&lt;br /&gt;
|definition=Имеется подвешенное дерево &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; c &amp;lt;tex&amp;gt;n&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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;сумма на пути,&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;максимум на пути,&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;количество рёбер на пути, вес которых больше заданного &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примеры модификаций:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;модификация одного ребра,&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;прибавление к весу всех рёбер на пути,&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;установка веса всех рёбер на пути в заданное &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Множество подобных запросов делаются за время за полином от логарифма (обычно &amp;lt;tex&amp;gt;O(\log^2{n})&amp;lt;/tex&amp;gt;) с помощью heavy-light декомпозиции.&lt;br /&gt;
==Описание декомпозиции==&lt;br /&gt;
[[Файл:Heavylight.png|thumb|right|800x280px|Пример разбиения. В вершинах указан размер поддерева.]]&lt;br /&gt;
Необходимо составить такую декомпозицию дерева на множество рёберно-непересекающихся путей, что при прохождении от одной вершины до другой произойдет смена не более &amp;lt;tex&amp;gt;O(\log{n})&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;2&amp;lt;/tex&amp;gt; вида: легкие и тяжёлые. Введём функцию &amp;lt;tex&amp;gt;s(v)&amp;lt;/tex&amp;gt;, которая будет обозначать размер поддерева вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Тяжёлые ребра''' (англ. ''heavy edge'') {{---}} ребра &amp;lt;tex&amp;gt;(u, v)&amp;lt;/tex&amp;gt; такие, что &amp;lt;tex&amp;gt;s(v) \geqslant&amp;lt;/tex&amp;gt; &amp;lt;tex dpi=&amp;quot;150&amp;quot;&amp;gt;\dfrac{s(u)}{2}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Лёгкие ребра''' (англ. ''light edge'') {{---}} соответственно все остальные.&lt;br /&gt;
&lt;br /&gt;
Очевидно, что из вершины может выходить как максимум одно тяжёлое ребро, т.к. иначе у нас есть два поддерева по как минимум &amp;lt;tex dpi=&amp;quot;150&amp;quot;&amp;gt;\dfrac{s(u)}{2}&amp;lt;/tex&amp;gt; вершин, а также сама вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Итого &amp;lt;tex&amp;gt;s(u) + 1&amp;lt;/tex&amp;gt; вершин, тогда как у нас всего &amp;lt;tex&amp;gt;s(u)&amp;lt;/tex&amp;gt; вершин в поддереве.&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;
# Все рёбра покрыты путями. &amp;lt;br&amp;gt;Есть два типа вершин: те, из которых ведёт ровно одно тяжёлое ребро и те, из которых не ведёт ни одного тяжёлого ребра. Для первого типа вершин мы дойдем до них некоторым путём через тяжёлое ребро снизу по определению выбора путей, а лёгкие рёбра ведущие из неё возьмем как последние рёбра в соответствующих путях. Для второго типа вершин мы по определению выбора путей возьмем их как начальные и пойдем вверх. &amp;lt;br&amp;gt;Таким образом все рёбра будут покрыты.&lt;br /&gt;
# Все пути не пересекаются. &amp;lt;br&amp;gt;Докажем от противного. Пусть мы взяли какое-то ребро дважды. Это значит, что из какой-то вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; ведет более &amp;lt;tex&amp;gt;1&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;1&amp;lt;/tex&amp;gt; тяжелого ребра из вершины идти не может, следовательно, получили противоречие.&lt;br /&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;O(\log{n})&amp;lt;/tex&amp;gt; путей. &amp;lt;br&amp;gt;Докажем эквивалентный факт, что при пути от любой вершины до корня мы сменим не более, чем &amp;lt;tex&amp;gt;O(\log{n})&amp;lt;/tex&amp;gt; путей. Рассмотрим лёгкое ребро. Заметим, что проход вниз по такому ребру уменьшает размер поддерева как минимум в &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; раза. Но смена пути может произойти только при переходе по лёгкому ребру. Таким образом мы сменим не более &amp;lt;tex&amp;gt;O(\log{n})&amp;lt;/tex&amp;gt; путей.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Существует вариант heavy-light декомпозиции на вершинно-непересекающихся путях. Чтобы получить такой путь нужно всего-лишь выкинуть последнее ребро из всех путей в рёберно-непересекающейся декомпозиции. Это может быть удобно при решении задач, где веса находятся не на рёбрах, а на вершинах и соответствующие запросы также делаются на вершинах.&lt;br /&gt;
&lt;br /&gt;
==Применение==&lt;br /&gt;
===Сумма на пути===&lt;br /&gt;
Классическая задача о сумме на пути в дереве с &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; вершинами может быть решена с помощью heavy-light декомпозиции за время &amp;lt;tex&amp;gt;O(\log^2{n})&amp;lt;/tex&amp;gt;. Возможны модификации веса.&lt;br /&gt;
&lt;br /&gt;
Построим [[Дерево отрезков. Построение|дерево отрезков]] над каждым путём. Рассмотрим запрос &amp;lt;tex&amp;gt;sum(u, v)&amp;lt;/tex&amp;gt;. Найдем вершину &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt;, которая является &amp;lt;tex&amp;gt;\mathrm{LCA}(u, v)&amp;lt;/tex&amp;gt; (например с помощью [[Метод двоичного подъема|двоичного подъема]]. Мы разбили запрос на два: &amp;lt;tex&amp;gt;(u, c)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;(c, v)&amp;lt;/tex&amp;gt;, на каждый из которых можно легко ответить разбив его на множество путей из декомпозиции и ответив на каждый путь из этого множества по отдельности за &amp;lt;tex&amp;gt;O(\log{n})&amp;lt;/tex&amp;gt; с помощью дерева отрезков на этом пути. Всего таких путей нужно будет рассмотреть &amp;lt;tex&amp;gt;O(\log{n})&amp;lt;/tex&amp;gt;. Итого мы способны решить эту задачу за время &amp;lt;tex&amp;gt;O(\log^2{n})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Хоть это и не самый эффективный способ для решения этой задачи, но можно заметить, что навесив дерево отрезков на каждый путь мы способны отвечать на любые операции, определяемые на множестве, на котором данная операция ассоциативна, и существует нейтральный элемент относительно этой операции, то есть на моноиде (операции, поддерживаемые деревом отрезков), такие как: сумма на пути, максимум на пути, количество рёбер на пути, удовлетворяющих какому-то свойству.&lt;br /&gt;
===LCA===&lt;br /&gt;
Задача о наименьшем общем предке для двух вершин в дереве с &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; вершинами также может быть решена с помощью heavy-light декомпозиции. Воспользуемся основной идеей: декомпозиция разбивает все вершины дерева на реберно-непересекающиеся пути так, что поднимаясь от любой вершины до корня дерева придется сменить не более &amp;lt;tex&amp;gt;\log{n}&amp;lt;/tex&amp;gt; различных путей.&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=Лемма1&lt;br /&gt;
|statement=Пусть есть вершины &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;U&amp;lt;/tex&amp;gt; более удален от корня дерева, чем &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\mathrm{LCA}(u, v) = \mathrm{LCA}(U, v)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
|proof=Допустим, пути не пересекаются. Предположим, что &amp;lt;tex&amp;gt;\mathrm{LCA}(u, v)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\mathrm{LCA}(U, 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;\mathrm{LCA}&amp;lt;/tex&amp;gt;. Значит &amp;lt;tex&amp;gt;\mathrm{LCA}&amp;lt;/tex&amp;gt; должен принадлежать двум путям, но по предположению пути не пересекаются. Тем самым пришли к противоречию.&lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим случай, когда пути пересекаются. Пути не могут совпадать более, чем в одной вершине, так как построенная декомпозиция является реберно-непересекающейся. При этом корень одного из путей является вершиной другого (либо корни совпадают, что равносильно), поскольку в противном случае пути пересекаются в более чем &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; вершине, что противоречит предыдущему условию. &amp;lt;tex&amp;gt;\mathrm{LCA}&amp;lt;/tex&amp;gt; должен принадлежать двум путям, значит именно этот корень и будет &amp;lt;tex&amp;gt;\mathrm{LCA}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====Препроцессинг====&lt;br /&gt;
Построим heavy-light декомпозицию данного нам дерева. Для каждой вершины, помимо её предка, будем хранить дополнительно следующие значения:&lt;br /&gt;
# Расстояние до корня дерева. &amp;lt;br /&amp;gt;Вычисляется за &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt; с помощью времен входа\выхода в каждую вершину.&lt;br /&gt;
# Корень пути, на котором лежит вершина. &amp;lt;br /&amp;gt; Поскольку вершина может принадлежать нескольким путям, выберем тот, чья начальная вершина наиболее удалена от корня дерева. Имея разбиение на пути, найти корень можно за &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Вторая вершина этого пути. &amp;lt;br /&amp;gt;Аналогично, находится за &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt; при построении.&lt;br /&gt;
&lt;br /&gt;
====Вычисление LCA====&lt;br /&gt;
Найдем &amp;lt;tex&amp;gt;\mathrm{LCA}&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;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;. Иначе, наоборот.&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; {{---}} вторые вершины путей, содержащих вершины &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;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;a&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;b&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; лежат на одном пути. Этот случай мы уже рассмотрели ранее.&lt;br /&gt;
&lt;br /&gt;
* Если это не так, то вершины лежат на разных путях. По лемме, так как пути реберно не пересекаются, то ответ не изменится, если вместо одной из вершин взять корень того пути, на котором она лежит. Эту операцию будем производить с той вершиной, чей предок наиболее удален от корня. Рекурсивно запустимся от выбранной и оставшейся вершин.&lt;br /&gt;
&lt;br /&gt;
Очевидно, что в результате придем или в одну и ту же вершину, или одна из вершин окажется на пути от корня к другой. Тем самым мы найдем &amp;lt;tex&amp;gt;\mathrm{LCA}&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;\mathtt{dist}&amp;lt;/tex&amp;gt; {{---}} расстояние  от корня до вершины.&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathtt{last}&amp;lt;/tex&amp;gt; {{---}} начало пути, на котором лежит вершина. Из всех путей выбирается путь с самой удаленной от корня дерева начальной вершины.&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathtt{turn}&amp;lt;/tex&amp;gt; {{---}} вторая вершина этого пути.&lt;br /&gt;
&lt;br /&gt;
Ниже представлен псевдокод функции получения наименьшего общего предка:&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;font color=darkgreen&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;/font&amp;gt;&lt;br /&gt;
  '''int''' lca('''int''' u, '''int''' v)&lt;br /&gt;
    &amp;lt;font color=darkgreen&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;/font&amp;gt;&lt;br /&gt;
    '''if''' (turn[u] == turn[v])&lt;br /&gt;
      &amp;lt;font color=darkgreen&amp;gt;// Ответ найден, выберем ближайшую к корню.&amp;lt;/font&amp;gt;&lt;br /&gt;
      '''if''' (dist[u] &amp;lt; dist[v])&lt;br /&gt;
        '''return''' u&lt;br /&gt;
      '''else'''&lt;br /&gt;
        '''return''' v&lt;br /&gt;
     &lt;br /&gt;
    &amp;lt;font color=darkgreen&amp;gt;// Рекурсивно запустимся от вершины, чей предок наиболее удален от корня дерева.&amp;lt;/font&amp;gt;&lt;br /&gt;
    '''if''' (dist[last[u]] &amp;gt; dist[last[v]])&lt;br /&gt;
      '''return''' lca(last[u], v)&lt;br /&gt;
    '''return''' lca(last[v], u)&lt;br /&gt;
&lt;br /&gt;
====Асимптотика====&lt;br /&gt;
* '''Память''': для реализации алгоритма требуется &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; памяти.&lt;br /&gt;
* '''Препроцессинг''': heavy-light декомпозиция строится за &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;, вся дополнительная информация считается за &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt; для каждой из вершин.&lt;br /&gt;
* '''Запросы''': по свойству heavy-light декомпозиции, на пути от вершины к корню мы сменим не более &amp;lt;tex&amp;gt;\log n&amp;lt;/tex&amp;gt; путей. Значит время выполнения запроса также &amp;lt;tex&amp;gt;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;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;tex&amp;gt;\mathrm{pathPos}&amp;lt;/tex&amp;gt; {{---}} функция, позволяющая найти смещение вершины в пути относительно корня пути,&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;tex&amp;gt;\mathrm{getValue(\mathtt{i}, \mathtt{j})}&amp;lt;/tex&amp;gt; {{---}} функция, позволяющая найти вес &amp;lt;tex&amp;gt;\mathtt{j}&amp;lt;/tex&amp;gt;-ого ребра в &amp;lt;tex&amp;gt;\mathtt{i}&amp;lt;/tex&amp;gt;-ом пути.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Пример реализации запроса суммы на пути:&lt;br /&gt;
&lt;br /&gt;
 '''int''' query('''int''' u, '''int''' v)&lt;br /&gt;
     '''int''' res = 0&lt;br /&gt;
     '''int''' root = корень пути, в котором находится u&lt;br /&gt;
     '''while''' root не является предком v &amp;lt;font color=green&amp;gt;     // поднимаемся до тех пор, пока наш путь не содержит общего предка u и v&amp;lt;/font&amp;gt;&lt;br /&gt;
         segmentTree = дерево отрезков, соответствующее пути, в котором лежит u&lt;br /&gt;
         res += segmentTree.sum(0, pathPos(u))&lt;br /&gt;
         u = предок root               &amp;lt;font color=green&amp;gt;    // вырезали нижний путь и подняли нижнюю вершину до нижней вершины следующего пути&amp;lt;/font&amp;gt;&lt;br /&gt;
         root = корень пути, в котором находится u&lt;br /&gt;
     &lt;br /&gt;
     root = корень пути, в котором находится v&lt;br /&gt;
     '''while''' root не является предком u &amp;lt;font color=green&amp;gt;     // аналогично прошлому while, но с другой стороны&amp;lt;/font&amp;gt;&lt;br /&gt;
         segmentTree = дерево отрезков, соответствующее пути, в котором лежит v&lt;br /&gt;
         res += segmentTree.sum(0, pathPos(v))&lt;br /&gt;
         v = предок root&lt;br /&gt;
         root = корень пути, в котором находится v&lt;br /&gt;
     &lt;br /&gt;
     &amp;lt;font color=green&amp;gt;// последний путь (тот, что содержит общего предка) обрезан с двух сторон полученными вершинами&amp;lt;/font&amp;gt;&lt;br /&gt;
     segmentTree = дерево отрезков, соответствующее пути в котором лежит u&lt;br /&gt;
     res += segmentTree.sum(min(pathPos(u), pathPos(v)), max(pathPos(u), pathPos(v)))&lt;br /&gt;
     '''return''' res&lt;br /&gt;
&lt;br /&gt;
== См.также ==&lt;br /&gt;
*[[Метод двоичного подъема]]&lt;br /&gt;
*[[Дерево отрезков. Построение]]&lt;br /&gt;
*[[Link-Cut Tree]]&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Heavy_path_decomposition Wikipedia — Heavy path decomposition]&lt;br /&gt;
*[http://e-maxx.ru/algo/heavy_light MAXimal :: algo :: Heavy-light декомпозиция]&lt;br /&gt;
* [https://habrahabr.ru/post/198464 Habrahabr {{---}} Алгоритм поиска наименьшего общего предка в дереве ]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Задача о наименьшем общем предке]]&lt;br /&gt;
[[Категория: Структуры данных]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</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%91%D0%B0%D0%BD%D0%B0%D1%85%D0%B0-%D0%A8%D1%82%D0%B5%D0%B9%D0%BD%D0%B3%D0%B0%D1%83%D0%B7%D0%B0&amp;diff=83376</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%91%D0%B0%D0%BD%D0%B0%D1%85%D0%B0-%D0%A8%D1%82%D0%B5%D0%B9%D0%BD%D0%B3%D0%B0%D1%83%D0%B7%D0%B0&amp;diff=83376"/>
				<updated>2022-09-01T04:48:51Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;A_n: X \to Y&amp;lt;/tex&amp;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;\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;
|proof=&lt;br /&gt;
Сначала покажем, что существует замкнутый шар &amp;lt;tex&amp;gt;\overline V(a, r)&amp;lt;/tex&amp;gt;, в котором &amp;lt;tex&amp;gt;\sup\limits_{n} \sup\limits_{x \in \overline V}\|A_n x\| &amp;lt; +\infty&amp;lt;/tex&amp;gt;. Покажем от противного, пусть такого шара нет, возьмем тогда произвольный замкнутый шар &amp;lt;tex&amp;gt;\overline V&amp;lt;/tex&amp;gt;, в нем &amp;lt;tex&amp;gt;\sup\limits_{n} \sup\limits_{x \in \overline V}\|A_n x\| = +\infty&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда в силу неограниченности найдется &amp;lt;tex&amp;gt; n_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; x_1 \in \overline V: \|A_{n_1} x_1\| &amp;gt; 1&amp;lt;/tex&amp;gt;; &amp;lt;tex&amp;gt;A_{n_1}&amp;lt;/tex&amp;gt; непрерывен, значит, можно взять &amp;lt;tex&amp;gt;V_r(x_1) = \overline {V_1} \subset \overline V&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;r(V_1) \le \frac {r(\overline V)}{2}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Опять в силу неограниченности найдется &amp;lt;tex&amp;gt;n_2 &amp;gt; n_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; x_2 \in V_1(x_1): \|A_{n_2} x_2\| &amp;gt; 2&amp;lt;/tex&amp;gt;; &amp;lt;tex&amp;gt;A_{n_2}&amp;lt;/tex&amp;gt; непрерывен, берем &amp;lt;tex&amp;gt;V_r(x_2) = \overline {V_2} \subset \overline {V_1}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;r(V_2) \le \frac {r(\overline V_1)}{2}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продолжая таким образом, выстраиваем последовательность вложенных шаров &amp;lt;tex&amp;gt;\overline V_{n_m}: \overline V_{n_{m+1}} \subset \overline V_{n_m}, r_{n_m} \to 0, \forall x \in \overline V_{n_m}: \|A_{n_m} x \| &amp;gt; m&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;c \in \bigcap\limits_{m=1}^{\infty} \overline V_{n_m}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\sup\limits_{m} \|A_{n_m}(c)\| &amp;lt; +\infty&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Но &amp;lt;tex&amp;gt;\forall m: \|A_{n_m}(c)\| &amp;gt; m&amp;lt;/tex&amp;gt;, то есть, &amp;lt;tex&amp;gt;\sup\limits_{m} \|A_{n_m}(c)\| = +\infty&amp;lt;/tex&amp;gt;. Получили противоречие, значит, такой шар &amp;lt;tex&amp;gt;\overline V(a, r)&amp;lt;/tex&amp;gt; найдется, пусть на нем &amp;lt;tex&amp;gt;\sup\limits_{n} \sup\limits_{x \in \overline V}\|A_n x\| = M&amp;lt;/tex&amp;gt;. Заметим, любому &amp;lt;tex&amp;gt;x \in \overline V(0, 1)&amp;lt;/tex&amp;gt; в соответствие можно поставить &amp;lt;tex&amp;gt;x' \in \overline V(a, r)&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;x' = r x + a&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;\| A_n x \| = {\|A_n x' - A_n a\| \over r} \le {M + \|A_n a\| \over r}&amp;lt;/tex&amp;gt;. По поточечной ограниченности операторов, &amp;lt;tex&amp;gt;\exists M_1: \|A_n a\| \le M_1&amp;lt;/tex&amp;gt;, таким образом, &amp;lt;tex&amp;gt;\|A_n x\| \le {M + M_1 \over r}&amp;lt;/tex&amp;gt;, то есть ограничена константой, не зависящей от &amp;lt;tex&amp;gt;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;
== Ссылки ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Uniform_boundedness_principle Uniform boundness principle]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Функциональный анализ 3 курс]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D1%91%D0%B1%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D1%81%D0%BA%D1%80%D0%B0%D1%81%D0%BA%D0%B0_%D0%B4%D0%B2%D1%83%D0%B4%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B3%D1%80%D0%B0%D1%84%D0%B0&amp;diff=83375</id>
		<title>Рёберная раскраска двудольного графа</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D1%91%D0%B1%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D1%81%D0%BA%D1%80%D0%B0%D1%81%D0%BA%D0%B0_%D0%B4%D0%B2%D1%83%D0%B4%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B3%D1%80%D0%B0%D1%84%D0%B0&amp;diff=83375"/>
				<updated>2022-09-01T04:48:44Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
{{Определение&lt;br /&gt;
|id = edge_colouring&lt;br /&gt;
|definition = '''Рёберной раскраской''' (англ. ''Edge colouring'') графа &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;E&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;e_{i}, e_{j}&amp;lt;/tex&amp;gt;, инцидентных одной вершине, верно &amp;lt;tex&amp;gt; \varphi (e_{i}) \neq \varphi (e_{j})&amp;lt;/tex&amp;gt;. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|id = chromativ_index&lt;br /&gt;
|definition = '''Хроматическим индексом''' (англ. ''Chromatic index'') &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; называется такое минимальное число '''t''', что существует рёберная раскраска графа в '''t''' цветов.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Некоторые оценки хроматического индекса ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id = lem1&lt;br /&gt;
|about = о нижней оценке хроматического индекса&lt;br /&gt;
|statement= &amp;lt;tex&amp;gt;\forall\ G(V, E) : \Delta (G) \leqslant \chi '(G)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;\Delta (G)&amp;lt;/tex&amp;gt; {{---}} максимальная степень вершины в графе&lt;br /&gt;
|proof= Действительно, давайте рассмотрим вершину максимальной степени в графе. Ей инцидентно ровно &amp;lt;tex&amp;gt;\Delta(G)&amp;lt;/tex&amp;gt; рёбер. При этом, чтобы все они имели попарно различные цвета, они все должны иметь различные цвета, иначе найдётся пара различных рёбер, инцидентных одной вершине и имеющих одинаковый цвет.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Заметим, что в теории графов доказывается более строгое неравенство&amp;lt;ref&amp;gt;http://math.uchicago.edu/~may/REU2015/REUPapers/Green.pdf&amp;lt;/ref&amp;gt;, ограничивающее &amp;lt;tex&amp;gt;\chi '(G)&amp;lt;/tex&amp;gt;. А именно то, что &amp;lt;tex&amp;gt;\forall\ G(V, E) : \Delta (G) \leqslant \chi '(G) \leqslant \Delta (G) + 1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Рёберная раскраска двудольного графа ==&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id = lem2&lt;br /&gt;
|about = о совершенном паросочетании&lt;br /&gt;
|statement= В [[Основные определения теории графов#defBiparateGraph | двудольном]] &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;-[[Основные определения теории графов#defRegularGraph |регулярном]] графе с одинаковыми по размеру долями  существует совершенное паросочетание.&lt;br /&gt;
|proof= &lt;br /&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;R&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;
&lt;br /&gt;
Посчитаем количество рёбер &amp;lt;tex&amp;gt;m_{L}&amp;lt;/tex&amp;gt;  в данном подграфе. В силу его двудольности, это число будет равняться сумме степеней вершин одной из долей. &amp;lt;tex&amp;gt;m_{L} = \underset{{v\in L}}{\sum} deg(v) = |L|\cdot k = \underset{{u\in R}}{\sum} deg(u) \leqslant |R|\cdot k&amp;lt;/tex&amp;gt;. Из этого мы получаем, что &amp;lt;tex&amp;gt;|L|\leqslant |R|&amp;lt;/tex&amp;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;G&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;\Delta(G)&amp;lt;/tex&amp;gt; цветов. Иными словами, для двудольного графа &amp;lt;tex&amp;gt;\chi '(G) = \Delta(G)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof= &lt;br /&gt;
В доказательство рассмотрим следующий алгоритм поиска такой раскраски:&lt;br /&gt;
&lt;br /&gt;
# Для начала сделаем доли графа одинаковыми по размеру, дополнив меньшую из долей необходимым количеством [[Основные определения теории графов#isolated_vertex | изолированных вершин]];&lt;br /&gt;
# Следующим жадным алгоритмом сделаем его &amp;lt;tex&amp;gt;\Delta(G)&amp;lt;/tex&amp;gt;-регулярным: пока граф не регулярный возьмём вершину левой доли степени меньше &amp;lt;tex&amp;gt;\Delta(G)&amp;lt;/tex&amp;gt; и аналогичную вершину правой доли. Соединим их ребром;&lt;br /&gt;
# Мы получили регулярный двудольный граф с равными долями. По лемме о совершенном паросочетании в таком графе есть совершенное паросочетание. Найдём его, например [[Алгоритм Куна для поиска максимального паросочетания | алгоритмом Куна]], и удалим из графа;&lt;br /&gt;
# Заметим, что граф всё ещё остался регулярным, так как степень каждой вершины уменьшилась на &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;. Будем повторять процесс, пока в графе есть рёбра;&lt;br /&gt;
# В итоге мы разобьём рёбра графа на &amp;lt;tex&amp;gt;\Delta(G)&amp;lt;/tex&amp;gt; совершенных паросочетаний; &lt;br /&gt;
# В конце нам остаётся каждое паросочетание покрасить в свой цвет и удалить рёбра, которых не было в изначальном графе;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Докажем, что жадный алгоритм из пункта &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; всегда выполняет поставленную задачу.&lt;br /&gt;
&lt;br /&gt;
Предположим, что это не так, и, не нарушая общности, у нас остались вершины в правой доле степени меньше &amp;lt;tex&amp;gt;\Delta(G)&amp;lt;/tex&amp;gt;, а в левой таких вершин нет. Давайте посчитаем количество рёбер &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; в графе. Из левой доли исходит &amp;lt;tex&amp;gt;|L| \cdot \Delta(G)&amp;lt;/tex&amp;gt; рёбер. В правую же приходит не более &amp;lt;tex&amp;gt;|R| \cdot \Delta(G)&amp;lt;/tex&amp;gt; рёбер, но так как существует вершина степени меньше &amp;lt;tex&amp;gt;\Delta(G)&amp;lt;/tex&amp;gt;, то неравенство строгое. Получается &amp;lt;tex&amp;gt;|L| \cdot \Delta(G) = m &amp;lt; |R| \cdot \Delta(G)&amp;lt;/tex&amp;gt;. Но в нашем графе  &amp;lt;tex&amp;gt;|L| = |R|&amp;lt;/tex&amp;gt;. Следовательно  &amp;lt;tex&amp;gt;\Delta(G) &amp;lt; \Delta(G)&amp;lt;/tex&amp;gt;, что приводит нас к противоречию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Таким образом мы нашли раскраску двудольного графа в &amp;lt;tex&amp;gt;\Delta(G)&amp;lt;/tex&amp;gt; цветов и предъявили алгоритм её получения. А по лемме о нижней оценки, меньше цветов использовать нельзя. Следовательно &amp;lt;tex&amp;gt;\chi '(G) = \Delta(G)&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;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
* [https://ru.wikipedia.org/wiki/Рёберная_раскраска Википедия {{---}} Рёберная раскраска]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Раскраски графов]]&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%BD%D0%B6%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=83374</id>
		<title>Ранжирование</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%BD%D0%B6%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=83374"/>
				<updated>2022-09-01T04:48:36Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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;
'''Ранжирование''' (англ. ''learning to rank'') {{---}} это класс задач [[Общие понятия|машинного обучения с учителем]], заключающихся в автоматическом подборе ранжирующей модели по обучающей выборке, состоящей из множества списков и заданных частичных порядков на элементах внутри каждого списка. Частичный порядок обычно задаётся путём указания оценки для каждого элемента (например, «релевантен» или «не релевантен»). Цель ранжирующей модели — наилучшим образом приблизить и обобщить способ ранжирования в обучающей выборке на новые данные.&lt;br /&gt;
&lt;br /&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^l = \{x_1, \ldots, x_l\}&amp;lt;/tex&amp;gt; {{---}} обучающая выборка.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;i \prec j&amp;lt;/tex&amp;gt; {{---}} правильный [[Отношение порядка|частичный порядок]] на парах &amp;lt;tex&amp;gt;(i, j) \in \{1, \ldots, l\}^2&amp;lt;/tex&amp;gt;. &amp;quot;Правильность&amp;quot; зависит от постановки задачи, а именно запись &amp;lt;tex&amp;gt;i \prec 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;, так и наоборот. &lt;br /&gt;
&lt;br /&gt;
'''Задача:'''&lt;br /&gt;
&lt;br /&gt;
Построить ранжирующую функцию &amp;lt;tex&amp;gt;a : X \to \mathbb{R}&amp;lt;/tex&amp;gt; такую, что: &amp;lt;tex&amp;gt; i \prec j \Rightarrow a(x_i) &amp;lt; a(x_j)&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
'''Линейная модель ранжирования:''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;a(x; w) = \langle x, w \rangle&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;x \mapsto (f_1(x), \ldots, f_n(x)) \in \mathbb{R}^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;
===Задача ранжирования поисковой выдачи===&lt;br /&gt;
&amp;lt;tex&amp;gt;D&amp;lt;/tex&amp;gt; {{---}} коллекция текстовых документов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt; {{---}} множество запросов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;D_q \subseteq D&amp;lt;/tex&amp;gt; {{---}} множество документов, найденных по запросу &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;X = Q \times D&amp;lt;/tex&amp;gt; {{---}} объектами являются пары (запрос, документ): &amp;lt;tex&amp;gt;x \equiv (q, d), q \in Q, d \in D_q&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt; {{---}} упорядоченное множество рейтингов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;y: X \to Y&amp;lt;/tex&amp;gt; {{---}} оценки релевантности, поставленные асессорами (экспертами): чем выше оценка &amp;lt;tex&amp;gt;y(q, d)&amp;lt;/tex&amp;gt;, тем релевантнее документ &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; по запросу &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
''Правильный порядок'' определен только между документами, найденными по одному и тому же запросу &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt; (q, d) \prec (q, d') \Leftrightarrow y(q, d) &amp;lt; y(q, d')&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Релевантные ответы запросу &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; {{---}} это список документов &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;, упорядоченных с помощью функции ранжирования &amp;lt;tex&amp;gt;a(q, d)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Коллаборативная фильтрация===&lt;br /&gt;
&amp;lt;tex&amp;gt;U&amp;lt;/tex&amp;gt; {{---}} пользователи.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;I&amp;lt;/tex&amp;gt; {{---}} предметы (фильмы, книги и т.д.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;X = U \times I&amp;lt;/tex&amp;gt; {{---}} объектами являются пары (пользователь, предмет).&lt;br /&gt;
&lt;br /&gt;
''Правильный порядок'' определён между предметами, которые выбирал или рейтинговал один и тот же пользователь: &amp;lt;tex&amp;gt;(u, i) \prec (u, i') \Leftrightarrow y(u, i) &amp;lt; y(u, i')&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;i&amp;lt;/tex&amp;gt;, упорядоченный с помощью функции ранжирования &amp;lt;tex&amp;gt;a(u, i)&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;y(q, d) \in \{0, 1\}, &amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; – целевая переменная, &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; – запрос, &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; – документ.&lt;br /&gt;
&lt;br /&gt;
Пусть также есть некоторая модель &amp;lt;tex&amp;gt;a(q, d)&amp;lt;/tex&amp;gt;, оценивающая релевантность документа запросу. По значениям, полученным с помощью этой модели, можно отранжировать документы. &amp;lt;tex&amp;gt;d^{(i)}_{q}&amp;lt;/tex&amp;gt; будет обозначать &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й по&lt;br /&gt;
релевантности документ для запроса &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После того как введены обозначения можно задать простейшую метрику ранжирования. Это &amp;lt;tex&amp;gt;Precision@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;k&amp;lt;/tex&amp;gt; — параметр метрики). Если ранжируется поисковая выдача, и на&lt;br /&gt;
первой странице показываются 10 документов, то разумно выбирать &amp;lt;tex&amp;gt;k = 10&amp;lt;/tex&amp;gt;. Данная метрика определяется&lt;br /&gt;
как доля релевантных документов среди первых &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, полученных с помощью модели:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;Precision@k(q) = {{1}\over{k}} \sum_{i = 1}^{k} y(q, d_{q}^{(i)})&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Однако у неё есть серьёзный недостаток: позиции релевантных документов никак не учитываются. Например, если&lt;br /&gt;
при &amp;lt;tex&amp;gt;k = 10&amp;lt;/tex&amp;gt; среди первых &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; документов есть &amp;lt;tex&amp;gt;5&amp;lt;/tex&amp;gt; релевантных, то неважно, где они находятся: среди первых&lt;br /&gt;
или последних &amp;lt;tex&amp;gt;5&amp;lt;/tex&amp;gt; документов. Обычно же хочется, чтобы релевантные документы располагались как можно&lt;br /&gt;
выше.&lt;br /&gt;
&lt;br /&gt;
Описанную проблему можно решить, модифицировав метрику, и определить среднюю точность (англ. average&lt;br /&gt;
precision). Данная метрика тоже измеряется на уровне &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; и вычисляется следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;AP@k(q) =  {\large {{\sum_{i = 1}^{k} y(q, d_{q}^{(i)}) Precision@i(q)}\over{\sum_{i = 1}^{k} y(q, d_{q}^{(i)})}}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Данная величина уже зависит от порядка. Она достигает максимума, если все релевантные документы находятся вверху ранжированного списка. Если они смещаются ниже, значение метрики уменьшается.&lt;br /&gt;
&lt;br /&gt;
И точность, и средняя точность вычисляются для конкретного запроса &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt;. Если выборка большая и размечена для многих запросов, то значения метрик усредняются по всем запросам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;MAP@k = {{1}\over{|Q|}} \sum_{q \in Q} AP@k(q)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Дисконтированный совокупный доход===&lt;br /&gt;
Второй подход к измерению качества ранжирования — дисконтированный совокупный доход (англ. discounted cumulative gain) или DCG. Он&lt;br /&gt;
используется в более сложной ситуации, когда оценки релевантности &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; могут быть вещественными: &amp;lt;tex&amp;gt;y(q, d) \in \mathbb{R}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
То есть для каждого документа теперь существует градация между релевантностью и нерелевантностью.&lt;br /&gt;
Остальные обозначения остаются теми же, что и для предыдущей метрики. Формула для вычисления DCG:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;DCG@k(q)= \sum_{i = 1}^{k} {\large {{2^{y(q, d_{q}^{(i)})} - 1} \over {log(i+1)}}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Метрика — это сумма дробей. Чем более релевантен документ, тем больше числитель в дроби. Знаменатель&lt;br /&gt;
зависит от позиции документа, он штрафует за то, где находится документ. Если документ очень релевантен,&lt;br /&gt;
но занимает низкую позицию, то штраф будет большим, если документ релевантен и находится вверху списка,&lt;br /&gt;
штраф будет маленьким. Таким образом, метрика DCG учитывает и релевантность, и позицию документа.&lt;br /&gt;
Она достигает максимума, если все релевантные документы находятся в топе списка, причём отсортированные&lt;br /&gt;
по значению &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt;. Данную метрику принято нормировать:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;nDCG@k(q) = {\large {DCG@k(q)} \over {{\large max DCG@k(q)}}}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;max DCG@k(q)&amp;lt;/tex&amp;gt; — значение DCG при идеальном ранжировании. После нормировки метрика принимает&lt;br /&gt;
значения от 0 до 1.&lt;br /&gt;
&lt;br /&gt;
'''Пример вычисления DCG и nDCG:'''&lt;br /&gt;
&lt;br /&gt;
Дано множество документов, где каждый документ оценивается от &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt; {{---}} очень релевантен, а &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; {{---}} не релевантен. Пусть таким множеством будет &amp;lt;tex&amp;gt;S = \{ D_1, D_2, D_3, D_4, D_5, D_6\}&amp;lt;/tex&amp;gt;, где оценка релевантности по опросу пользователей задается(в том же порядке) множеством &amp;lt;tex&amp;gt;R = \{3, 2, 3, 0, 1, 2\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;DCG@6 = \sum_{i = 1}^{6} {{rel_i} \over {log(i+1)}} = 3 + 1.262 + 1.5 + 0 + 0.387 + 0.712 = 6.861&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: blue; background-color:#ffffcc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! '''i''' || &amp;lt;tex&amp;gt;rel_i&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;log(i+1)&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;{rel_i}\over{log(i+1)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;1.585&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;1.262&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;1.5&amp;lt;/tex&amp;gt; &lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| &amp;lt;tex&amp;gt;4&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;2.322&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; &lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| &amp;lt;tex&amp;gt;5&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;2.585&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;0.387&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| &amp;lt;tex&amp;gt;6&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;2.807&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;0.712&amp;lt;/tex&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Идеальный порядок оценок релевантности &amp;lt;tex&amp;gt;Ideal = \{3, 3, 2, 2, 1, 0\}&amp;lt;/tex&amp;gt;. DCG для данного множества будет следующим: &amp;lt;tex&amp;gt;maxDCG@6 = \sum_{i = 1}^{6} {{rel_i} \over {log(i+1)}} = 3 + 1.893 + 1 + 0.861 + 0.387 + 0 = 7.141&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;color: blue; background-color:#ffffcc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
! '''i''' || &amp;lt;tex&amp;gt;rel_i&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;log(i+1)&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;{rel_i}\over{log(i+1)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&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;1.585&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;1.893&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; &lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| &amp;lt;tex&amp;gt;4&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;2.322&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;0.861&amp;lt;/tex&amp;gt; &lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| &amp;lt;tex&amp;gt;5&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;2.585&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;0.387&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| &amp;lt;tex&amp;gt;6&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; || &amp;lt;tex&amp;gt;2.807&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;
Итого &amp;lt;tex&amp;gt;nDCG@6 = {{DCG@6} \over {maxDCG@6}} = {{6.861} \over {7.141}} = 0.961&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Методы ранжирования==&lt;br /&gt;
&lt;br /&gt;
Всего выделяют три подхода к решению задачи ранжирования: поточечный (англ. pointwise), попарный (англ. pairwise), списочный (англ. listwise). Выбор метода зависит от качества ранжирования данных. Теоретически, списочный подход считается наилучшим, однако, на практике, например в Яндексе, лучше всего работает попарный подход.&lt;br /&gt;
&lt;br /&gt;
===Поточечный подход===&lt;br /&gt;
&lt;br /&gt;
Самый простой подход — это поточечный. В нём игнорируется тот факт, что целевая переменная &amp;lt;tex&amp;gt;y(q, d) \in \mathbb{R}&amp;lt;/tex&amp;gt;  задаётся на парах объектов, и оценка релевантности &amp;lt;tex&amp;gt;a(d, q)&amp;lt;/tex&amp;gt; считается  для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Если речь идёт о задаче ранжирования поисковой выдачи, то пусть асессор поставил какую-то оценку &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; каждой паре (запрос, документ). Эта оценка и будет предсказываться. При этом никак не учитывается, что нужно предсказать порядок объектов, а не оценки. Этот подход является простым в том смысле, что в нём&lt;br /&gt;
используются уже известные методы. Например, можно предсказывать оценки с использованием линейной&lt;br /&gt;
регрессии и квадратичной ошибки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\sum_{i = 1}^{l} (a(q_i, d_i) - y(q_i, d_i))^2 \rightarrow min&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;
&amp;lt;tex&amp;gt;\sum_{x_i &amp;lt; x_j} [a(x_j) - a(x_i) &amp;lt; 0] \rightarrow min&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(x_j) − a(x_i)&amp;lt;/tex&amp;gt; — это отступ &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, и задать некоторую гладкую&lt;br /&gt;
функцию &amp;lt;tex&amp;gt;L(M)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\sum_{x_i &amp;lt; x_j} L(a(x_j) - a(x_i)) \rightarrow min&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если использовать функцию как в логистической регрессии &amp;lt;tex&amp;gt;L(M) = log(1 + e^{−M})&amp;lt;/tex&amp;gt;, то полученный метод называется RankNet. Затем можно решать задачу, например, с помощью [[Стохастический градиентный спуск|стохастического градиентного спуска]].&lt;br /&gt;
&lt;br /&gt;
===Списочный подход===&lt;br /&gt;
&lt;br /&gt;
В методе RankNet шаг стохастического градиентного спуска для линейной модели выглядит следующим&lt;br /&gt;
образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\omega := \omega + \eta {{\large 1} \over {\large 1 + exp(\langle \omega, x_j - x_i \rangle)}} (x_j - x_i)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что данная формула зависит от одной пары объектов, а также не учитываются зависимости между различными парами. Возникает вопрос, можно ли модифицировать данный метод (а именно формулу шага) так, чтобы минимизировался не исходный функционал, оценивающий долю дефектных пар, а DCG.&lt;br /&gt;
&lt;br /&gt;
Действительно, можно домножить градиент исходного функционала на то, насколько изменится nDCG, если поменять местами &amp;lt;tex&amp;gt;x_i&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;x_j&amp;lt;/tex&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\omega := \omega + \eta {{\large 1} \over {\large 1 + exp(\langle \omega, x_j - x_i \rangle)}} (x_j - x_i) |\Delta nDCG_{ij}| (x_j - x_i)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данный метод называется LambdaRank&amp;lt;ref&amp;gt;[https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/MSR-TR-2010-82.pdf From RankNet to LambdaRank {{---}} Christopher J.C. Burges]&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Оказывается, что при выполнении градиентного спуска с помощью данных шагов оптимизируется nDCG. Существуют и другие подходы к оптимизации nDCG, однако в них предпринимается попытка работы с&lt;br /&gt;
функционалом, что гораздо сложнее.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Общие понятия|Общие понятия]]&lt;br /&gt;
* [[Стохастический градиентный спуск|Стохастический градиентный спуск]]&lt;br /&gt;
* [[Рекомендательные системы|Рекомендательные системы]]&amp;lt;sup&amp;gt;[на 17.03.19 не создан]&amp;lt;/sup&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;
# [http://www.machinelearning.ru/wiki/images/8/89/Voron-ML-Ranking-slides.pdf?title=Rank Обучение ранжировнию] {{---}} статья на machinelearning.ru&lt;br /&gt;
# [https://www.coursera.org/lecture/text-retrieval/lesson-6-1-learning-to-rank-part-1-mFYTD Learning to rank] {{---}} презентация на coursera.org&lt;br /&gt;
# [http://www.machinelearning.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%BA%D1%83%D1%80%D1%81_%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B9%2C_%D0%9A.%D0%92.%D0%92%D0%BE%D1%80%D0%BE%D0%BD%D1%86%D0%BE%D0%B2) Курс лекций по машинному обучению] {{---}} Воронцов К.В.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>91.212.153.123</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%94%D0%B8%D1%84%D1%843%D1%81%D0%B5%D0%BC-%D0%BE%D0%B3%D0%BB%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=83373</id>
		<title>Дифф3сем-оглавление</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%94%D0%B8%D1%84%D1%843%D1%81%D0%B5%D0%BC-%D0%BE%D0%B3%D0%BB%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=83373"/>
				<updated>2022-09-01T04:48:28Z</updated>
		
		<summary type="html">&lt;p&gt;91.212.153.123: &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>91.212.153.123</name></author>	</entry>

	</feed>