<?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=Savelin</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=Savelin"/>
		<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/Savelin"/>
		<updated>2026-06-11T16:46:35Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44352</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44352"/>
				<updated>2015-01-12T18:48:11Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:MST-example.png|right|thumb|200px|Пример минимального остовного дерева.]]&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 &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|neat = 1&lt;br /&gt;
|definition =&lt;br /&gt;
'''Остовное дерево''' (англ. ''spanning tree'') графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt; {{---}} ациклический связный подграф данного связного неориентированного графа.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = ( V, E ) &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;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; ( u, v ) \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''' (англ. ''safe edge''), если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ ( u, v ) \}&amp;lt;/tex&amp;gt; также является подграфом некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Разрезом''' (англ. ''cut'') неориентированного графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;  называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; ( u, v ) \in E &amp;lt;/tex&amp;gt; '''пересекает''' (англ. ''crosses'') разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = ( V, E' ) &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; ( u, v ) &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = ( u, v ) &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ : Вильямс, 2-е издание, 2005, С. 644-649&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44351</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44351"/>
				<updated>2015-01-12T18:45:01Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:MST-example.png|right|thumb|200px|Пример минимального остовного дерева.]]&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 &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Остовное дерево''' (англ. ''spanning tree'') графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt; {{---}} ациклический связный подграф данного связного неориентированного графа.&lt;br /&gt;
}}{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = ( V, E ) &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;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; ( u, v ) \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''' (англ. ''safe edge''), если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ ( u, v ) \}&amp;lt;/tex&amp;gt; также является подграфом некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Разрезом''' (англ. ''cut'') неориентированного графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;  называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; ( u, v ) \in E &amp;lt;/tex&amp;gt; '''пересекает''' (англ. ''crosses'') разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = ( V, E' ) &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; ( u, v ) &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = ( u, v ) &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ : Вильямс, 2-е издание, 2005, С. 644-649&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44350</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44350"/>
				<updated>2015-01-12T18:36:47Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Необходимые определения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:MST-example.png|right|thumb|200px|Пример минимального остовного дерева.]]&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 &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Остовное дерево''' (англ. ''spanning tree'') графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt; {{---}} ациклический связный подграф данного связного неориентированного графа.&lt;br /&gt;
}}{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = ( V, E ) &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;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''' (англ. ''safe edge''), если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&amp;lt;/tex&amp;gt; также является подграфом некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Разрезом''' (англ. ''cut'') неориентированного графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;  называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает''' (англ. ''crosses'') разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = ( V, E' ) &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ : Вильямс, 2-е издание, 2005, С. 644-649&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44349</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44349"/>
				<updated>2015-01-12T18:26:32Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Необходимые определения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:MST-example.png|right|thumb|200px|Пример минимального остовного дерева.]]&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 &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Остовное дерево''' (англ. ''spanning tree'') графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt; {{---}} ациклический связный подграф данного связного неориентированного графа.&lt;br /&gt;
&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;  {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''' (англ. ''safe edge''), если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&amp;lt;/tex&amp;gt; также является подграфом некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Разрезом''' (англ. ''cut'') неориентированного графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;  называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает''' (англ. ''crosses'') разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = ( V, E' ) &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ : Вильямс, 2-е издание, 2005, С. 644-649&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44348</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44348"/>
				<updated>2015-01-12T18:23:29Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
[[Файл:MST-example.png|right|thumb|200px|Пример минимального остовного дерева.]]&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =( V, E ) &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Остовное дерево''' (англ. ''spanning tree'') графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt; {{---}} ациклический связный подграф данного связного неориентированного графа.&lt;br /&gt;
&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;  {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''' (англ. ''safe edge''), если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&amp;lt;/tex&amp;gt; также является подграфом некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Разрезом''' (англ. ''cut'') неориентированного графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;  называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает''' (англ. ''crosses'') разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = ( V, E' ) &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ : Вильямс, 2-е издание, 2005, С. 644-649&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:MST-example.png&amp;diff=44346</id>
		<title>Файл:MST-example.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:MST-example.png&amp;diff=44346"/>
				<updated>2015-01-12T18:17:47Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: загружена новая версия «Файл:MST-example.png»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:MST-example.png&amp;diff=44344</id>
		<title>Файл:MST-example.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:MST-example.png&amp;diff=44344"/>
				<updated>2015-01-12T18:01:13Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44110</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44110"/>
				<updated>2015-01-11T11:12:48Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Необходимые определения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =( V, E ) &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Остовное дерево''' (англ. ''spanning tree'') графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt; {{---}} ациклический связный подграф данного связного неориентированного графа.&lt;br /&gt;
&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;  {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''' (англ. ''safe edge''), если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&amp;lt;/tex&amp;gt; также является подграфом некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Разрезом''' (англ. ''cut'') неориентированного графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;  называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает''' (англ. ''crosses'') разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = ( V, E' ) &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ : Вильямс, 2-е издание, 2005, С. 644-649&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44084</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44084"/>
				<updated>2015-01-11T09:55:06Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Лемма о безопасном ребре */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =( V, E ) &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;  {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''' (англ. ''safe edge''), если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&amp;lt;/tex&amp;gt; также является подграфом некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Разрезом''' (англ. ''cut'') неориентированного графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;  называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает''' (англ. ''crosses'') разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = ( V, E' ) &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ : Вильямс, 2-е издание, 2005, С. 644-649&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44083</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=44083"/>
				<updated>2015-01-11T09:54:06Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Необходимые определения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =( V, E ) &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;  {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''' (англ. ''safe edge''), если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&amp;lt;/tex&amp;gt; также является подграфом некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Разрезом''' (англ. ''cut'') неориентированного графа &amp;lt;tex&amp;gt; G = ( V, E ) &amp;lt;/tex&amp;gt;  называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает''' (англ. ''crosses'') разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ : Вильямс, 2-е издание, 2005, С. 644-649&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=43926</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=43926"/>
				<updated>2015-01-10T08:23:44Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Источники информации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;  {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''' (англ. ''safe edge''), если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&amp;lt;/tex&amp;gt; также является подграфом некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Разрезом''' (англ. ''cut'') неориентированного графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;  называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает''' (англ. ''crosses'') разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ : Вильямс, 2-е издание, 2005, С. 644-649&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=43925</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=43925"/>
				<updated>2015-01-10T08:23:34Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Источники информации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;  {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''' (англ. ''safe edge''), если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&amp;lt;/tex&amp;gt; также является подграфом некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Разрезом''' (англ. ''cut'') неориентированного графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;  называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает''' (англ. ''crosses'') разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ : Вильямс, 2-е издание, 2005, С. 644—649&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=43924</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=43924"/>
				<updated>2015-01-10T08:22:58Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Источники информации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;  {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''' (англ. ''safe edge''), если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&amp;lt;/tex&amp;gt; также является подграфом некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Разрезом''' (англ. ''cut'') неориентированного графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;  называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает''' (англ. ''crosses'') разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ : Вильямс, 2-е издание, 2005, С. 644-649&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=43923</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=43923"/>
				<updated>2015-01-10T08:22:08Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Необходимые определения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;  {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''' (англ. ''safe edge''), если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&amp;lt;/tex&amp;gt; также является подграфом некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Разрезом''' (англ. ''cut'') неориентированного графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;  называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает''' (англ. ''crosses'') разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ : Вильямс, 2-е издание, 2005, С. TBD&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=43921</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=43921"/>
				<updated>2015-01-10T08:09:46Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Источники информации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;  {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''cut'') называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ : Вильямс, 2-е издание, 2005, С. TBD&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=43920</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=43920"/>
				<updated>2015-01-10T08:08:34Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Источники информации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;  {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''cut'') называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ : Вильямс, 2-е издание.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=43919</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=43919"/>
				<updated>2015-01-10T08:05:29Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;  {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''cut'') называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=43918</id>
		<title>Участник:Savelin</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=43918"/>
				<updated>2015-01-10T08:04:56Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Cм. также */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;  {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''cut'') называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=43917</id>
		<title>Участник:Savelin</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=43917"/>
				<updated>2015-01-10T08:04:34Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Необходимые определения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;  {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''cut'') называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42868</id>
		<title>Участник:Savelin</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42868"/>
				<updated>2014-12-25T18:57:39Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево'''  графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''minimum spanning tree'') {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''cut'') называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&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;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0,_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%B8_%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&amp;diff=42867</id>
		<title>Дискретная математика, алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0,_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%B8_%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&amp;diff=42867"/>
				<updated>2014-12-25T18:54:29Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Построение остовных деревьев */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
&lt;br /&gt;
Убедительная просьба читать [[Обсуждение:Дискретная_математика_и_алгоритмы | правила оформления вики-конспектов]].&lt;br /&gt;
&lt;br /&gt;
= Первый семестр =&lt;br /&gt;
&lt;br /&gt;
== Отношения ==&lt;br /&gt;
*[[Определение отношения]]&lt;br /&gt;
*[[Композиция отношений|Композиция отношений, степень отношения, обратное отношение]]&lt;br /&gt;
*[[Рефлексивное отношение|Рефлексивное отношение. Антирефлексивное отношение.]]&lt;br /&gt;
*[[Симметричное отношение]]&lt;br /&gt;
*[[Антисимметричное отношение]]&lt;br /&gt;
*[[Транзитивное отношение]]&lt;br /&gt;
*[[Отношение порядка]]&lt;br /&gt;
*[[Отношение эквивалентности]]&lt;br /&gt;
*[[Транзитивное замыкание|Транзитивное замыкание отношения]]&lt;br /&gt;
*[[Алгоритм Флойда — Уоршелла|Алгоритм Флойда-Уоршалла построения транзитивного замыкания отношения]]&lt;br /&gt;
*[[Транзитивный остов]]&lt;br /&gt;
&lt;br /&gt;
== Булевы функции ==&lt;br /&gt;
*[[Определение булевой функции]]&lt;br /&gt;
*[[Суперпозиции]]&lt;br /&gt;
*[[ДНФ]]&lt;br /&gt;
*[[Сокращенная и минимальная ДНФ | Сокращенная и минимальная ДНФ, минимизация ДНФ методами гиперкубов, карт Карно, Квайна]]&lt;br /&gt;
*[[КНФ]]&lt;br /&gt;
*[[Специальные формы КНФ|Специальные формы КНФ: КНФ в форме Хорна и КНФ в форме Крома]]&lt;br /&gt;
*[[Полином Жегалкина | Полином Жегалкина, преобразование Мёбиуса]]&lt;br /&gt;
*[[Полные системы функций. Теорема Поста о полной системе функций]]&lt;br /&gt;
*[[Представление функции класса DM с помощью медианы]]&lt;br /&gt;
*[[Пороговая функция]]&lt;br /&gt;
*[[Троичная логика]]&lt;br /&gt;
&lt;br /&gt;
== Схемы из функциональных элементов ==&lt;br /&gt;
*[[Реализация булевой функции схемой из функциональных элементов]]&lt;br /&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;
*[[Кодирование информации]]&lt;br /&gt;
*[[Представление целых чисел: прямой код, код со сдвигом, дополнительный код]]&lt;br /&gt;
*[[Представление вещественных чисел]]&lt;br /&gt;
*[[Представление символов, таблицы кодировок]]&lt;br /&gt;
&lt;br /&gt;
== Алгоритмы сжатия ==&lt;br /&gt;
* [[Алгоритм Хаффмана]]&lt;br /&gt;
* [[Оптимальное хранение словаря в алгоритме Хаффмана]]&lt;br /&gt;
* [[Алгоритм Хаффмана за O(n)]]&lt;br /&gt;
* [[Алгоритм Ху-Таккера]]&lt;br /&gt;
* [[Неравенство Крафта]]&lt;br /&gt;
* [[Неравенство Макмиллана]]&lt;br /&gt;
* [[Оптимальный префиксный код с длиной кодового слова не более L бит]]&lt;br /&gt;
* [[Алгоритмы LZ77 и LZ78]]&lt;br /&gt;
* [[Алгоритм LZW]]&lt;br /&gt;
* [[Алгоритм LZSS]]&lt;br /&gt;
* [[Преобразование Барроуза-Уиллера | Преобразование Барроуза-Уиллера и обратное ему]]&lt;br /&gt;
* [[Преобразование MTF]]&lt;br /&gt;
* [[Расстояние Хэмминга]]&lt;br /&gt;
* [[Избыточное кодирование, код Хэмминга]]&lt;br /&gt;
* [[Гамма-, дельта- и омега-код Элиаса]]&lt;br /&gt;
&lt;br /&gt;
== Комбинаторика ==&lt;br /&gt;
=== Комбинаторные объекты ===&lt;br /&gt;
* [[Комбинаторные объекты]]&lt;br /&gt;
* [[Лексикографический порядок]]&lt;br /&gt;
* [[Коды Грея]]&lt;br /&gt;
* [[Коды Грея для перестановок]]&lt;br /&gt;
* [[Коды антигрея]]&lt;br /&gt;
* [[Цепные коды]]&lt;br /&gt;
* [[Правильные скобочные последовательности]]&lt;br /&gt;
&lt;br /&gt;
=== Генерация комбинаторных объектов ===&lt;br /&gt;
* [[Генерация комбинаторных объектов в лексикографическом порядке]]&lt;br /&gt;
* [[Получение номера по объекту]]&lt;br /&gt;
* [[Получение объекта по номеру]]&lt;br /&gt;
* [[Получение следующего объекта]]&lt;br /&gt;
* [[Метод генерации случайной перестановки, алгоритм Фишера-Йетса]]&lt;br /&gt;
* [[Методы генерации случайного сочетания]]&lt;br /&gt;
=== Подсчёт числа объектов ===&lt;br /&gt;
* [[Формула включения-исключения | Формула включения-исключения, подсчет числа беспорядков]]&lt;br /&gt;
* [[Нахождение количества разбиений числа на слагаемые | Нахождение количества разбиений числа на слагаемые. Пентагональная теорема Эйлера]]&lt;br /&gt;
* [[Производящая функция]]&lt;br /&gt;
* [[Лемма Бёрнсайда и Теорема Пойа]]&lt;br /&gt;
* [[Задача об ожерельях]]&lt;br /&gt;
* [[Числа Стирлинга первого рода]]&lt;br /&gt;
* [[Числа Стирлинга второго рода]]&lt;br /&gt;
* [[Числа Эйлера I и II рода | Числа Эйлера первого и второго рода. Подъемы в перестановках]]&lt;br /&gt;
* [[Числа Каталана]]&lt;br /&gt;
&lt;br /&gt;
=== Свойства комбинаторных объектов ===&lt;br /&gt;
* [[Умножение перестановок, обратная перестановка, группа перестановок]]&lt;br /&gt;
* [[Действие перестановки на набор из элементов, представление в виде циклов]]&lt;br /&gt;
* [[Таблица инверсий]]&lt;br /&gt;
* [[Теорема Кэли]]&lt;br /&gt;
* [[Матричное представление перестановок]]&lt;br /&gt;
* [[Задача о минимуме/максимуме скалярного произведения]]&lt;br /&gt;
* [[Задача о монотонных подпоследовательностях, теорема о связи длины НВП и НУП]]&lt;br /&gt;
&lt;br /&gt;
== [[Динамическое программирование]] ==&lt;br /&gt;
=== Классические задачи динамического программирования ===&lt;br /&gt;
*[[Кратчайший путь в ациклическом графе]]&lt;br /&gt;
*[[Задача о числе путей в ациклическом графе]]&lt;br /&gt;
*[[Задача о расстановке знаков в выражении]]&lt;br /&gt;
*[[Задача о порядке перемножения матриц]]&lt;br /&gt;
*[[Задача о наибольшей общей подпоследовательности]]&lt;br /&gt;
*[[Задача о наибольшей возрастающей подпоследовательности]]&lt;br /&gt;
*[[Задача коммивояжера, ДП по подмножествам]]&lt;br /&gt;
*[[Задача о редакционном расстоянии, алгоритм Вагнера-Фишера]]&lt;br /&gt;
*[[Задача о рюкзаке]]&lt;br /&gt;
&lt;br /&gt;
=== Способы оптимизации методов динамического программирования ===&lt;br /&gt;
*[[Метод четырех русских для умножения матриц]]&lt;br /&gt;
*[[Применение метода четырех русских в задачах ДП на примере задачи о НОП]]&lt;br /&gt;
*[[Задача об оптимальном префиксном коде с сохранением порядка. Монотонность точки разреза]]&lt;br /&gt;
*[[Meet-in-the-middle]]&lt;br /&gt;
&lt;br /&gt;
=== Другие задачи ===&lt;br /&gt;
*[[Задача о расстоянии Дамерау-Левенштейна]]&lt;br /&gt;
*[[Задача о выводе в контекстно-свободной грамматике, алгоритм Кока-Янгера-Касами]]&lt;br /&gt;
*[[Задача о наибольшей подпоследовательности-палиндроме]]&lt;br /&gt;
*[[Задача о наибольшей общей палиндромной подпоследовательности]]&lt;br /&gt;
*[[Динамическое программирование по профилю]]&lt;br /&gt;
*[[Динамика по поддеревьям]]&lt;br /&gt;
&lt;br /&gt;
== Теория вероятностей ==&lt;br /&gt;
*[[Вероятностное пространство, элементарный исход, событие]]&lt;br /&gt;
*[[Независимые события]]&lt;br /&gt;
*[[Условная вероятность]]&lt;br /&gt;
*[[Формула полной вероятности]]&lt;br /&gt;
*[[Формула Байеса]]&lt;br /&gt;
*[[Дискретная случайная величина]]&lt;br /&gt;
*[[Независимые случайные величины]]&lt;br /&gt;
*[[Математическое ожидание случайной величины]]&lt;br /&gt;
*[[Дисперсия случайной величины]]&lt;br /&gt;
*[[Ковариация случайных величин]]&lt;br /&gt;
*[[Корреляция случайных величин]]&lt;br /&gt;
*[[Энтропия случайного источника]]&lt;br /&gt;
*[[Симуляция одним распределением другого]]&lt;br /&gt;
*[[Арифметическое кодирование]]&lt;br /&gt;
*[[Парадоксы теории вероятностей]]&lt;br /&gt;
*[[Схема Бернулли]]&lt;br /&gt;
&lt;br /&gt;
== Марковские цепи ==&lt;br /&gt;
&lt;br /&gt;
* [[Марковская цепь]]&lt;br /&gt;
* [[Теорема о поглощении]]&lt;br /&gt;
* [[Фундаментальная матрица]]&lt;br /&gt;
* [[Математическое ожидание времени поглощения]]&lt;br /&gt;
* [[Расчет вероятности поглощения в состоянии]]&lt;br /&gt;
* [[Эргодическая марковская цепь]]&lt;br /&gt;
* [[Регулярная марковская цепь]]&lt;br /&gt;
* [[Примеры использования Марковских цепей]]&lt;br /&gt;
* [[Скрытые Марковские модели]]&lt;br /&gt;
* [[Алгоритм Витерби]]&lt;br /&gt;
* [[Алгоритм &amp;quot;Вперед-Назад&amp;quot;]]&lt;br /&gt;
* [[Алгоритм Баума-Велша]]&lt;br /&gt;
&lt;br /&gt;
= Второй семестр =&lt;br /&gt;
&lt;br /&gt;
== Амортизационный анализ ==&lt;br /&gt;
* [[Амортизационный анализ]]&lt;br /&gt;
* [[Динамический массив]]&lt;br /&gt;
* [[Hashed Array Tree]]&lt;br /&gt;
* [[Список]]&lt;br /&gt;
* [[Стек]]&lt;br /&gt;
* [[Очередь]]&lt;br /&gt;
* [[Персистентный стек]]&lt;br /&gt;
* [[Персистентная очередь]]&lt;br /&gt;
* [[Персистентный дек]]&lt;br /&gt;
* [[Мажорирующий элемент]]&lt;br /&gt;
* [[Счетчик Кнута]]&lt;br /&gt;
&lt;br /&gt;
== Приоритетные очереди ==&lt;br /&gt;
&lt;br /&gt;
* [[Двоичная куча]]&lt;br /&gt;
* [[Биномиальная куча]]&lt;br /&gt;
* [[Фибоначчиева куча]]&lt;br /&gt;
* [[Левосторонняя куча]]&lt;br /&gt;
* [[Тонкая куча]]&lt;br /&gt;
* [[Толстая куча на избыточном счетчике]]&lt;br /&gt;
* [[Куча Бродала-Окасаки]]&lt;br /&gt;
&lt;br /&gt;
== Система непересекающихся множеств ==&lt;br /&gt;
* [[СНМ (наивные реализации) | Наивные реализации]]&lt;br /&gt;
* [[СНМ (списки с весовой эвристикой) | Списки с весовой эвристикой]]&lt;br /&gt;
* [[СНМ(реализация с помощью леса корневых деревьев) | Реализация с помощью леса корневых деревьев]]&lt;br /&gt;
* [[СНМ с операцией удаления за О(1)]]&lt;br /&gt;
&lt;br /&gt;
== Поисковые структуры данных ==&lt;br /&gt;
* [[Упорядоченное множество]]&lt;br /&gt;
* [[Дерево поиска, наивная реализация]]&lt;br /&gt;
* [[АВЛ-дерево]]&lt;br /&gt;
* [[2-3 дерево]]&lt;br /&gt;
* [[B-дерево]]&lt;br /&gt;
* [[Красно-черное дерево]]&lt;br /&gt;
* [[Декартово дерево]]&lt;br /&gt;
* [[Декартово дерево по неявному ключу]]&lt;br /&gt;
* [[Splay-дерево]]&lt;br /&gt;
* [[Tango-дерево]]&lt;br /&gt;
* [[Рандомизированное бинарное дерево поиска]]&lt;br /&gt;
* [[Дерево ван Эмде Боаса]]&lt;br /&gt;
* [[Список с пропусками]]&lt;br /&gt;
* [[Fusion tree]]&lt;br /&gt;
* [[Сверхбыстрый цифровой бор]]&lt;br /&gt;
* [[Rope]]&lt;br /&gt;
&lt;br /&gt;
== Дерево отрезков ==&lt;br /&gt;
&lt;br /&gt;
* [[Статистики на отрезках. Корневая эвристика]]&lt;br /&gt;
* [[Дерево отрезков. Построение]]&lt;br /&gt;
* [[Реализация запроса в дереве отрезков сверху]]&lt;br /&gt;
* [[Реализация запроса в дереве отрезков снизу]]&lt;br /&gt;
* [[Несогласованные поддеревья. Реализация массового обновления]]&lt;br /&gt;
* [[Многомерное дерево отрезков]]&lt;br /&gt;
* [[Сжатое многомерное дерево отрезков]]&lt;br /&gt;
&lt;br /&gt;
== Дерево Фенвика ==&lt;br /&gt;
* [[Дерево Фенвика]]&lt;br /&gt;
* [[Встречное дерево Фенвика]]&lt;br /&gt;
* [[Дерево Фенвика для некоммутативных операций]]&lt;br /&gt;
* [[Многомерное дерево Фенвика]]&lt;br /&gt;
&lt;br /&gt;
== Хеширование ==&lt;br /&gt;
* [[Хеш-таблица]]&lt;br /&gt;
* [[Разрешение коллизий]]&lt;br /&gt;
* [[Хеширование кукушки]]&lt;br /&gt;
* [[Идеальное хеширование]]&lt;br /&gt;
* [[Перехеширование. Амортизационный анализ]]&lt;br /&gt;
* [[Фильтр Блума]]&lt;br /&gt;
* [[Универсальное семейство хеш-функций]]&lt;br /&gt;
&lt;br /&gt;
== [[Сортировка]] ==&lt;br /&gt;
=== Квадратичные сортировки ===&lt;br /&gt;
* [[Сортировка выбором]]&lt;br /&gt;
* [[Сортировка пузырьком]]&lt;br /&gt;
* [[Сортировка вставками]]&lt;br /&gt;
=== Сортировки на сравнениях ===&lt;br /&gt;
* [[Сортировка Шелла]]&lt;br /&gt;
* [[Сортировка кучей]]&lt;br /&gt;
* [[Быстрая сортировка]]&lt;br /&gt;
* [[Сортировка слиянием]]&lt;br /&gt;
* [[Cортировка слиянием с использованием O(1) дополнительной памяти]]&lt;br /&gt;
* [[Терпеливая сортировка]]&lt;br /&gt;
* [[Timsort]]&lt;br /&gt;
* [[Теорема о нижней оценке для сортировки сравнениями]]&lt;br /&gt;
=== Многопоточные сортировки ===&lt;br /&gt;
* [[Многопоточная сортировка слиянием]]&lt;br /&gt;
* [[PSRS-сортировка]]&lt;br /&gt;
=== Другие сортировки ===&lt;br /&gt;
* [[Поиск k-ой порядковой статистики]]&lt;br /&gt;
* [[Поиск k-ой порядковой статистики за линейное время]]&lt;br /&gt;
* [[Сортировка подсчетом]]&lt;br /&gt;
* [[Сортировка подсчетом сложных объектов]]&lt;br /&gt;
* [[Цифровая сортировка]]&lt;br /&gt;
* [[Карманная сортировка]]&lt;br /&gt;
* [[Сортировка Хана]]&lt;br /&gt;
&lt;br /&gt;
== Сортирующие сети ==&lt;br /&gt;
* [[Сортирующие сети]]&lt;br /&gt;
* [[0-1 принцип | Проверка сети компараторов на то, что она сортирующая. 0-1 принцип]]&lt;br /&gt;
* [[Сортировочные сети с особыми свойствами]]&lt;br /&gt;
* [[Сортирующие сети для квадратичных сортировок]]&lt;br /&gt;
* [[Сеть Бетчера]]&lt;br /&gt;
&lt;br /&gt;
== Алгоритмы поиска ==&lt;br /&gt;
* [[Целочисленный двоичный поиск]]&lt;br /&gt;
* [[Вещественный двоичный поиск]]&lt;br /&gt;
* [[Троичный поиск]]&lt;br /&gt;
* [[Поиск с помощью золотого сечения]]&lt;br /&gt;
* [[Интерполяционный поиск]]&lt;br /&gt;
&lt;br /&gt;
== Связь между структурами данных ==&lt;br /&gt;
* [[Связь между структурами данных]]&lt;br /&gt;
&lt;br /&gt;
= Третий семестр =&lt;br /&gt;
&lt;br /&gt;
== Основные определения теории графов ==&lt;br /&gt;
* [[Основные определения теории графов|Основные определения: граф, ребро, вершина, степень, петля, путь, цикл]]&lt;br /&gt;
* [[Лемма о рукопожатиях]]&lt;br /&gt;
* [[Теорема о существовании простого пути в случае существования пути]]&lt;br /&gt;
* [[Теорема о существовании простого цикла в случае существования цикла]]&lt;br /&gt;
* [[Матрица смежности графа]]&lt;br /&gt;
* [[Связь степени матрицы смежности и количества путей]]&lt;br /&gt;
* [[Матрица инцидентности графа]]&lt;br /&gt;
* [[Циклическое пространство графа]]&lt;br /&gt;
* [[Фундаментальные циклы графа]]&lt;br /&gt;
* [[Дерево, эквивалентные определения]]&lt;br /&gt;
* [[Диаметр дерева]]&lt;br /&gt;
* [[Дополнительный, самодополнительный граф]]&lt;br /&gt;
&lt;br /&gt;
== Связность в графах ==&lt;br /&gt;
* [[Отношение связности, компоненты связности]]&lt;br /&gt;
* [[Отношение реберной двусвязности]]&lt;br /&gt;
* [[Отношение вершинной двусвязности]]&lt;br /&gt;
* [[Граф компонент реберной двусвязности]]&lt;br /&gt;
* [[Граф блоков-точек сочленения]]&lt;br /&gt;
* [[Точка сочленения, эквивалентные определения]]&lt;br /&gt;
* [[Мост, эквивалентные определения]]&lt;br /&gt;
* [[k-связность]]&lt;br /&gt;
* [[Теорема Менгера]]&lt;br /&gt;
* [[Теорема Менгера, альтернативное доказательство]]&lt;br /&gt;
* [[Вершинная, реберная связность, связь между ними и минимальной степенью вершины]]&lt;br /&gt;
&lt;br /&gt;
== Остовные деревья ==&lt;br /&gt;
=== Построение остовных деревьев ===&lt;br /&gt;
* [[Остовные деревья: определения, лемма о безопасном ребре]]&lt;br /&gt;
* [[Алгоритм Прима]]&lt;br /&gt;
* [[Алгоритм Краскала]]&lt;br /&gt;
* [[Алгоритм Борувки]]&lt;br /&gt;
* [[Критерий Тарьяна минимальности остовного дерева|Теорема Тарьяна (критерий минимальности остовного дерева)]]&lt;br /&gt;
* [[Алгоритм двух китайцев]]&lt;br /&gt;
&lt;br /&gt;
=== Свойства остовных деревьев ===&lt;br /&gt;
* [[Матрица Кирхгофа]]&lt;br /&gt;
* [[Связь матрицы Кирхгофа и матрицы инцидентности]]&lt;br /&gt;
* [[Подсчет числа остовных деревьев с помощью матрицы Кирхгофа]]&lt;br /&gt;
* [[Количество помеченных деревьев]]&lt;br /&gt;
* [[Коды Прюфера]]&lt;br /&gt;
&lt;br /&gt;
== Обходы графов ==&lt;br /&gt;
=== Эйлеровы графы ===&lt;br /&gt;
* [[Эйлеров цикл, Эйлеров путь, Эйлеровы графы, Эйлеровость орграфов]]&lt;br /&gt;
* [[Покрытие ребер графа путями]]&lt;br /&gt;
* [[Алгоритм построения Эйлерова цикла]]&lt;br /&gt;
* [[Произвольно вычерчиваемые из заданной вершины графы]]&lt;br /&gt;
=== Гамильтоновы графы ===&lt;br /&gt;
* [[Гамильтоновы графы]]&lt;br /&gt;
* [[Теорема Хватала]]&lt;br /&gt;
* [[Теорема Поша]]&lt;br /&gt;
* [[Теорема Дирака]]&lt;br /&gt;
* [[Теорема Оре]]&lt;br /&gt;
* [[Алгоритм нахождения Гамильтонова цикла в условиях теорем Дирака и Оре]]&lt;br /&gt;
* [[Теорема Гринберга]]&lt;br /&gt;
* [[Турниры]]&lt;br /&gt;
* [[Теорема Редеи-Камиона]]&lt;br /&gt;
&lt;br /&gt;
== Укладки графов ==&lt;br /&gt;
* [[Укладка графа на плоскости]]&lt;br /&gt;
* [[Формула Эйлера]]&lt;br /&gt;
* [[Непланарность K5 и K3,3|Непланарность &amp;lt;tex&amp;gt;K_5&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;K_{3,3}&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;
* [[Двудольные графы и раскраска в 2 цвета]]&lt;br /&gt;
* [[Хроматический многочлен]]&lt;br /&gt;
* [[Формула Зыкова]]&lt;br /&gt;
* [[Формула Уитни]]&lt;br /&gt;
* [[Теорема Брукса]]&lt;br /&gt;
* [[Верхние и нижние оценки хроматического числа]]&lt;br /&gt;
* [[Хроматическое число планарного графа]]&lt;br /&gt;
* [[Многочлен Татта]]&lt;br /&gt;
* [[Теория Рамсея]]&lt;br /&gt;
&lt;br /&gt;
== Обход в глубину ==&lt;br /&gt;
* [[Обход в глубину, цвета вершин]]&lt;br /&gt;
* [[Лемма о белых путях]]&lt;br /&gt;
* [[Использование обхода в глубину для проверки связности]]&lt;br /&gt;
* [[Использование обхода в глубину для поиска цикла]]&lt;br /&gt;
* [[Использование обхода в глубину для топологической сортировки]]&lt;br /&gt;
* [[Использование обхода в глубину для поиска компонент сильной связности]]&lt;br /&gt;
* [[Использование обхода в глубину для поиска точек сочленения]]&lt;br /&gt;
* [[Построение компонент вершинной двусвязности]]&lt;br /&gt;
* [[Использование обхода в глубину для поиска мостов]]&lt;br /&gt;
* [[Построение компонент реберной двусвязности]]&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*]]&lt;br /&gt;
* [[Алгоритм Джонсона]]&lt;br /&gt;
* [[Эвристики для поиска кратчайших путей]]&lt;br /&gt;
* [[Алгоритм D*]]&lt;br /&gt;
&lt;br /&gt;
== Задача о паросочетании ==&lt;br /&gt;
* [[Теорема о максимальном паросочетании и дополняющих цепях]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона для поиска максимального паросочетания]]&lt;br /&gt;
* [[Алгоритм Куна для поиска максимального паросочетания]]&lt;br /&gt;
* [[Теорема Холла]]&lt;br /&gt;
* [[Связь максимального паросочетания и минимального вершинного покрытия в двудольных графах]]&lt;br /&gt;
* [[Связь вершинного покрытия и независимого множества]]&lt;br /&gt;
* [[Матрица Татта и связь с размером максимального паросочетания в двудольном графе]]&lt;br /&gt;
* [[Теорема Татта о существовании полного паросочетания]]&lt;br /&gt;
* [[Алгоритм вырезания соцветий|Паросочетания в недвудольных графах. Алгоритм вырезания соцветий]]&lt;br /&gt;
* [[Декомпозиция Эдмондса-Галлаи]]&lt;br /&gt;
* [[Задача об устойчивом паросочетании]]&lt;br /&gt;
&lt;br /&gt;
== Задача о максимальном потоке ==&lt;br /&gt;
* [[Определение сети, потока]]&lt;br /&gt;
* [[Разрез, лемма о потоке через разрез]]&lt;br /&gt;
* [[Дополняющая сеть, дополняющий путь]]&lt;br /&gt;
* [[Лемма о сложении потоков]]&lt;br /&gt;
* [[Теорема Форда-Фалкерсона]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона, реализация с помощью поиска в глубину]]&lt;br /&gt;
* [[Алоритм Эдмондса-Карпа]]&lt;br /&gt;
* [[Алгоритм масштабирования потока]]&lt;br /&gt;
* [[Блокирующий поток]]&lt;br /&gt;
* [[Схема алгоритма Диница]]&lt;br /&gt;
* [[Теоремы Карзанова о числе итераций алгоритма Диница в сети с целочисленными пропускными способностями]]&lt;br /&gt;
* [[Алгоритм поиска блокирующего потока в ациклической сети]]&lt;br /&gt;
* [[Метод проталкивания предпотока]]&lt;br /&gt;
* [[Алгоритм &amp;quot;поднять-в-начало&amp;quot;]]&lt;br /&gt;
* [[Теорема о декомпозиции]]&lt;br /&gt;
* [[Теорема о декомпозиционном барьере]]&lt;br /&gt;
* [[Циркуляция потока]]&lt;br /&gt;
* [[Алгоритм Каргера для нахождения минимального разреза]]&lt;br /&gt;
&lt;br /&gt;
== Задача о потоке минимальной стоимости ==&lt;br /&gt;
* [[Поток минимальной стоимости]]&lt;br /&gt;
* [[Теорема Форда-Фалкерсона о потоке минимальной стоимости]]&lt;br /&gt;
* [[Лемма об эквивалентности свойства потока быть минимальной стоимости и отсутствии отрицательных циклов в остаточной сети]]&lt;br /&gt;
* [[Поиск потока минимальной стоимости методом дополнения вдоль путей минимальной стоимости]]&lt;br /&gt;
* [[Использование потенциалов Джонсона при поиске потока минимальной стоимости]]&lt;br /&gt;
* [[Сведение задачи о назначениях к задаче о потоке минимальной стоимости]]&lt;br /&gt;
* [[Венгерский алгоритм решения задачи о назначениях]]&lt;br /&gt;
&lt;br /&gt;
= Четвертый семестр =&lt;br /&gt;
&lt;br /&gt;
== Основные определения. Простые комбинаторные свойства слов ==&lt;br /&gt;
* [[Основные определения, связанные со строками]]&lt;br /&gt;
* [[Период и бордер, их связь]]&lt;br /&gt;
* [[Слово Фибоначчи]]&lt;br /&gt;
* [[Слово Туэ-Морса]]&lt;br /&gt;
* [[Декомпозиция Линдона]]&lt;br /&gt;
* [[Алгоритм Ландау-Шмидта]]&lt;br /&gt;
* [[Алгоритм Крочемора]]&lt;br /&gt;
&lt;br /&gt;
== [[Поиск подстроки в строке]] ==&lt;br /&gt;
* [[Наивный алгоритм поиска подстроки в строке]]&lt;br /&gt;
* [[Поиск подстроки в строке с использованием хеширования. Алгоритм Рабина-Карпа]]&lt;br /&gt;
* [[Поиск наибольшей общей подстроки двух строк с использованием хеширования]]&lt;br /&gt;
* [[Префикс-функция]]&lt;br /&gt;
* [[Алгоритм Кнута-Морриса-Пратта]]&lt;br /&gt;
* [[Алгоритм Бойера-Мура]]&lt;br /&gt;
* [[Алгоритм Колусси]]&lt;br /&gt;
* [[Z-функция]]&lt;br /&gt;
* [[Автомат для поиска образца в тексте]]&lt;br /&gt;
* [[Бор]]&lt;br /&gt;
* [[Алгоритм Ахо-Корасик]]&lt;br /&gt;
* [[Алгоритм Ландау-Вишкина (k несовпадений)]]&lt;br /&gt;
&lt;br /&gt;
== Суффиксное дерево ==&lt;br /&gt;
* [[Суффиксный бор]]&lt;br /&gt;
* [[Сжатое суффиксное дерево]]&lt;br /&gt;
* [[Алгоритм Укконена]]&lt;br /&gt;
* [[Алгоритм МакКрейта]]&lt;br /&gt;
* [[Алгоритм Фарача]]&lt;br /&gt;
&lt;br /&gt;
== Суффиксный массив ==&lt;br /&gt;
* [[Суффиксный массив]]&lt;br /&gt;
* [[Построение суффиксного массива с помощью стандартных методов сортировки]]&lt;br /&gt;
* [[Алгоритм цифровой сортировки суффиксов циклической строки]]&lt;br /&gt;
* [[Алгоритм Касаи и др.]]&lt;br /&gt;
* [[Алгоритм Карккайнена-Сандерса]]&lt;br /&gt;
* [[Алгоритм поиска подстроки в строке с помощью суффиксного массива]]&lt;br /&gt;
&lt;br /&gt;
== Задача о наименьшем общем предке ==&lt;br /&gt;
* [[Метод двоичного подъема]]&lt;br /&gt;
* [[Сведение задачи LCA к задаче RMQ]]&lt;br /&gt;
* [[Решение RMQ с помощью разреженной таблицы]]&lt;br /&gt;
* [[Алгоритм Фарака-Колтона и Бендера]] (решение +/-1 RMQ с помощью метода четырех русских)&lt;br /&gt;
* [[Алгоритм Шибера-Вишкина]]&lt;br /&gt;
* [[Сведение задачи RMQ к задаче LCA]]&lt;br /&gt;
* [[Алгоритм Тарьяна поиска LCA за O(1) в оффлайн]]&lt;br /&gt;
* [[Link-Cut Tree]]&lt;br /&gt;
&lt;br /&gt;
== Матроиды ==&lt;br /&gt;
=== Основные факты теории матроидов ===&lt;br /&gt;
* [[Определение матроида]]&lt;br /&gt;
* [[Примеры матроидов]]&lt;br /&gt;
* [[Прямая сумма матроидов]]&lt;br /&gt;
* [[Теорема Радо-Эдмондса (жадный алгоритм)]]&lt;br /&gt;
* [[Теорема о базах]]&lt;br /&gt;
* [[Аксиоматизация матроида базами]]&lt;br /&gt;
* [[Теорема о циклах]]&lt;br /&gt;
* [[Аксиоматизация матроида циклами]]&lt;br /&gt;
* [[Ранговая функция, полумодулярность]]&lt;br /&gt;
* [[Двойственный матроид]]&lt;br /&gt;
* [[Оператор замыкания для матроидов]]&lt;br /&gt;
* [[Покрытия, закрытые множества]]&lt;br /&gt;
* [[Матроид Вамоса]]&lt;br /&gt;
=== Пересечение матроидов ===&lt;br /&gt;
* [[Пересечение матроидов, определение, примеры]]&lt;br /&gt;
* [[Лемма о паросочетании в графе замен]]&lt;br /&gt;
* [[Лемма о единственном паросочетании в графе замен]]&lt;br /&gt;
* [[Граф замен для двух матроидов]]&lt;br /&gt;
* [[Лемма о единственном паросочетании в подграфе замен, индуцированном кратчайшим путем]]&lt;br /&gt;
* [[Алгоритм построения базы в пересечении матроидов]]&lt;br /&gt;
* [[Теорема Эдмондса-Лоулера]]&lt;br /&gt;
=== Объединение матроидов ===&lt;br /&gt;
* [[Объединение матроидов, проверка множества на независимость]]&lt;br /&gt;
* [[Объединение матроидов, доказательство того, что объединение является матроидом]]&lt;br /&gt;
* [[Алгоритм построения базы в объединении матроидов]]&lt;br /&gt;
&lt;br /&gt;
== Теория расписаний ==&lt;br /&gt;
* [[Классификация задач]]&lt;br /&gt;
* [[Методы решения задач теории расписаний]]&lt;br /&gt;
* [[Правило Лаулера]]&lt;br /&gt;
* [[Flow shop]]&lt;br /&gt;
* [[P1sumu|&amp;lt;tex&amp;gt;1 \mid \mid \sum U_{i}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[1ripi1sumwc|&amp;lt;tex&amp;gt;1 \mid r_{i}, p_i=1\mid \sum w_{i}C_{i}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[1ridipi1|&amp;lt;tex&amp;gt;1 \mid r_{i}, d_{i}, p_{i} = 1 \mid -&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[1outtreesumwc | &amp;lt;tex&amp;gt;1 \mid outtree \mid \sum w_i C_i&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[1pi1sumwu|&amp;lt;tex&amp;gt;1 \mid p_{i} = 1 \mid \sum w_{i}U_{i}&amp;lt;/tex&amp;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;
* [[1precripi1Lmax|&amp;lt;tex&amp;gt;1 \mid prec; r_i; p_i = 1 \mid L_{max}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[P2precpi1Lmax|&amp;lt;tex&amp;gt;P2 \mid prec, p_i = 1 \mid L_{\max}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[PpmtnriLmax|&amp;lt;tex&amp;gt;P \mid pmtn, r_i \mid L_{max}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[QpmtnCmax|&amp;lt;tex&amp;gt;Q \mid pmtn \mid C_{max}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[QpmtnriLmax|&amp;lt;tex&amp;gt;Q \mid pmtn, r_{i} \mid L_{max}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[QSumCi|&amp;lt;tex&amp;gt;Q\mid\mid\sum{C_i}&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;
* [[F2Cmax|&amp;lt;tex&amp;gt;F2 \mid \mid C_{max}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[Fpij1sumwu|&amp;lt;tex&amp;gt;F \mid p_{ij} = 1 \mid \sum w_i U_i&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;
* [[Opi1sumu|&amp;lt;tex&amp;gt;O \mid p_{ij} = 1 \mid \sum U_i&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[J2ni2Cmax|&amp;lt;tex&amp;gt;J2 \mid n_{i} \le 2 \mid C_{max}&amp;lt;/tex&amp;gt;]]&lt;br /&gt;
* [[J2pij1Lmax| &amp;lt;tex&amp;gt;J2\mid p_{ij} = 1\mid L_{max}&amp;lt;/tex&amp;gt;]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=42865</id>
		<title>Остовные деревья: определения, лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D1%82%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F:_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%BB%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=42865"/>
				<updated>2014-12-25T18:53:35Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: переименовал Лемма о безопасном ребре в Остовные деревья: определения, лемма о безопасном ребре: Так правильнее =)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальным остовным деревом''' (англ. '''Minimum spanning tree''') графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; называется его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|400px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \le w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ.&lt;br /&gt;
==Cм. также==&lt;br /&gt;
*[[Алгоритм Прима]]&lt;br /&gt;
*[[Алгоритм Краскала]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9B%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=42866</id>
		<title>Лемма о безопасном ребре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9B%D0%B5%D0%BC%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B1%D1%80%D0%B5&amp;diff=42866"/>
				<updated>2014-12-25T18:53:35Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: переименовал Лемма о безопасном ребре в Остовные деревья: определения, лемма о безопасном ребре: Так правильнее =)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Остовные деревья: определения, лемма о безопасном ребре]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42864</id>
		<title>Участник:Savelin</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42864"/>
				<updated>2014-12-25T18:49:43Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Лемма о безопасном ребре */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево'''  графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''minimum spanning tree'') {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''cut'') называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|300px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ.&lt;br /&gt;
&lt;br /&gt;
==Cм. также==&lt;br /&gt;
*[[Алгоритм Прима]]&lt;br /&gt;
*[[Алгоритм Краскала]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42863</id>
		<title>Участник:Savelin</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42863"/>
				<updated>2014-12-25T18:46:55Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Лемма о безопасном ребре */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево'''  графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''minimum spanning tree'') {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''cut'') называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|400px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \leqslant w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ.&lt;br /&gt;
&lt;br /&gt;
==Cм. также==&lt;br /&gt;
*[[Алгоритм Прима]]&lt;br /&gt;
*[[Алгоритм Краскала]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42862</id>
		<title>Участник:Savelin</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42862"/>
				<updated>2014-12-25T18:43:36Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Необходимые определения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево'''  графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''minimum spanning tree'') {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''cut'') называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|400px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \le w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ.&lt;br /&gt;
&lt;br /&gt;
==Cм. также==&lt;br /&gt;
*[[Алгоритм Прима]]&lt;br /&gt;
*[[Алгоритм Краскала]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42861</id>
		<title>Участник:Savelin</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42861"/>
				<updated>2014-12-25T18:41:24Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Литература */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево'''  графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''minimum spanning tree'') {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''cut'') называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|400px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \le w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ.&lt;br /&gt;
&lt;br /&gt;
==Cм. также==&lt;br /&gt;
*[[Алгоритм Прима]]&lt;br /&gt;
*[[Алгоритм Краскала]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42860</id>
		<title>Участник:Savelin</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42860"/>
				<updated>2014-12-25T18:39:58Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Необходимые определения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево'''  графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''minimum spanning tree'') {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; (англ. ''cut'') называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|400px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \le w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ.&lt;br /&gt;
==Cм. также==&lt;br /&gt;
*[[Алгоритм Прима]]&lt;br /&gt;
*[[Алгоритм Краскала]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42859</id>
		<title>Участник:Savelin</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42859"/>
				<updated>2014-12-25T18:39:03Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Необходимые определения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&amp;lt;/tex&amp;gt; также является подграфом некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Разрезом''' (англ. ''cut'') неориентированного графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|400px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \le w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ.&lt;br /&gt;
==Cм. также==&lt;br /&gt;
*[[Алгоритм Прима]]&lt;br /&gt;
*[[Алгоритм Краскала]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42858</id>
		<title>Участник:Savelin</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42858"/>
				<updated>2014-12-25T18:37:23Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Необходимые определения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; {{---}} это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|400px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \le w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ.&lt;br /&gt;
==Cм. также==&lt;br /&gt;
*[[Алгоритм Прима]]&lt;br /&gt;
*[[Алгоритм Краскала]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42857</id>
		<title>Участник:Savelin</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42857"/>
				<updated>2014-12-25T18:37:00Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Необходимые определения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальное остовное дерево''' (англ. ''minimum spanning tree'') графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; - это его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|400px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \le w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ.&lt;br /&gt;
==Cм. также==&lt;br /&gt;
*[[Алгоритм Прима]]&lt;br /&gt;
*[[Алгоритм Краскала]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42799</id>
		<title>Участник:Savelin</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Savelin&amp;diff=42799"/>
				<updated>2014-12-24T15:27:45Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: Initial Commit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Необходимые определения==&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный [[Основные определения теории графов|граф]] &amp;lt;tex&amp;gt; G =\langle V, E \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;V &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов| вершин]], &amp;lt;tex&amp;gt;E &amp;lt;/tex&amp;gt; {{---}} множество [[Основные определения теории графов|ребер]]. Вес ребра определяется, как функция &amp;lt;tex&amp;gt; w : E \to \mathbb{R} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Минимальным остовным деревом''' (англ. '''Minimum spanning tree''') графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; называется его ациклический связный подграф, в который входят все его вершины, обладающий минимальным суммарным весом ребер.&lt;br /&gt;
}}&lt;br /&gt;
Заметим, что граф может содержать несколько минимальных остовных деревьев. &lt;br /&gt;
Для формулировки и доказательства леммы о безопасном ребре рассмотрим следующие определения.&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева графа &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \notin G' &amp;lt;/tex&amp;gt; называется '''безопасным''', если при добавлении его в &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' \cup \{ \langle u, v \rangle \}&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; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; называется разбиение &amp;lt;tex&amp;gt; V &amp;lt;/tex&amp;gt; на два непересекающихся подмножества: &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; T = V \setminus S &amp;lt;/tex&amp;gt;.  Обозначается как &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ребро &amp;lt;tex&amp;gt; \langle u, v \rangle \in E &amp;lt;/tex&amp;gt; '''пересекает разрез''' &amp;lt;tex&amp;gt; \langle S, T \rangle &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;
&lt;br /&gt;
==Лемма о безопасном ребре==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Рассмотрим связный неориентированный взвешенный граф &amp;lt;tex&amp;gt; G = \langle V, E \rangle &amp;lt;/tex&amp;gt; с весовой функцией &amp;lt;tex&amp;gt;w : E \to \mathbb{R}&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt; G' = \langle V, E' \rangle &amp;lt;/tex&amp;gt; {{---}} подграф некоторого минимального остовного дерева &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt; {{---}} разрез &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, такой, что ни одно ребро из &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; не пересекает разрез, а &amp;lt;tex&amp;gt; \langle u, v \rangle &amp;lt;/tex&amp;gt; {{---}} ребро минимального веса среди всех ребер, пересекающих разрез &amp;lt;tex&amp;gt; \langle S, T \rangle &amp;lt;/tex&amp;gt;. Тогда ребро &amp;lt;tex&amp;gt; e = \langle u, v \rangle &amp;lt;/tex&amp;gt; является безопасным для &amp;lt;tex&amp;gt; G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
[[Файл:Лемма_о_безопасном_ребре.png‎|right|thumb|400px]]&lt;br /&gt;
Достроим &amp;lt;tex&amp;gt; E' &amp;lt;/tex&amp;gt; до некоторого минимального остовного дерева, обозначим его &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt;. Если ребро &amp;lt;tex&amp;gt;e \in T_{min}&amp;lt;/tex&amp;gt;, то лемма доказана, поэтому рассмотрим случай, когда ребро &amp;lt;tex&amp;gt;e \notin T_{min}&amp;lt;/tex&amp;gt;. Рассмотрим путь в &amp;lt;tex&amp;gt;T_{min}&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;e'&amp;lt;/tex&amp;gt;. По условию леммы &amp;lt;tex&amp;gt;w(e) \le w(e')&amp;lt;/tex&amp;gt;. Заменим ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T_{min}&amp;lt;/tex&amp;gt; на ребро &amp;lt;tex&amp;gt;e'&amp;lt;/tex&amp;gt;. Полученное дерево также является минимальным остовным деревом графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, поскольку все вершины &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; по-прежнему связаны и вес дерева не увеличился. Следовательно &amp;lt;tex&amp;gt;E' \cup \{e\} &amp;lt;/tex&amp;gt; можно дополнить до минимального остовного дерева в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то есть ребро &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; {{---}} безопасное.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. {{---}} Алгоритмы. Построение и анализ.&lt;br /&gt;
==Cм. также==&lt;br /&gt;
*[[Алгоритм Прима]]&lt;br /&gt;
*[[Алгоритм Краскала]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Остовные деревья ]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=39230</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=39230"/>
				<updated>2014-06-14T20:14:53Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Алгоритм */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке, которая либо сначала строго возрастает, затем строго убывает, либо наоборот.&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Из рассуждений и рисунка может возникнуть идея взять, например, отрезок &amp;lt;tex&amp;gt;[l, a]&amp;lt;/tex&amp;gt; вместо отрезка &amp;lt;tex&amp;gt;[l, b]&amp;lt;/tex&amp;gt;. Но этого делать нельзя, потому что мы не умеем различать случаи, когда &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; слева или справа от минимума. &lt;br /&gt;
&lt;br /&gt;
Можно заметить, что если мы всегда будем брать отрезок &amp;lt;tex&amp;gt;[l, b]&amp;lt;/tex&amp;gt; при &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;[a, r]&amp;lt;/tex&amp;gt; при &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; , то минимум функции всегда будет в нашем отрезке. Если &amp;lt;tex&amp;gt;f(a) = f(b)&amp;lt;/tex&amp;gt;, то можно взять любой отрезок.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''double''' ternarySearchMin('''double''' f(), '''double''' left, '''double''' right, '''double''' eps):&lt;br /&gt;
     '''if''' right - left &amp;lt; eps&lt;br /&gt;
         '''return''' (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
         '''return''' ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''double''' ternarySearchMin('''double''' f(), '''double''' left, '''double''' right, '''double''' eps): &lt;br /&gt;
     '''while''' right - left &amp;gt; eps &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
* [[wikipedia:ru:Троичный поиск|Троичный поиск — Википедия]]&lt;br /&gt;
* [[wikipedia:Ternary search|Ternary search {{---}} Wikipedia]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=39228</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=39228"/>
				<updated>2014-06-14T19:50:13Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Псевдокод */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке, которая либо сначала строго возрастает, затем строго убывает, либо наоборот.&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отрезок &amp;lt;tex&amp;gt;[l, a]&amp;lt;/tex&amp;gt; брать нельзя, потому что мы не умеем различать случаи, когда &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; слева или справа от минимума. &lt;br /&gt;
&lt;br /&gt;
Можно заметить, что если мы всегда будем брать отрезок &amp;lt;tex&amp;gt;[l, b]&amp;lt;/tex&amp;gt; при &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;[a, r]&amp;lt;/tex&amp;gt; при &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; , то минимум функции всегда будет в нашем отрезке. Если &amp;lt;tex&amp;gt;f(a) == f(b)&amp;lt;/tex&amp;gt;, то можно взять любой отрезок.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''double''' ternarySearchMin('''double''' f(), '''double''' left, '''double''' right, '''double''' eps):&lt;br /&gt;
     '''if''' right - left &amp;lt; eps&lt;br /&gt;
         '''return''' (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
         '''return''' ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''double''' ternarySearchMin('''double''' f(), '''double''' left, '''double''' right, '''double''' eps): &lt;br /&gt;
     '''while''' right - left &amp;gt; eps &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
* [[wikipedia:ru:Троичный поиск|Троичный поиск — Википедия]]&lt;br /&gt;
* [[wikipedia:Ternary search|Ternary search {{---}} Wikipedia]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=39227</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=39227"/>
				<updated>2014-06-14T19:38:30Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Алгоритм */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке, которая либо сначала строго возрастает, затем строго убывает, либо наоборот.&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отрезок &amp;lt;tex&amp;gt;[l, a]&amp;lt;/tex&amp;gt; брать нельзя, потому что мы не умеем различать случаи, когда &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; слева или справа от минимума. &lt;br /&gt;
&lt;br /&gt;
Можно заметить, что если мы всегда будем брать отрезок &amp;lt;tex&amp;gt;[l, b]&amp;lt;/tex&amp;gt; при &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;[a, r]&amp;lt;/tex&amp;gt; при &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; , то минимум функции всегда будет в нашем отрезке. Если &amp;lt;tex&amp;gt;f(a) == f(b)&amp;lt;/tex&amp;gt;, то можно взять любой отрезок.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f(), '''double''' left, '''double''' right, '''double''' eps):&lt;br /&gt;
     '''if''' right - left &amp;lt; eps&lt;br /&gt;
         '''return''' (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
         '''return''' ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f(), '''double''' left, '''double''' right, '''double''' eps): &lt;br /&gt;
     '''while''' right - left &amp;gt; eps &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
* [[wikipedia:ru:Троичный поиск|Троичный поиск — Википедия]]&lt;br /&gt;
* [[wikipedia:Ternary search|Ternary search {{---}} Wikipedia]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=39224</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=39224"/>
				<updated>2014-06-14T19:04:11Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Псевдокод */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке, которая либо сначала строго возрастает, затем строго убывает, либо наоборот.&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f(), '''double''' left, '''double''' right, '''double''' eps):&lt;br /&gt;
     '''if''' right - left &amp;lt; eps&lt;br /&gt;
         '''return''' (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
         '''return''' ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f(), '''double''' left, '''double''' right, '''double''' eps): &lt;br /&gt;
     '''while''' right - left &amp;gt; eps &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
* [[wikipedia:ru:Троичный поиск|Троичный поиск — Википедия]]&lt;br /&gt;
* [[wikipedia:Ternary search|Ternary search {{---}} Wikipedia]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37282</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37282"/>
				<updated>2014-05-23T09:08:18Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке, которая либо сначала строго возрастает, затем строго убывает, либо наоборот.&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f, '''double''' left, '''double''' right, '''double''' eps) &lt;br /&gt;
     '''if''' right - left &amp;lt; eps&lt;br /&gt;
         '''return''' (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
         '''return''' ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f, '''double''' left, '''double''' right, '''double''' eps) &lt;br /&gt;
     '''while''' right - left &amp;gt; eps &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
* [[wikipedia:ru:Троичный поиск|Троичный поиск — Википедия]]&lt;br /&gt;
* [[wikipedia:Ternary search|Ternary search {{---}} Wikipedia]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37276</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37276"/>
				<updated>2014-05-22T16:53:24Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* См. также */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f, '''double''' left, '''double''' right, '''double''' eps) &lt;br /&gt;
     '''if''' right - left &amp;lt; eps&lt;br /&gt;
         '''return''' (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
         '''return''' ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f, '''double''' left, '''double''' right, '''double''' eps) &lt;br /&gt;
     '''while''' right - left &amp;gt; eps &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
* [[wikipedia:ru:Троичный поиск|Троичный поиск — Википедия]]&lt;br /&gt;
* [[wikipedia:Ternary search|Ternary search {{---}} Wikipedia]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37274</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37274"/>
				<updated>2014-05-22T16:52:21Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Источники информации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f, '''double''' left, '''double''' right, '''double''' eps) &lt;br /&gt;
     '''if''' right - left &amp;lt; eps&lt;br /&gt;
         '''return''' (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
         '''return''' ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f, '''double''' left, '''double''' right, '''double''' eps) &lt;br /&gt;
     '''while''' right - left &amp;gt; eps &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]] {{---}} оптимизация троичного поиска.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
* [[wikipedia:ru:Троичный поиск|Троичный поиск — Википедия]]&lt;br /&gt;
* [[wikipedia:Ternary search|Ternary search {{---}} Wikipedia]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37273</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37273"/>
				<updated>2014-05-22T16:52:04Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* См. также */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f, '''double''' left, '''double''' right, '''double''' eps) &lt;br /&gt;
     '''if''' right - left &amp;lt; eps&lt;br /&gt;
         '''return''' (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
         '''return''' ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f, '''double''' left, '''double''' right, '''double''' eps) &lt;br /&gt;
     '''while''' right - left &amp;gt; eps &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]] {{---}} оптимизация троичного поиска.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37271</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37271"/>
				<updated>2014-05-22T16:48:52Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* См. также */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f, '''double''' left, '''double''' right, '''double''' eps) &lt;br /&gt;
     '''if''' right - left &amp;lt; eps&lt;br /&gt;
         '''return''' (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
         '''return''' ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f, '''double''' left, '''double''' right, '''double''' eps) &lt;br /&gt;
     '''while''' right - left &amp;gt; eps &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]] {{---}} оптимизация троичного поиска.&lt;br /&gt;
* [[wikipedia:ru:Троичный поиск|Троичный поиск — Википедия]]&lt;br /&gt;
* [[wikipedia:Ternary search|Ternary search {{---}} Wikipedia]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37269</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37269"/>
				<updated>2014-05-22T16:43:17Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Источники информации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f, '''double''' left, '''double''' right, '''double''' eps) &lt;br /&gt;
     '''if''' right - left &amp;lt; eps&lt;br /&gt;
         '''return''' (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
         '''return''' ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f, '''double''' left, '''double''' right, '''double''' eps) &lt;br /&gt;
     '''while''' right - left &amp;gt; eps &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]] {{---}} оптимизация троичного поиска.&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA Троичный поиск {{---}} Википедия]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ternary_search Ternary search {{---}} Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37267</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37267"/>
				<updated>2014-05-22T16:40:11Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Псевдокод */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f, '''double''' left, '''double''' right, '''double''' eps) &lt;br /&gt;
     '''if''' right - left &amp;lt; eps&lt;br /&gt;
         '''return''' (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
         '''return''' ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin('''double''' f, '''double''' left, '''double''' right, '''double''' eps) &lt;br /&gt;
     '''while''' right - left &amp;gt; eps &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]] {{---}} оптимизация троичного поиска.&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA Троичный поиск {{---}} Википедия]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ternary_search Ternary search {{---}} Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37264</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37264"/>
				<updated>2014-05-22T16:32:58Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Псевдокод */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin(f, left, right, eps) &lt;br /&gt;
     '''if''' right - left &amp;lt; eps&lt;br /&gt;
         return (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
         '''return''' ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''function''' ternarySearchMin(f, left, right, eps) &lt;br /&gt;
     '''while''' right - left &amp;gt; eps &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' f(a) &amp;lt; f(b)&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]] {{---}} оптимизация троичного поиска.&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA Троичный поиск {{---}} Википедия]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ternary_search Ternary search {{---}} Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37262</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37262"/>
				<updated>2014-05-22T16:24:41Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Псевдокод */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''ternarySearchMin'''(f, left, right, eps) &lt;br /&gt;
     '''if''' (right - left &amp;lt; eps)&lt;br /&gt;
         return (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' (f(a) &amp;lt; f(b))&lt;br /&gt;
         '''return''' '''ternarySearchMin'''(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' '''ternarySearchMin'''(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''ternarySearchMin'''(f, left, right, eps) &lt;br /&gt;
     '''while''' (right - left &amp;gt; eps) &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' (f(a) &amp;lt; f(b))&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]] {{---}} оптимизация троичного поиска.&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA Троичный поиск {{---}} Википедия]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ternary_search Ternary search {{---}} Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37261</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37261"/>
				<updated>2014-05-22T16:24:10Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Псевдокод */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''ternarySearchMin'''(f, left, right, eps) &lt;br /&gt;
     '''if''' (right - left &amp;lt; eps)&lt;br /&gt;
         return (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' (f(a) &amp;lt; f(b))&lt;br /&gt;
         '''return''' ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 '''ternarySearchMin'''(f, left, right, eps) &lt;br /&gt;
     '''while''' (right - left &amp;gt; eps) &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' (f(a) &amp;lt; f(b))&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]] {{---}} оптимизация троичного поиска.&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA Троичный поиск {{---}} Википедия]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ternary_search Ternary search {{---}} Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37260</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37260"/>
				<updated>2014-05-22T16:20:42Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Псевдокод */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 ternarySearchMin(f, left, right, eps) &lt;br /&gt;
     '''if''' (right - left &amp;lt; eps)&lt;br /&gt;
         return (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     '''if''' (f(a) &amp;lt; f(b))&lt;br /&gt;
         '''return''' ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     '''else'''&lt;br /&gt;
         '''return''' ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 ternarySearchMin(f, left, right, eps) &lt;br /&gt;
     '''while''' (right - left &amp;gt; eps) &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         '''if''' (f(a) &amp;lt; f(b))&lt;br /&gt;
             right = b&lt;br /&gt;
         '''else'''&lt;br /&gt;
             left = a&lt;br /&gt;
     '''return''' (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]] {{---}} оптимизация троичного поиска.&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA Троичный поиск {{---}} Википедия]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ternary_search Ternary search {{---}} Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37247</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37247"/>
				<updated>2014-05-22T09:25:31Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Алгоритм */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + \dfrac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + \dfrac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 ternarySearchMin(f, left, right, eps) &lt;br /&gt;
     if (right - left &amp;lt; eps)&lt;br /&gt;
         return (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     if (f(a) &amp;lt; f(b))&lt;br /&gt;
         return ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     else&lt;br /&gt;
         return ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 ternarySearchMin(f, left, right, eps) &lt;br /&gt;
     while (right - left &amp;gt; eps) &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         if (f(a) &amp;lt; f(b))&lt;br /&gt;
             right = b&lt;br /&gt;
         else&lt;br /&gt;
             left = a&lt;br /&gt;
     return (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]] {{---}} оптимизация троичного поиска.&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA Троичный поиск {{---}} Википедия]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ternary_search Ternary search {{---}} Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37246</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37246"/>
				<updated>2014-05-22T09:24:44Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Время работы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + &amp;lt;/tex&amp;gt;  &amp;lt;tex dpi = &amp;quot;150&amp;quot;&amp;gt; \frac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + &amp;lt;/tex&amp;gt;  &amp;lt;tex dpi = &amp;quot;150&amp;quot;&amp;gt; \frac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 ternarySearchMin(f, left, right, eps) &lt;br /&gt;
     if (right - left &amp;lt; eps)&lt;br /&gt;
         return (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     if (f(a) &amp;lt; f(b))&lt;br /&gt;
         return ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     else&lt;br /&gt;
         return ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 ternarySearchMin(f, left, right, eps) &lt;br /&gt;
     while (right - left &amp;gt; eps) &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         if (f(a) &amp;lt; f(b))&lt;br /&gt;
             right = b&lt;br /&gt;
         else&lt;br /&gt;
             left = a&lt;br /&gt;
     return (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;135&amp;quot;&amp;gt;2 \log_{\frac32} \left(\dfrac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]] {{---}} оптимизация троичного поиска.&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA Троичный поиск {{---}} Википедия]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ternary_search Ternary search {{---}} Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37245</id>
		<title>Троичный поиск</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&amp;diff=37245"/>
				<updated>2014-05-22T09:23:09Z</updated>
		
		<summary type="html">&lt;p&gt;Savelin: /* Алгоритм */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Троичный поиск''' (''ternary search, тернарный поиск'') {{---}} метод поиска минимума или максимума функции на отрезке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ternar2.png|thumb|280px|Пример. &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b) \Rightarrow x_{min} \in [l, b]&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;[l, r]&amp;lt;/tex&amp;gt; имеет минимум, и мы хотим найти точку &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt;, в которой он достигается.&lt;br /&gt;
&lt;br /&gt;
Посчитаем значения функции в точках &amp;lt;tex&amp;gt; a = l + &amp;lt;/tex&amp;gt;  &amp;lt;tex dpi = &amp;quot;150&amp;quot;&amp;gt; \frac{(r-l)}{3} &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b = l + &amp;lt;/tex&amp;gt;  &amp;lt;tex dpi = &amp;quot;150&amp;quot;&amp;gt; \frac{2(r-l)}{3} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как в точке &amp;lt;tex&amp;gt;x_{min}&amp;lt;/tex&amp;gt; минимум, то на отрезке &amp;lt;tex&amp;gt;[l, x_{min}]&amp;lt;/tex&amp;gt; функция убывает, а на &amp;lt;tex&amp;gt;[x_{min}, r]&amp;lt;/tex&amp;gt; {{---}} возрастает, то есть&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \forall x', x'' \in [l, r]: \\&lt;br /&gt;
l       &amp;lt; x' &amp;lt; x'' &amp;lt; x_{min} \Rightarrow f(l)       &amp;gt; f(x') &amp;gt; f(x'') &amp;gt; f(x_{min}) \\&lt;br /&gt;
x_{min} &amp;lt; x' &amp;lt; x'' &amp;lt; r       \Rightarrow f(x_{min}) &amp;lt; f(x') &amp;lt; f(x'') &amp;lt; f(r)       &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит если &amp;lt;tex&amp;gt;f(a) &amp;lt; f(b)&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;x_{min} \in [l, b]&amp;lt;/tex&amp;gt;,&lt;br /&gt;
аналогично из &amp;lt;tex&amp;gt;f(a) &amp;gt; f(b)&amp;lt;/tex&amp;gt; следует &amp;lt;tex&amp;gt; x_{min} \in [a, r]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда нам нужно изменить границы поиска и искать дальше,&lt;br /&gt;
пока не будет достигнута необходимая точность, то есть &amp;lt;tex&amp;gt; r-l &amp;lt; \varepsilon &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Псевдокод ===&lt;br /&gt;
&lt;br /&gt;
Рекурсивный вариант:&lt;br /&gt;
&lt;br /&gt;
 ternarySearchMin(f, left, right, eps) &lt;br /&gt;
     if (right - left &amp;lt; eps)&lt;br /&gt;
         return (left + right) / 2&lt;br /&gt;
     a = (left * 2 + right) / 3&lt;br /&gt;
     b = (left + right * 2) / 3&lt;br /&gt;
     if (f(a) &amp;lt; f(b))&lt;br /&gt;
         return ternarySearchMin(f, left, b, eps)&lt;br /&gt;
     else&lt;br /&gt;
         return ternarySearchMin(f, a, right, eps)&lt;br /&gt;
&lt;br /&gt;
Итеративный вариант:&lt;br /&gt;
&lt;br /&gt;
 ternarySearchMin(f, left, right, eps) &lt;br /&gt;
     while (right - left &amp;gt; eps) &lt;br /&gt;
         a = (left * 2 + right) / 3&lt;br /&gt;
         b = (left + right * 2) / 3&lt;br /&gt;
         if (f(a) &amp;lt; f(b))&lt;br /&gt;
             right = b&lt;br /&gt;
         else&lt;br /&gt;
             left = a&lt;br /&gt;
     return (left + right) / 2&lt;br /&gt;
&lt;br /&gt;
=== Время работы ===&lt;br /&gt;
&lt;br /&gt;
Так как на каждой итерации мы считаем два значения функции и уменьшаем область поиска в полтора раза, пока &amp;lt;tex&amp;gt; r - l &amp;gt; \varepsilon&amp;lt;/tex&amp;gt;,&lt;br /&gt;
то время работы алгоритма составит &lt;br /&gt;
&amp;lt;tex dpi = &amp;quot;150&amp;quot;&amp;gt;2 \log_{\frac32} \left(\frac{r - l}{\varepsilon}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Поиск с помощью золотого сечения]] {{---}} оптимизация троичного поиска.&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA Троичный поиск {{---}} Википедия]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Ternary_search Ternary search {{---}} Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
* Дональд Кнут {{---}} Искусство программирования. Том 3. Сортировка и поиск. / Knuth D.E. {{---}} The Art of Computer Programming. Vol. 3. Sorting and Searching.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Алгоритмы поиска]]&lt;/div&gt;</summary>
		<author><name>Savelin</name></author>	</entry>

	</feed>