<?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=Vladimir.nesmelov&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vladimir.nesmelov&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Vladimir.nesmelov"/>
		<updated>2026-06-11T19:29:21Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=8119</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=8119"/>
				<updated>2011-04-08T22:49:30Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Обновление тем до состояния на 08.04.2011&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;
&lt;br /&gt;
== Остовные деревья ==&lt;br /&gt;
* [[Лемма о безопасном ребре]]&lt;br /&gt;
* [[Алгоритм Прима]]&lt;br /&gt;
* [[Алгоритм Краскала]]&lt;br /&gt;
* [[Теорема Тарьяна|Теорема Тарьяна (критерий минимальности остовного дерева)]]&lt;br /&gt;
* [[Алгоритм двух китайцев]]&lt;br /&gt;
&lt;br /&gt;
== Задача о паросочетании ==&lt;br /&gt;
* [[Теорема о максимальном паросочетании и дополняющих цепях]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона для поиска максимального паросочетания]]&lt;br /&gt;
* [[Алгоритм Куна для поиска максимального паросочетания]]&lt;br /&gt;
* [[Связь максимального паросочетания и минимального вершинного покрытия в двудольных графах]]&lt;br /&gt;
* [[Связь вершинного покрытия и независимого множества]]&lt;br /&gt;
* [[Матрица Татта и связь с размером максимального паросочетания в двудольном графе]]&lt;br /&gt;
* [[Алгоритм вырезания соцветий|Паросочетания в недвудольных графах. Алгоритм вырезания соцветий]]&lt;br /&gt;
&lt;br /&gt;
== Задача о максимальном потоке ==&lt;br /&gt;
* [[Определение сети, потока]]&lt;br /&gt;
* [[Разрез, лемма о потоке через разрез]]&lt;br /&gt;
* [[Дополняющая сеть, дополняющий путь]]&lt;br /&gt;
* [[Лемма о сложении потоков]]&lt;br /&gt;
* [[Теорема Форда-Фалкерсона]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона, реализация с помощью поиска в глубину]]&lt;br /&gt;
* [[Алоритм Эдмондса-Карпа]]&lt;br /&gt;
* [[Теорема о декомпозиции]]&lt;br /&gt;
* [[Теорема о декомпозиционном барьере]]&lt;br /&gt;
* [[Блокирующий поток]]&lt;br /&gt;
* [[Схема алгоритма Диница]]&lt;br /&gt;
* [[Алгоритм поиска блокирующего потока в ациклической сети]]&lt;br /&gt;
* [[Алгоритм масштабирования потока]]&lt;br /&gt;
* [[Теоремы Карзанова о числе итераций алгоритма Диница в сети с целочисленными пропускными способностями]]&lt;br /&gt;
&lt;br /&gt;
== Задача о потоке минимальной стоимости ==&lt;br /&gt;
* [[Поток минимальной стоимости]]&lt;br /&gt;
* [[Теорема Форда-Фалкерсона о потоке минимальной стоимости]]&lt;br /&gt;
* [[Лемма об эквивалентности свойства потока быть минимальной стоимости и отсутствии отрицательных циклов в остаточной сети]]&lt;br /&gt;
* [[Поиск потока минимальной стоимости методом дополнения вдоль путей минимальной стоимости]]&lt;br /&gt;
* [[Использование потенциалов Джонсона при поиске потока минимальной стоимости]]&lt;br /&gt;
* [[Сведение задачи о назначениях к задаче о потоке минимальной стоимости]]&lt;br /&gt;
* [[Венгерский алгоритм решения задачи о назначениях]]&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;
&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;
* [[Сведение задачи RMQ к задаче LCA]]&lt;br /&gt;
&lt;br /&gt;
== Суффиксный массив ==&lt;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>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=7730</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=7730"/>
				<updated>2011-03-04T22:13:04Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Обновление тем до состояния на 04.03.2011&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;
&lt;br /&gt;
== Остовные деревья ==&lt;br /&gt;
* [[Лемма о безопасном ребре]]&lt;br /&gt;
* [[Алгоритм Прима]]&lt;br /&gt;
* [[Алгоритм Краскала]]&lt;br /&gt;
* [[Теорема Тарьяна|Теорема Тарьяна (критерий минимальности остовного дерева)]]&lt;br /&gt;
* [[Алгоритм двух китайцев]]&lt;br /&gt;
&lt;br /&gt;
== Задача о паросочетании ==&lt;br /&gt;
* [[Теорема о максимальном паросочетании и дополняющих цепях]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона для поиска максимального паросочетания]]&lt;br /&gt;
* [[Алгоритм Куна для поиска максимального паросочетания]]&lt;br /&gt;
* [[Связь максимального паросочетания и минимального вершинного покрытия в двудольных графах]]&lt;br /&gt;
* [[Связь вершинного покрытия и независимого множества]]&lt;br /&gt;
* [[Матрица Татта и связь с размером максимального паросочетания в двудольном графе]]&lt;br /&gt;
* [[Алгоритм вырезания соцветий|Паросочетания в недвудольных графах. Алгоритм вырезания соцветий]]&lt;br /&gt;
&lt;br /&gt;
== Задача о максимальном потоке ==&lt;br /&gt;
* [[Определение сети, потока]]&lt;br /&gt;
* [[Разрез, лемма о потоке через разрез]]&lt;br /&gt;
* [[Дополняющая сеть, дополняющий путь]]&lt;br /&gt;
* [[Лемма о сложении потоков]]&lt;br /&gt;
* [[Теорема Форда-Фалкерсона]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона, реализация с помощью поиска в глубину]]&lt;br /&gt;
* [[Алоритм Эдмондса-Карпа]]&lt;br /&gt;
* [[Теорема о декомпозиции]]&lt;br /&gt;
* [[Теорема о декомпозиционном барьере]]&lt;br /&gt;
* [[Блокирующий поток]]&lt;br /&gt;
* [[Схема алгоритма Диница]]&lt;br /&gt;
* [[Алгоритм поиска блокирующего потока в ациклической сети]]&lt;br /&gt;
* [[Алгоритм масштабирования потока]]&lt;br /&gt;
* [[Теоремы Карзанова о числе итераций алгоритма Диница в сети с целочисленными пропускными способностями]]&lt;br /&gt;
&lt;br /&gt;
== Задача о потоке минимальной стоимости ==&lt;br /&gt;
* [[Поток минимальной стоимости]]&lt;br /&gt;
* [[Теорема Форда-Фалкерсона о потоке минимальной стоимости]]&lt;br /&gt;
* [[Лемма об эквивалентности свойства потока быть минимальной стоимости и отсутствии отрицательных циклов в остаточной сети]]&lt;br /&gt;
* [[Поиск потока минимальной стоимости методом дополнения вдоль путей минимальной стоимости]]&lt;br /&gt;
* [[Использование потенциалов Джонсона при поиске потока минимальной стоимости]]&lt;br /&gt;
* [[Сведение задачи о назначениях к задаче о потоке минимальной стоимости]]&lt;br /&gt;
* [[Венгерский алгоритм решения задачи о назначениях]]&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;
&lt;br /&gt;
== Словарные структуры данных ==&lt;br /&gt;
* [[Суффиксный бор]]&lt;br /&gt;
* [[Сжатое суффиксное дерево]]&lt;br /&gt;
* [[Алгоритм Укконена]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=7696</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=7696"/>
				<updated>2011-02-17T01:37:07Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Обновление тем до состояния на 16.02.2011&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;
&lt;br /&gt;
== Остовные деревья ==&lt;br /&gt;
* [[Лемма о безопасном ребре]]&lt;br /&gt;
* [[Алгоритм Прима]]&lt;br /&gt;
* [[Алгоритм Краскала]]&lt;br /&gt;
* [[Теорема Тарьяна|Теорема Тарьяна (критерий минимальности остовного дерева)]]&lt;br /&gt;
* [[Алгоритм двух китайцев]]&lt;br /&gt;
&lt;br /&gt;
== Задача о паросочетании ==&lt;br /&gt;
* [[Теорема о максимальном паросочетании и дополняющих цепях]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона для поиска максимального паросочетания]]&lt;br /&gt;
* [[Алгоритм Куна для поиска максимального паросочетания]]&lt;br /&gt;
* [[Связь максимального паросочетания и минимального вершинного покрытия в двудольных графах]]&lt;br /&gt;
* [[Связь вершинного покрытия и независимого множества]]&lt;br /&gt;
* [[Матрица Татта и связь с размером максимального паросочетания в двудольном графе]]&lt;br /&gt;
* [[Алгоритм вырезания соцветий|Паросочетания в недвудольных графах. Алгоритм вырезания соцветий]]&lt;br /&gt;
&lt;br /&gt;
== Задача о максимальном потоке ==&lt;br /&gt;
* [[Определение сети, потока]]&lt;br /&gt;
* [[Разрез, лемма о потоке через разрез]]&lt;br /&gt;
* [[Дополняющая сеть, дополняющий путь]]&lt;br /&gt;
* [[Лемма о сложении потоков]]&lt;br /&gt;
* [[Теорема Форда-Фалкерсона]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона, реализация с помощью поиска в глубину]]&lt;br /&gt;
* [[Алоритм Эдмондса-Карпа]]&lt;br /&gt;
* [[Теорема о декомпозиции]]&lt;br /&gt;
* [[Теорема о декомпозиционном барьере]]&lt;br /&gt;
* [[Блокирующий поток]]&lt;br /&gt;
* [[Схема алгоритма Диница]]&lt;br /&gt;
* [[Алгоритм поиска блокирующего потока в ациклической сети]]&lt;br /&gt;
* [[Алгоритм масштабирования потока]]&lt;br /&gt;
* [[Теоремы Карзанова о числе итераций алгоритма Диница в сети с целочисленными пропускными способностями]]&lt;br /&gt;
&lt;br /&gt;
== Задача о потоке минимальной стоимости ==&lt;br /&gt;
* [[Поток минимальной стоимости]]&lt;br /&gt;
* [[Теорема Форда-Фалкерсона о потоке минимальной стоимости]]&lt;br /&gt;
* [[Лемма об эквивалентности свойства потока быть минимальной стоимости и отсутствии отрицательных циклов в остаточной сети]]&lt;br /&gt;
* [[Поиск потока минимальной стоимости методом дополнения вдоль путей минимальной стоимости]]&lt;br /&gt;
* [[Использование потенциалов Джонсона при поиске потока минимальной стоимости]]&lt;br /&gt;
* [[Сведение задачи о назначениях к задаче о потоке минимальной стоимости]]&lt;br /&gt;
* [[Венгерский алгоритм решения задачи о назначениях]]&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;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=7690</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=7690"/>
				<updated>2011-02-16T06:56:16Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Обновление тем до состояния на 15.02.2011&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;
&lt;br /&gt;
== Остовные деревья ==&lt;br /&gt;
* [[Лемма о безопасном ребре]]&lt;br /&gt;
* [[Алгоритм Прима]]&lt;br /&gt;
* [[Алгоритм Краскала]]&lt;br /&gt;
* [[Теорема Тарьяна|Теорема Тарьяна (критерий минимальности остовного дерева)]]&lt;br /&gt;
* [[Алгоритм двух китайцев]]&lt;br /&gt;
&lt;br /&gt;
== Задача о паросочетании ==&lt;br /&gt;
* [[Теорема о максимальном паросочетании и дополняющих цепях]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона для поиска максимального паросочетания]]&lt;br /&gt;
* [[Алгоритм Куна для поиска максимального паросочетания]]&lt;br /&gt;
* [[Связь максимального паросочетания и минимального вершинного покрытия в двудольных графах]]&lt;br /&gt;
* [[Связь вершинного покрытия и независимого множества]]&lt;br /&gt;
* [[Матрица Татта и связь с размером максимального паросочетания в двудольном графе]]&lt;br /&gt;
* [[Алгоритм вырезания соцветий|Паросочетания в недвудольных графах. Алгоритм вырезания соцветий]]&lt;br /&gt;
&lt;br /&gt;
== Задача о максимальном потоке ==&lt;br /&gt;
* [[Определение сети, потока]]&lt;br /&gt;
* [[Разрез, лемма о потоке через разрез]]&lt;br /&gt;
* [[Дополняющая сеть, дополняющий путь]]&lt;br /&gt;
* [[Лемма о сложении потоков]]&lt;br /&gt;
* [[Теорема Форда-Фалкерсона]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона, реализация с помощью поиска в глубину]]&lt;br /&gt;
* [[Алоритм Эдмондса-Карпа]]&lt;br /&gt;
* [[Теорема о декомпозиции]]&lt;br /&gt;
* [[Теорема о декомпозиционном барьере]]&lt;br /&gt;
* [[Блокирующий поток]]&lt;br /&gt;
* [[Схема алгоритма Диница]]&lt;br /&gt;
* [[Алгоритм поиска блокирующего потока в ациклической сети]]&lt;br /&gt;
* [[Алгоритм масштабирования потока]]&lt;br /&gt;
* [[Теоремы Карзанова о числе итераций алгоритма Диница в сети с целочисленными пропускными способностями]]&lt;br /&gt;
&lt;br /&gt;
== Задача о потоке минимальной стоимости ==&lt;br /&gt;
* [[Поток минимальной стоимости]]&lt;br /&gt;
* [[Теорема Форда-Фалкерсона о потоке минимальной стоимости]]&lt;br /&gt;
* [[Лемма об эквивалентности свойства потока быть минимальной стоимости и отсутствии отрицательных циклов в остаточной сети]]&lt;br /&gt;
* [[Поиск потока минимальной стоимости методом дополнения вдоль путей минимальной стоимости]]&lt;br /&gt;
* [[Использование потенциалов Джонсона при поиске потока минимальной стоимости]]&lt;br /&gt;
* [[Сведение задачи о назначениях к задаче о потоке минимальной стоимости]]&lt;br /&gt;
* [[Венгерский алгоритм решения задачи о назначениях]]&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;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=6937</id>
		<title>Алгоритм Дейкстры</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=6937"/>
				<updated>2011-01-15T19:23:14Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: /* Псевдокод */ корректировка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В ориентированном взвешанном графе &amp;lt;tex&amp;gt;G = (V, E)&amp;lt;/tex&amp;gt;, вес рёбер которого неотрицателен и определяется весовой функцией &amp;lt;tex&amp;gt;w(uv) \geqslant 0&amp;lt;/tex&amp;gt;, Алгоритм Дейкстры находит длину кратчайшего пути из одной вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; до всех остальных.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
В алгоритме поддерживается множество вершин &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, для которых уже вычислены кратчайшие пути к ним из вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. На каждой итерации основного цикла выбирается вершина &amp;lt;tex&amp;gt; u \in V \setminus S&amp;lt;/tex&amp;gt;, которой на текущий момент соответствует минимальная оценка  кратчайшего пути. Вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; добавляется в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и производится релаксация всех исходящих из неё рёбер.&lt;br /&gt;
&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
 '''Dijkstra'''(&amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;)&lt;br /&gt;
   &amp;lt;tex&amp;gt;d \gets \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;d[s] \gets 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;S \gets \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
   '''while''' &amp;lt;tex&amp;gt;V \setminus S \neq \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
       '''do''' &amp;lt;tex&amp;gt;u \gets &amp;lt;/tex&amp;gt; ''argmin''(&amp;lt;tex&amp;gt;v : v \in V \setminus S, d[v]&amp;lt;/tex&amp;gt;)&lt;br /&gt;
          &amp;lt;tex&amp;gt;S \gets S \cup \{u\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''for''' &amp;lt;tex&amp;gt;(uv) \in E&amp;lt;/tex&amp;gt;&lt;br /&gt;
              '''do''' ''relax''(&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;w&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Обоснование корректности работы ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=После окончания работы алгоритма Дейкстры для всех вершин &amp;lt;tex&amp;gt;u \in V&amp;lt;/tex&amp;gt; будет выполняться равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим инвариант основного цикла: в начале каждой итерации для всех вершин &amp;lt;tex&amp;gt;v \in S&amp;lt;/tex&amp;gt; выполняется &amp;lt;tex&amp;gt;d[v] = \delta(s, v)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Инициализация'''. Изначально множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; пусто, инвариант выполняется.&lt;br /&gt;
&lt;br /&gt;
[[Файл:DijkstraProove.png|thumb|right|Рис. 1]]&lt;br /&gt;
'''Сохранение'''. Покажем, что при каждой итерации инвариант сохраняется для каждой вершины, добавленной в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, для этого воспользуемся методом «от противного». Предположим, что &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; первая добавленная в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; вершина, для которой равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; не выполняется. Рассмотрим ситуацию, сложившуюся в начале итерации, в которой &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; будет добавлена в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;. Рассмотрев кратчайший путь из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, можно получить противоречие, заключающееся в том, что на рассматриваемый момент справедливо равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;. Должно выполняться условие &amp;lt;tex&amp;gt;u \neq s&amp;lt;/tex&amp;gt;, так как &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; является первой вершиной, добавленной в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и в момент её добавления равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; выполняется. Из условия &amp;lt;tex&amp;gt;u \neq s&amp;lt;/tex&amp;gt; следует, в частности, что &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; не пусто. Из вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; должен существовать какой-нибудь путь, так как иначе выполняется соотношение &amp;lt;tex&amp;gt;d[u] = \delta(s, u) = \infty&amp;lt;/tex&amp;gt;, нарушающее предположение о том, что равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; не выполняется. Из существования пути следует, что существует и кратчайший путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Перед добавлением &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; соединяет вершину из множества &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; с вершиной принадлежащей множеству &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;. Рассмотрим первую вершину &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; на пути &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; принадлежащую &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;, и положим, что её предшествует вершина &amp;lt;tex&amp;gt;x \in S&amp;lt;/tex&amp;gt;. Тогда, как видно из рис.1, путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; можно разложить на составляющие &amp;lt;tex&amp;gt;s \overset{p_1}{\leadsto} x \to y \overset{p_2}{\leadsto} u&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Утверждается, что в момент добавления вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, выполняется равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, y)&amp;lt;/tex&amp;gt;. Так как вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; выбрана как первая вершина, после добавления которой в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; не выполянется соотношение &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, то после добавления вершины &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; справедливо равенство &amp;lt;tex&amp;gt;d[x] = \delta(s, x)&amp;lt;/tex&amp;gt;. В это время происходит релаксация ребра &amp;lt;tex&amp;gt;xy&amp;lt;/tex&amp;gt;, поэтому вышеописанное утверждение выполняется. &lt;br /&gt;
&lt;br /&gt;
Поскольку на кратчайшем пути из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; вершина &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; находиться перед &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и вес каждого из ребер выражается неотрицательным значением, выполняется неравенство &amp;lt;tex&amp;gt;\delta(s, y) \leqslant \delta(s, u)&amp;lt;/tex&amp;gt;, поэтому &amp;lt;tex&amp;gt;d[y] = \delta(s, y) \leqslant \delta(s, u) \leqslant d[u]&amp;lt;/tex&amp;gt;. Но так как и вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, и вершина &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; во время выбора вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; находились в множестве &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;, выполняется неравенство &amp;lt;tex&amp;gt;d[u] \leqslant d[y]&amp;lt;/tex&amp;gt;. Таким образом, оба &amp;lt;tex&amp;gt;d[y] = \delta(s, y) = \delta(s, u) = d[u]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит, &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, что противоречит нашему выбору вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Следовательно, во время добавления вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; выполняется равенство&amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, а следовательно, оно выполняется и в дальнейшем.&lt;br /&gt;
&lt;br /&gt;
'''Завершение'''. По завершении работы алгоритма множество &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt; пусто. Из этого равенства следует, что &amp;lt;tex&amp;gt;S = V&amp;lt;/tex&amp;gt;. Таким образом, для всех вершин &amp;lt;tex&amp;gt;u \in V&amp;lt;/tex&amp;gt; выполняется равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Оценка сложности ==&lt;br /&gt;
Основной цикл выполняется &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; раз. Релаксация выполниться всего &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; раз. В реализации алгоритма присутствует функция ''argmin'', асимптотика её работы зависит от реализации.&lt;br /&gt;
&lt;br /&gt;
Таким образом:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; width=30%&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Структура данных для хранения множества &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Асимптотика времени работы&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Наивная реализация&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(V^2+E)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Куча&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(E\log{V})&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Куча Фибоначчи&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(V\log{V}+E)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Кормен, Томас Х., Лейзерсон, Чарльз И., Ривест, Рональд Л., Штайн Клиффорд'' '''Алгоритмы: построение и анализ''', 2-е издание. Пер. с англ. — М.:Издательский дом &amp;quot;Вильямс&amp;quot;, 2010. — 1296 с.: ил. — Парал. тит. англ. — ISBN 978-5-8459-0857-5 (рус.)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Кратчайшие пути в графах ]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=6186</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=6186"/>
				<updated>2010-12-22T19:32:03Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: /* Задача о паросочетании */ небольшая корректировка&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;
&lt;br /&gt;
== Остовные деревья ==&lt;br /&gt;
* [[Лемма о безопасном ребре]]&lt;br /&gt;
* [[Алгоритм Прима]]&lt;br /&gt;
* [[Алгоритм Краскала]]&lt;br /&gt;
* [[Теорема Тарьяна|Теорема Тарьяна (критерий минимальности остовного дерева)]]&lt;br /&gt;
* [[Алгоритм двух китайцев]]&lt;br /&gt;
&lt;br /&gt;
== Задача о паросочетании ==&lt;br /&gt;
* [[Теорема о максимальном паросочетании и дополняющих цепях]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона для поиска максимального паросочетания]]&lt;br /&gt;
* [[Алгоритм Куна для поиска максимального паросочетания]]&lt;br /&gt;
* [[Связь максимального паросочетания и минимального вершинного покрытия в двудольных графах]]&lt;br /&gt;
* [[Связь вершинного покрытия и независимого множества]]&lt;br /&gt;
* [[Матрица Татта и связь с размером максимального паросочетания в двудольном графе]]&lt;br /&gt;
* [[Алгоритм вырезания соцветий|Паросочетания в недвудольных графах. Алгоритм вырезания соцветий]]&lt;br /&gt;
&lt;br /&gt;
== Задача о максимальном потоке ==&lt;br /&gt;
* [[Определение сети, потока]]&lt;br /&gt;
* [[Разрез, лемма о потоке через разрез]]&lt;br /&gt;
* [[Дополняющая сеть, дополняющий путь]]&lt;br /&gt;
* [[Лемма о сложении потоков]]&lt;br /&gt;
* [[Теорема Форда-Фалкерсона]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона, реализация с помощью поиска в глубину]]&lt;br /&gt;
* [[Алоритм Эдмондса-Карпа]]&lt;br /&gt;
* [[Теорема о декомпозиции]]&lt;br /&gt;
* [[Теорема о декомпозиционном барьере]]&lt;br /&gt;
* [[Блокирующий поток]]&lt;br /&gt;
* [[Схема алгоритма Диница]]&lt;br /&gt;
* [[Алгоритм поиска блокирующего потока в ациклической сети]]&lt;br /&gt;
* [[Алгоритм масштабирования потока]]&lt;br /&gt;
* [[Теоремы Карзанова о числе итераций алгоритма Диница в сети с целочисленными пропускными способностями]]&lt;br /&gt;
&lt;br /&gt;
== Задача о потоке минимальной стоимости ==&lt;br /&gt;
* [[Поток минимальной стоимости]]&lt;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>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=6167</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=6167"/>
				<updated>2010-12-22T14:47:29Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Обновление тем до состояния на 22.12.2010&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;
&lt;br /&gt;
== Остовные деревья ==&lt;br /&gt;
* [[Лемма о безопасном ребре]]&lt;br /&gt;
* [[Алгоритм Прима]]&lt;br /&gt;
* [[Алгоритм Краскала]]&lt;br /&gt;
* [[Теорема Тарьяна|Теорема Тарьяна (критерий минимальности остовного дерева)]]&lt;br /&gt;
* [[Алгоритм двух китайцев]]&lt;br /&gt;
&lt;br /&gt;
== Задача о паросочетании ==&lt;br /&gt;
* [[Теорема о максимальном паросочетании и дополняющих цепях]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона для поиска максимального паросочетания]]&lt;br /&gt;
* [[Алгоритм Куна для поиска максимального паросочетания]]&lt;br /&gt;
* [[Связь максимального паросочетания и минимального вершинного покрытия в двудольных графах]]&lt;br /&gt;
* [[Связь вершинного покрытия и независимого множества]]&lt;br /&gt;
* [[Матрица Татта и связь с размером максимального паросочетания в двудольном графе]]&lt;br /&gt;
&lt;br /&gt;
== Задача о максимальном потоке ==&lt;br /&gt;
* [[Определение сети, потока]]&lt;br /&gt;
* [[Разрез, лемма о потоке через разрез]]&lt;br /&gt;
* [[Дополняющая сеть, дополняющий путь]]&lt;br /&gt;
* [[Лемма о сложении потоков]]&lt;br /&gt;
* [[Теорема Форда-Фалкерсона]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона, реализация с помощью поиска в глубину]]&lt;br /&gt;
* [[Алоритм Эдмондса-Карпа]]&lt;br /&gt;
* [[Теорема о декомпозиции]]&lt;br /&gt;
* [[Теорема о декомпозиционном барьере]]&lt;br /&gt;
* [[Блокирующий поток]]&lt;br /&gt;
* [[Схема алгоритма Диница]]&lt;br /&gt;
* [[Алгоритм поиска блокирующего потока в ациклической сети]]&lt;br /&gt;
* [[Алгоритм масштабирования потока]]&lt;br /&gt;
* [[Теоремы Карзанова о числе итераций алгоритма Диница в сети с целочисленными пропускными способностями]]&lt;br /&gt;
&lt;br /&gt;
== Задача о потоке минимальной стоимости ==&lt;br /&gt;
* [[Поток минимальной стоимости]]&lt;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>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=5816</id>
		<title>Алгоритм Дейкстры</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=5816"/>
				<updated>2010-12-12T20:39:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В ориентированном взвешанном графе &amp;lt;tex&amp;gt;G = (V, E)&amp;lt;/tex&amp;gt;, вес рёбер которого неотрицателен и определяется весовой функцией &amp;lt;tex&amp;gt;w(uv) \geqslant 0&amp;lt;/tex&amp;gt;, Алгоритм Дейкстры находит длину кратчайшего пути из одной вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; до всех остальных.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
В алгоритме поддерживается множество вершин &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, для которых уже вычислены кратчайшие пути к ним из вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. На каждой итерации основного цикла выбирается вершина &amp;lt;tex&amp;gt; u \in V \setminus S&amp;lt;/tex&amp;gt;, которой на текущий момент соответствует минимальная оценка  кратчайшего пути. Вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; добавляется в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и производится релаксация всех исходящих из неё рёбер.&lt;br /&gt;
&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
 '''Dijkstra'''(&amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;)&lt;br /&gt;
   &amp;lt;tex&amp;gt;d \gets \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;d[s] \gets 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;S \gets \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
   '''while''' &amp;lt;tex&amp;gt;V \setminus S \neq \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
       '''do''' ''argmin''(&amp;lt;tex&amp;gt;v : v \in V \setminus S, d[v]&amp;lt;/tex&amp;gt;)&lt;br /&gt;
          &amp;lt;tex&amp;gt;S \gets S \cup \{u\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''for''' &amp;lt;tex&amp;gt;(uv) \in E&amp;lt;/tex&amp;gt;&lt;br /&gt;
              '''do''' ''relax''(&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;w&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Обоснование корректности работы ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=После окончания работы алгоритма Дейкстры для всех вершин &amp;lt;tex&amp;gt;u \in V&amp;lt;/tex&amp;gt; будет выполняться равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим инвариант основного цикла: в начале каждой итерации для всех вершин &amp;lt;tex&amp;gt;v \in S&amp;lt;/tex&amp;gt; выполняется &amp;lt;tex&amp;gt;d[v] = \delta(s, v)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Инициализация'''. Изначально множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; пусто, инвариант выполняется.&lt;br /&gt;
&lt;br /&gt;
[[Файл:DijkstraProove.png|thumb|right|Рис. 1]]&lt;br /&gt;
'''Сохранение'''. Покажем, что при каждой итерации инвариант сохраняется для каждой вершины, добавленной в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, для этого воспользуемся методом «от противного». Предположим, что &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; первая добавленная в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; вершина, для которой равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; не выполняется. Рассмотрим ситуацию, сложившуюся в начале итерации, в которой &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; будет добавлена в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;. Рассмотрев кратчайший путь из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, можно получить противоречие, заключающееся в том, что на рассматриваемый момент справедливо равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;. Должно выполняться условие &amp;lt;tex&amp;gt;u \neq s&amp;lt;/tex&amp;gt;, так как &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; является первой вершиной, добавленной в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и в момент её добавления равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; выполняется. Из условия &amp;lt;tex&amp;gt;u \neq s&amp;lt;/tex&amp;gt; следует, в частности, что &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; не пусто. Из вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; должен существовать какой-нибудь путь, так как иначе выполняется соотношение &amp;lt;tex&amp;gt;d[u] = \delta(s, u) = \infty&amp;lt;/tex&amp;gt;, нарушающее предположение о том, что равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; не выполняется. Из существования пути следует, что существует и кратчайший путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Перед добавлением &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; соединяет вершину из множества &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; с вершиной принадлежащей множеству &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;. Рассмотрим первую вершину &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; на пути &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; принадлежащую &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;, и положим, что её предшествует вершина &amp;lt;tex&amp;gt;x \in S&amp;lt;/tex&amp;gt;. Тогда, как видно из рис.1, путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; можно разложить на составляющие &amp;lt;tex&amp;gt;s \overset{p_1}{\leadsto} x \to y \overset{p_2}{\leadsto} u&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Утверждается, что в момент добавления вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, выполняется равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, y)&amp;lt;/tex&amp;gt;. Так как вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; выбрана как первая вершина, после добавления которой в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; не выполянется соотношение &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, то после добавления вершины &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; справедливо равенство &amp;lt;tex&amp;gt;d[x] = \delta(s, x)&amp;lt;/tex&amp;gt;. В это время происходит релаксация ребра &amp;lt;tex&amp;gt;xy&amp;lt;/tex&amp;gt;, поэтому вышеописанное утверждение выполняется. &lt;br /&gt;
&lt;br /&gt;
Поскольку на кратчайшем пути из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; вершина &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; находиться перед &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и вес каждого из ребер выражается неотрицательным значением, выполняется неравенство &amp;lt;tex&amp;gt;\delta(s, y) \leqslant \delta(s, u)&amp;lt;/tex&amp;gt;, поэтому &amp;lt;tex&amp;gt;d[y] = \delta(s, y) \leqslant \delta(s, u) \leqslant d[u]&amp;lt;/tex&amp;gt;. Но так как и вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, и вершина &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; во время выбора вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; находились в множестве &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;, выполняется неравенство &amp;lt;tex&amp;gt;d[u] \leqslant d[y]&amp;lt;/tex&amp;gt;. Таким образом, оба &amp;lt;tex&amp;gt;d[y] = \delta(s, y) = \delta(s, u) = d[u]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит, &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, что противоречит нашему выбору вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Следовательно, во время добавления вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; выполняется равенство&amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, а следовательно, оно выполняется и в дальнейшем.&lt;br /&gt;
&lt;br /&gt;
'''Завершение'''. По завершении работы алгоритма множество &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt; пусто. Из этого равенства следует, что &amp;lt;tex&amp;gt;S = V&amp;lt;/tex&amp;gt;. Таким образом, для всех вершин &amp;lt;tex&amp;gt;u \in V&amp;lt;/tex&amp;gt; выполняется равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Оценка сложности ==&lt;br /&gt;
Основной цикл выполняется &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; раз. Релаксация выполниться всего &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; раз. В реализации алгоритма присутствует функция ''argmin'', асимптотика её работы зависит от реализации.&lt;br /&gt;
&lt;br /&gt;
Таким образом:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; width=30%&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Структура данных для хранения множества &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Асимптотика времени работы&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Наивная реализация&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(V^2+E)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Куча&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(E\log{V})&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Куча Фибоначчи&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(V\log{V}+E)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Кормен, Томас Х., Лейзерсон, Чарльз И., Ривест, Рональд Л., Штайн Клиффорд'' '''Алгоритмы: построение и анализ''', 2-е издание. Пер. с англ. — М.:Издательский дом &amp;quot;Вильямс&amp;quot;, 2010. — 1296 с.: ил. — Парал. тит. англ. — ISBN 978-5-8459-0857-5 (рус.)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Кратчайшие пути в графах ]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=5635</id>
		<title>Алгоритм Дейкстры</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=5635"/>
				<updated>2010-12-08T22:00:58Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В ориентированном взвешанном графе &amp;lt;tex&amp;gt;G = (V, E)&amp;lt;/tex&amp;gt;, вес рёбер которого неотрицателен и определяется весовой функцией &amp;lt;tex&amp;gt;w(uv) \geqslant 0&amp;lt;/tex&amp;gt;, Алгоритм Дейкстры находит длину кратчайшего пути из одной вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; до всех остальных.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
В алгоритме поддерживается множество вершин &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, для которых уже вычислены кратчайшие пути к ним из вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. На каждой итерации основного цикла выбирается вершина &amp;lt;tex&amp;gt; u \in V \setminus S&amp;lt;/tex&amp;gt;, которой на текущий момент соответствует минимальная оценка  кратчайшего пути. Вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; добавляется в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и производится релаксация всех исходящих из неё рёбер.&lt;br /&gt;
&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
 '''Dijkstra'''(&amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;)&lt;br /&gt;
   &amp;lt;tex&amp;gt;d \gets \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;d[s] \gets 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;S \gets \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
   '''while''' &amp;lt;tex&amp;gt;V \setminus S \neq \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
       '''do''' ''argmin''(&amp;lt;tex&amp;gt;v : v \in V \setminus S, d[v]&amp;lt;/tex&amp;gt;)&lt;br /&gt;
          &amp;lt;tex&amp;gt;S \gets S \cup \{u\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''for''' &amp;lt;tex&amp;gt;(uv) \in E&amp;lt;/tex&amp;gt;&lt;br /&gt;
              '''do''' ''relax''(&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;w&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Обоснование корректности работы ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=После окончания работы алгоритма Дейкстры для всех вершин &amp;lt;tex&amp;gt;u \in V&amp;lt;/tex&amp;gt; будет выполняться равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим инвариант основного цикла: в начале каждой итерации для всех вершин &amp;lt;tex&amp;gt;v \in S&amp;lt;/tex&amp;gt; выполняется &amp;lt;tex&amp;gt;d[v] = \delta(s, v)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Инициализация'''. Изначально множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; пусто, инвариант выполняется.&lt;br /&gt;
&lt;br /&gt;
[[Файл:DijkstraProove.png|thumb|right|Рис. 1]]&lt;br /&gt;
'''Сохранение'''. Покажем, что при каждой итерации инвариант сохраняется для каждой вершины, добавленной в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, для этого воспользуемся методом «от противного». Предположим, что &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; первая добавленная в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; вершина, для которой равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; не выполняется. Рассмотрим ситуацию, сложившуюся в начале итерации, в которой &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; будет добавлена в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;. Рассмотрев кратчайший путь из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, можно получить противоречие, заключающееся в том, что на рассматриваемый момент справедливо равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;. Должно выполняться условие &amp;lt;tex&amp;gt;u \neq s&amp;lt;/tex&amp;gt;, так как &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; является первой вершиной, добавленной в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и в момент её добавления равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; выполняется. Из условия &amp;lt;tex&amp;gt;u \neq s&amp;lt;/tex&amp;gt; следует, в частности, что &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; не пусто. Из вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; должен существовать какой-нибудь путь, так как иначе выполняется соотношение &amp;lt;tex&amp;gt;d[u] = \delta(s, u) = \infty&amp;lt;/tex&amp;gt;, нарушающее предположение о том, что равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; не выполняется. Из существования пути следует, что существует и кратчайший путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Перед добавлением &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; соединяет вершину из множества &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; с вершиной принадлежащей множеству &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;. Рассмотрим первую вершину &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; на пути &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; принадлежащую &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;, и положим, что её предшествует вершина &amp;lt;tex&amp;gt;x \in S&amp;lt;/tex&amp;gt;. Тогда, как видно из рис.1, путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; можно разложить на составляющие &amp;lt;tex&amp;gt;s \overset{p_1}{\leadsto} x \to y \overset{p_2}{\leadsto} u&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Утверждается, что в момент добавления вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, выполняется равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, y)&amp;lt;/tex&amp;gt;. Так как вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; выбрана как первая вершина, после добавления которой в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; не выполянется соотношение &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, то после добавления вершины &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; справедливо равенство &amp;lt;tex&amp;gt;d[x] = \delta(s, x)&amp;lt;/tex&amp;gt;. В это время происходит релаксация ребра &amp;lt;tex&amp;gt;xy&amp;lt;/tex&amp;gt;. В это время происходит релаксация ребра &amp;lt;tex&amp;gt;xy&amp;lt;/tex&amp;gt;, поэтому вышеописанное утверждение выполняется. &lt;br /&gt;
&lt;br /&gt;
Поскольку на кратчайшем пути из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; вершина &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; находиться перед &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и вес каждого из ребер выражается неотрицательным значением, выполняется неравенство &amp;lt;tex&amp;gt;\delta(s, y) \leqslant \delta(s, u)&amp;lt;/tex&amp;gt;, поэтому &amp;lt;tex&amp;gt;d[y] = \delta(s, y) \leqslant \delta(s, u) \leqslant d[u]&amp;lt;/tex&amp;gt;. Но так как и вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, и вершина &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; во время выбора вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; находились в множестве &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;, выполняется неравенство &amp;lt;tex&amp;gt;d[u] \leqslant d[y]&amp;lt;/tex&amp;gt;. Таким образом, оба &amp;lt;tex&amp;gt;d[y] = \delta(s, y) = \delta(s, u) = d[u]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит, &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, что противоречит нашему выбору вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Следовательно, во время добавления вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; выполняется равенство&amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, а следовательно, оно выполняется и в дальнейшем.&lt;br /&gt;
&lt;br /&gt;
'''Завершение'''. По завершении работы алгоритма множество &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt; пусто. Из этого равенства следует, что &amp;lt;tex&amp;gt;S = V&amp;lt;/tex&amp;gt;. Таким образом, для всех вершин &amp;lt;tex&amp;gt;u \in V&amp;lt;/tex&amp;gt; выполняется равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Оценка сложности ==&lt;br /&gt;
Основной цикл выполняется &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; раз. Релаксация выполниться всего &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; раз. В реализации алгоритма присутствует функция ''argmin'', асимптотика её работы зависит от реализации.&lt;br /&gt;
&lt;br /&gt;
Таким образом:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; width=30%&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Структура данных для хранения множества &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Асимптотика времени работы&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Наивная реализация&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(V^2+E)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Куча&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(E\log{V})&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Куча Фибоначчи&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(V\log{V}+E)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Кормен, Томас Х., Лейзерсон, Чарльз И., Ривест, Рональд Л., Штайн Клиффорд'' '''Алгоритмы: построение и анализ''', 2-е издание. Пер. с англ. — М.:Издательский дом &amp;quot;Вильямс&amp;quot;, 2010. — 1296 с.: ил. — Парал. тит. англ. — ISBN 978-5-8459-0857-5 (рус.)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Кратчайшие пути в графах ]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=5632</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=5632"/>
				<updated>2010-12-08T21:35:27Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Обновление тем до состояния на 08.12.2010&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;
&lt;br /&gt;
== Остовные деревья ==&lt;br /&gt;
* [[Лемма о безопасном ребре]]&lt;br /&gt;
* [[Алгоритм Прима]]&lt;br /&gt;
* [[Алгоритм Краскала]]&lt;br /&gt;
* [[Теорема Тарьяна|Теорема Тарьяна (критерий минимальности остовного дерева)]]&lt;br /&gt;
* [[Алгоритм двух китайцев]]&lt;br /&gt;
&lt;br /&gt;
== Задача о паросочетании ==&lt;br /&gt;
* [[Теорема о максимальном паросочетании и дополняющих цепях]]&lt;br /&gt;
* [[Алгоритм Форда-Фалкерсона для поиска максимального паросочетания]]&lt;br /&gt;
* [[Алгоритм Куна для поиска максимального паросочетания]]&lt;br /&gt;
* [[Связь максимального паросочетания и минимального вершинного покрытия в двудольных графах]]&lt;br /&gt;
* [[Связь вершинного покрытия и независимого множества]]&lt;br /&gt;
* [[Матрица Татта и связь с размером максимального паросочетания в двудольном графе]]&lt;br /&gt;
&lt;br /&gt;
== Задача о максимальном потоке ==&lt;br /&gt;
* [[Определение сети, потока]]&lt;br /&gt;
* [[Разрез, лемма о потоке через разрез]]&lt;br /&gt;
* [[Дополняющая сеть, дополняющий путь]]&lt;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>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=5567</id>
		<title>Алгоритм Дейкстры</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=5567"/>
				<updated>2010-12-07T06:58:58Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В ориентированном взвешанном графе &amp;lt;tex&amp;gt;G = (V, E)&amp;lt;/tex&amp;gt;, вес рёбер которого неотрицателен и определяется весовой функцией &amp;lt;tex&amp;gt;w(uv) \geqslant 0&amp;lt;/tex&amp;gt;, Алгоритм Дейкстры находит длину кратчайшего пути из одной вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; до всех остальных.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
В алгоритме поддерживается множество вершин &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, для которых уже вычислены кратчайшие пути к ним из вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. На каждой итерации основного цикла выбирается вершина &amp;lt;tex&amp;gt; u \in V \setminus S&amp;lt;/tex&amp;gt;, которой на текущий момент соответствует минимальная оценка  кратчайшего пути. Вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; добавляется в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и производится релаксация всех исходящих из неё рёбер.&lt;br /&gt;
&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
 '''Dijkstra'''(&amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;)&lt;br /&gt;
   &amp;lt;tex&amp;gt;d \gets \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;d[s] \gets 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;S \gets \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
   '''while''' &amp;lt;tex&amp;gt;V \setminus S \neq \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
       '''do''' ''argmin''(&amp;lt;tex&amp;gt;v : v \in V \setminus S, d[v]&amp;lt;/tex&amp;gt;)&lt;br /&gt;
          &amp;lt;tex&amp;gt;S \gets S \cup \{u\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''for''' &amp;lt;tex&amp;gt;(uv) \in E&amp;lt;/tex&amp;gt;&lt;br /&gt;
              '''do''' ''relax''(&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;w&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Обоснование корректности работы ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=После окончания работы алгоритма Дейкстры для всех вершин &amp;lt;tex&amp;gt;u \in V&amp;lt;/tex&amp;gt; будет выполняться равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим инвариант основного цикла: в начале каждой итерации для всех вершин &amp;lt;tex&amp;gt;v \in S&amp;lt;/tex&amp;gt; выполняется &amp;lt;tex&amp;gt;d[v] = \delta(s, v)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Инициализация'''. Изначально множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; пусто, инвариант выполняется.&lt;br /&gt;
&lt;br /&gt;
[[Файл:DijkstraProove.png|thumb|right|Рис. 1]]&lt;br /&gt;
'''Сохранение'''. Покажем, что при каждой итерации инвариант сохраняется для каждой вершины, добавленной в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, для этого воспользуемся методом «от противного». Предположим, что &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; первая добавленная в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; вершина, для которой равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; не выполняется. Рассмотрим ситуацию, сложившуюся в начале итерации, в которой &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; будет добавлена в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;. Рассмотрев кратчайший путь из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, можно получить противоречие, заключающееся в том, что на рассматриваемый момент справедливо равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;. Должно выполняться условие &amp;lt;tex&amp;gt;u \neq s&amp;lt;/tex&amp;gt;, так как &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; является первой вершиной, добавленной в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и в момент её добавления равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; выполняется. Из условия &amp;lt;tex&amp;gt;u \neq s&amp;lt;/tex&amp;gt; следует, в частности, что &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; не пусто. Из вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; должен существовать какой-нибудь путь, так как иначе выполняется соотношение &amp;lt;tex&amp;gt;d[u] = \delta(s, u) = \infty&amp;lt;/tex&amp;gt;, нарушающее предположение о том, что равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; не выполняется. Из существования пути следует, что существует и кратчайший путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Перед добавлением &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; соединяет вершину из множества &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; с вершиной принадлежащей множеству &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;. Рассмотрим первую вершину &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; на пути &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; принадлежащую &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;, и положим, что её предшествует вершина &amp;lt;tex&amp;gt;x \in S&amp;lt;/tex&amp;gt;. Тогда, как видно из рис.1, путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; можно разложить на составляющие &amp;lt;tex&amp;gt;s \overset{p_1}{\leadsto} x \to y \overset{p_2}{\leadsto} u&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Утверждается, что в момент добавления вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, выполняется равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, y)&amp;lt;/tex&amp;gt;. Так как вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; выбрана как первая вершина, после добавления которой в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; не выполянется соотношение &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, то после добавления вершины &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; справедливо равенство &amp;lt;tex&amp;gt;d[x] = \delta(s, x)&amp;lt;/tex&amp;gt;. В это время происходит релаксация ребра &amp;lt;tex&amp;gt;xy&amp;lt;/tex&amp;gt;. В это время происходит релаксация ребра &amp;lt;tex&amp;gt;xy&amp;lt;/tex&amp;gt;, поэтому вышеописанное утверждение выполняется. &lt;br /&gt;
&lt;br /&gt;
Поскольку на кратчайшем пути из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; вершина &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; находиться перед &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и вес каждого из ребер выражается неотрицательным значением, выполняется неравенство &amp;lt;tex&amp;gt;\delta(s, y) \leqslant \delta(s, u)&amp;lt;/tex&amp;gt;, поэтому &amp;lt;tex&amp;gt;d[y] = \delta(s, y) \leqslant \delta(s, u) \leqslant d[u]&amp;lt;/tex&amp;gt;. Но так как и вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, и вершина &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; во время выбора вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; находились в множестве &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;, выполняется неравенство &amp;lt;tex&amp;gt;d[u] \leqslant d[y]&amp;lt;/tex&amp;gt;. Таким образом, оба &amp;lt;tex&amp;gt;d[y] = \delta(s, y) = \delta(s, u) = d[u]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит, &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, что противоречит нашему выбору вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Следовательно, во время добавления вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; выполняется равенство&amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, а следовательно, оно выполняется и в дальнейшем.&lt;br /&gt;
&lt;br /&gt;
'''Завершение'''. По завершении работы алгоритма множество &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt; пусто. Из этого равенства следует, что &amp;lt;tex&amp;gt;S = V&amp;lt;/tex&amp;gt;. Таким образом, для всех вершин &amp;lt;tex&amp;gt;u \in V&amp;lt;/tex&amp;gt; выполняется равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Оценка сложности ==&lt;br /&gt;
Основной цикл выполняется &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; раз. Релаксация выполниться всего &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; раз. В реализации алгоритма присутствует функция ''argmin'', ассимптотика её работы зависит от реализации.&lt;br /&gt;
&lt;br /&gt;
Таким образом:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; width=30%&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Структура данных для хранения множества &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Ассимптотика времени работы&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Наивная реализация&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(V^2+E)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Куча&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(E\log{V})&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Куча Фибоначчи&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(V\log{V}+E)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Кормен, Томас Х., Лейзерсон, Чарльз И., Ривест, Рональд Л., Штайн Клиффорд'' '''Алгоритмы: построение и анализ''', 2-е издание. Пер. с англ. — М.:Издательский дом &amp;quot;Вильямс&amp;quot;, 2010. — 1296 с.: ил. — Парал. тит. англ. — ISBN 978-5-8459-0857-5 (рус.)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Кратчайшие пути в графах ]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:DijkstraProove.png&amp;diff=5566</id>
		<title>Файл:DijkstraProove.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:DijkstraProove.png&amp;diff=5566"/>
				<updated>2010-12-07T06:52:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Иллюстрация к доказательству корректности работы алгоритма Дейкстры&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Иллюстрация к доказательству корректности работы алгоритма Дейкстры&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=5545</id>
		<title>Алгоритм Дейкстры</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=5545"/>
				<updated>2010-12-06T07:34:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Добавлено доказательство и оценка времени работы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{В разработке}}&lt;br /&gt;
&lt;br /&gt;
В ориентированном взвешанном графе &amp;lt;tex&amp;gt;G = (V, E)&amp;lt;/tex&amp;gt;, вес рёбер которого неотрицателен и определяется весовой функцией &amp;lt;tex&amp;gt;w(uv) \geqslant 0&amp;lt;/tex&amp;gt;, Алгоритм Дейкстры находит длину кратчайшего пути из одной вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; до всех остальных.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
В алгоритме поддерживается множество вершин &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, для которых уже вычислены кратчайшие пути к ним из вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. На каждой итерации основного цикла выбирается вершина &amp;lt;tex&amp;gt; u \in V \setminus S&amp;lt;/tex&amp;gt;, которой на текущий момент соответствует минимальная оценка  кратчайшего пути. Вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; добавляется в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и производится релаксация всех исходящих из неё рёбер.&lt;br /&gt;
&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
 '''Dijkstra'''(&amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;)&lt;br /&gt;
   &amp;lt;tex&amp;gt;d \gets \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;d[s] \gets 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;S \gets \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
   '''while''' &amp;lt;tex&amp;gt;V \setminus S \neq \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
       '''do''' ''argmin''(&amp;lt;tex&amp;gt;v : v \in V \setminus S, d[v]&amp;lt;/tex&amp;gt;)&lt;br /&gt;
          &amp;lt;tex&amp;gt;S \gets S \cup \{u\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''for''' &amp;lt;tex&amp;gt;(uv) \in E&amp;lt;/tex&amp;gt;&lt;br /&gt;
              '''do''' ''relax''(&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;w&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Обоснование корректности работы ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=После окончания работы алгоритма Дейкстры для всех вершин &amp;lt;tex&amp;gt;u \in V&amp;lt;/tex&amp;gt; будет выполняться равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим инвариант основного цикла: в начале каждой итерации для всех вершин &amp;lt;tex&amp;gt;v \in S&amp;lt;/tex&amp;gt; выполняется &amp;lt;tex&amp;gt;d[v] = \delta(s, v)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Инициализация'''. Изначально множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; пусто, инвариант выполняется.&lt;br /&gt;
&lt;br /&gt;
[[Файл:DijkstraProove.png|thumb|right|Рис. 1]]&lt;br /&gt;
'''Сохранение'''. Покажем, что при каждой итерации инвариант сохраняется для каждой вершины, добавленной в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, для этого воспользуемся методом «от противного». Предположим, что &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; первая добавленная в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; вершина, для которой равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; не выполняется. Рассмотрим ситуацию, сложившуюся в начале итерации, в которой &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; будет добавлена в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;. Рассмотрев кратчайший путь из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, можно получить противоречие, заключающееся в том, что на рассматриваемый момент справедливо равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;. Должно выполняться условие &amp;lt;tex&amp;gt;u \neq s&amp;lt;/tex&amp;gt;, так как &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; является первой вершиной, добавленной в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и в момент её добавления равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; выполняется. Из условия &amp;lt;tex&amp;gt;u \neq s&amp;lt;/tex&amp;gt; следует, в частности, что &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; не пусто. Из вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; должен существовать какой-нибудь путь, так как иначе выполняется соотношение &amp;lt;tex&amp;gt;d[u] = \delta(s, u) = \infty&amp;lt;/tex&amp;gt;, нарушающее предположение о том, что равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; не выполняется. Из существования пути следует, что существует и кратчайший путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Перед добавлением &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; соединяет вершину из множества &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; с вершиной принадлежащей множеству &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;. Рассмотрим первую вершину &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; на пути &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; принадлежащую &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;, и положим, что её предшествует вершина &amp;lt;tex&amp;gt;x \in S&amp;lt;/tex&amp;gt;. Тогда, как видно из рис.1, путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; можно разложить на составляющие &amp;lt;tex&amp;gt;s \overset{p_1}{\leadsto} x \to y \overset{p_2}{\leadsto} u&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Утверждается, что в момент добавления вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, выполняется равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, y)&amp;lt;/tex&amp;gt;. Так как вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; выбрана как первая вершина, после добавления которой в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; не выполянется соотношение &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, то после добавления вершины &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; справедливо равенство &amp;lt;tex&amp;gt;d[x] = \delta(s, x)&amp;lt;/tex&amp;gt;. В это время происходит релаксация ребра &amp;lt;tex&amp;gt;xy&amp;lt;/tex&amp;gt;. В это время происходит релаксация ребра &amp;lt;tex&amp;gt;xy&amp;lt;/tex&amp;gt;, поэтому вышеописанное утверждение выполняется. &lt;br /&gt;
&lt;br /&gt;
Поскольку на кратчайшем пути из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; вершина &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; находиться перед &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и вес каждого из ребер выражается неотрицательным значением, выполняется неравенство &amp;lt;tex&amp;gt;\delta(s, y) \leqslant \delta(s, u)&amp;lt;/tex&amp;gt;, поэтому &amp;lt;tex&amp;gt;d[y] = \delta(s, y) \leqslant \delta(s, u) \leqslant d[u]&amp;lt;/tex&amp;gt;. Но так как и вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, и вершина &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; во время выбора вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; находились в множестве &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;, выполняется неравенство &amp;lt;tex&amp;gt;d[u] \leqslant d[y]&amp;lt;/tex&amp;gt;. Таким образом, оба &amp;lt;tex&amp;gt;d[y] = \delta(s, y) = \delta(s, u) = d[u]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит, &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, что противоречит нашему выбору вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Следовательно, во время добавления вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; выполняется равенство&amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;, а следовательно, оно выполняется и в дальнейшем.&lt;br /&gt;
&lt;br /&gt;
'''Завершение'''. По завершении работы алгоритма множество &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt; пусто. Из этого равенства следует, что &amp;lt;tex&amp;gt;S = V&amp;lt;/tex&amp;gt;. Таким образом, для всех вершин &amp;lt;tex&amp;gt;u \in V&amp;lt;/tex&amp;gt; выполняется равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Оценка сложности ==&lt;br /&gt;
Основной цикл выполняется &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; раз. Релаксация выполниться всего &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; раз. В реализации алгоритма присутствует функция ''argmin'', ассимптотика её работы зависит от реализации.&lt;br /&gt;
&lt;br /&gt;
Таким образом:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; width=30%&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Структура данных для хранения множества &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Ассимптотика времени работы&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Наивная реализация&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(V^2+E)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Куча&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(E\log{V})&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|Куча Фибоначчи&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;O(V\log{V}+E)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Кормен Т. Х., Лейзерсон Ч. И., Ривест Р. Л., Штайн К.'' '''Алгоритмы: построение и анализ''', 2-е издание. Пер. с англ. — М.:Издательский дом &amp;quot;Вильямс&amp;quot;, 2010. — 1296 с.: ил. — Парал. тит. англ. — ISBN 978-5-8459-0857-5 (рус.)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Кратчайшие пути в графах ]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=5542</id>
		<title>Алгоритм Дейкстры</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=5542"/>
				<updated>2010-12-06T05:43:43Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Добавлена часть доказательства&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{В разработке}}&lt;br /&gt;
&lt;br /&gt;
В ориентированном взвешанном графе &amp;lt;tex&amp;gt;G = (V, E)&amp;lt;/tex&amp;gt;, вес рёбер которого неотрицателен и определяется весовой функцией &amp;lt;tex&amp;gt;w(uv) \geqslant 0&amp;lt;/tex&amp;gt;, Алгоритм Дейкстры находит длину кратчайшего пути из одной вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; до всех остальных.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
В алгоритме поддерживается множество вершин &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, для которых уже вычислены кратчайшие пути к ним из вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. На каждой итерации основного цикла выбирается вершина &amp;lt;tex&amp;gt; u \in V \setminus S&amp;lt;/tex&amp;gt;, которой на текущий момент соответствует минимальная оценка  кратчайшего пути. Вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; добавляется в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и производится релаксация всех исходящих из неё рёбер.&lt;br /&gt;
&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
 '''Dijkstra'''(&amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;)&lt;br /&gt;
   &amp;lt;tex&amp;gt;d \gets \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;d[s] \gets 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;S \gets \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
   '''while''' &amp;lt;tex&amp;gt;V \setminus S \neq \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
       '''do''' ''argmin''(&amp;lt;tex&amp;gt;v : v \in V \setminus S, d[v]&amp;lt;/tex&amp;gt;)&lt;br /&gt;
          &amp;lt;tex&amp;gt;S \gets S \cup \{u\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''for''' &amp;lt;tex&amp;gt;(uv) \in E&amp;lt;/tex&amp;gt;&lt;br /&gt;
              '''do''' ''relax''(&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;w&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Обоснование корректности работы ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=После окончания работы алгоритма Дейкстры для всех вершин &amp;lt;tex&amp;gt;u \in V(G)&amp;lt;/tex&amp;gt; будет выполняться равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим инвариант основного цикла: в начале каждой итерации для всех вершин &amp;lt;tex&amp;gt;v \in S&amp;lt;/tex&amp;gt; выполняется &amp;lt;tex&amp;gt;d[v] = \delta(s, v)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Инициализация'''. Изначально множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; пусто, инвариант выполняется.&lt;br /&gt;
&lt;br /&gt;
'''Сохранение'''. Покажем, что при каждой итерации инвариант сохраняется для каждой вершины, добавленной в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, для этого воспользуемся методом «от противного». Предположим, что &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; первая добавленная в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; вершина, для которой равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; не выполняется. Рассмотрим ситуацию, сложившуюся в начале итерации, в которой &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; будет добавлена в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;. Рассмотрев кратчайший путь из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;, можно получить противоречие, заключающееся в том, что на рассматриваемый момент справедливо равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;. Должно выполняться условие &amp;lt;tex&amp;gt;u \neq s&amp;lt;/tex&amp;gt;, так как &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; является первой вершиной, добавленной в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и в момент её добавления равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; выполняется. Из условия &amp;lt;tex&amp;gt;u \neq s&amp;lt;/tex&amp;gt; следует, в частности, что &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; не пусто. Из вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в вершину &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; должен существовать какой-нибудь путь, так как иначе выполняется соотношение &amp;lt;tex&amp;gt;d[u] = \delta(s, u) = \infty&amp;lt;/tex&amp;gt;, нарушающее предположение о том, что равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt; не выполняется. Из существования пути следует, что существует и кратчайший путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Перед добавлением &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; соединяет вершину из множества &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; с вершиноу принадлежащей маножеству &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;. Рассмотрим первую вершину &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; на пути &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; принадлежащую &amp;lt;tex&amp;gt;V \setminus S&amp;lt;/tex&amp;gt;, и положим, что её предшествует вершина &amp;lt;tex&amp;gt;x \in S&amp;lt;/tex&amp;gt;. Тогда, как видно из рис.1, путь &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; можно разложить на составляющие &amp;lt;tex&amp;gt;s \overset{p_1}{\leadsto} x \to y \overset{p_2}{\leadsto} u&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Оценка сложности ==&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Кормен Т. Х., Лейзерсон Ч. И., Ривест Р. Л., Штайн К.'' '''Алгоритмы: построение и анализ''', 2-е издание. Пер. с англ. — М.:Издательский дом &amp;quot;Вильямс&amp;quot;, 2010. — 1296 с.: ил. — Парал. тит. англ. — ISBN 978-5-8459-0857-5 (рус.)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Кратчайшие пути в графах ]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=5536</id>
		<title>Алгоритм Дейкстры</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=5536"/>
				<updated>2010-12-06T04:29:21Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{В разработке}}&lt;br /&gt;
&lt;br /&gt;
В ориентированном взвешанном графе &amp;lt;tex&amp;gt;G = (V, E)&amp;lt;/tex&amp;gt;, вес рёбер которого неотрицателен и определяется весовой функцией &amp;lt;tex&amp;gt;w(uv) \geqslant 0&amp;lt;/tex&amp;gt;, Алгоритм Дейкстры находит длину кратчайшего пути из одной вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; до всех остальных.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
В алгоритме поддерживается множество вершин &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, для которых уже вычислены кратчайшие пути к ним из вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. На каждой итерации основного цикла выбирается вершина &amp;lt;tex&amp;gt; u \in V \setminus S&amp;lt;/tex&amp;gt;, которой на текущий момент соответствует минимальная оценка  кратчайшего пути. Вершина &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; добавляется в множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и производится релаксация всех исходящих из неё рёбер.&lt;br /&gt;
&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
 '''Dijkstra'''(&amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;)&lt;br /&gt;
   &amp;lt;tex&amp;gt;d \gets \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;d[s] \gets 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
   &amp;lt;tex&amp;gt;S \gets \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
   '''while''' &amp;lt;tex&amp;gt;V \setminus S \neq \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
       '''do''' ''argmin''(&amp;lt;tex&amp;gt;v : v \in V \setminus S, d[v]&amp;lt;/tex&amp;gt;)&lt;br /&gt;
          &amp;lt;tex&amp;gt;S \gets S \cup \{u\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''for''' &amp;lt;tex&amp;gt;(uv) \in E&amp;lt;/tex&amp;gt;&lt;br /&gt;
              '''do''' ''relax''(&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;w&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Обоснование корректности работы ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=После окончания работы алгоритма Дейкстры для всех вершин &amp;lt;tex&amp;gt;u \in V(G)&amp;lt;/tex&amp;gt; будет выполняться равенство &amp;lt;tex&amp;gt;d[u] = \delta(s, u)&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Рассмотрим инвариант основного цикла: в начале каждой итерации для всех вершин &amp;lt;tex&amp;gt;v \in S&amp;lt;/tex&amp;gt; выполняется &amp;lt;tex&amp;gt;d[v] = \delta(s, u)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Инициализация'''. Изначально множество &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; пусто, инвариант выполняется.&lt;br /&gt;
&lt;br /&gt;
'''Сохранение'''. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Оценка сложности ==&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Кормен Т. Х., Лейзерсон Ч. И., Ривест Р. Л., Штайн К.'' '''Алгоритмы: построение и анализ''', 2-е издание. Пер. с англ. — М.:Издательский дом &amp;quot;Вильямс&amp;quot;, 2010. — 1296 с.: ил. — Парал. тит. англ. — ISBN 978-5-8459-0857-5 (рус.)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Кратчайшие пути в графах ]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=5529</id>
		<title>Алгоритм Дейкстры</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B&amp;diff=5529"/>
				<updated>2010-12-06T01:40:20Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Новая страница: «{{В разработке}}  == Алгоритм == В ориентированном взвешанном графе &amp;lt;tex&amp;gt;G = (V, E)&amp;lt;/tex&amp;gt;, вес рёбер кот…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{В разработке}}&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
В ориентированном взвешанном графе &amp;lt;tex&amp;gt;G = (V, E)&amp;lt;/tex&amp;gt;, вес рёбер которого неотрицателен, Алгоритм Дейкстры находит длинну кратчайшего пути из одной вершины &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; до всех остальных.&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
 '''Dijkstra'''(&amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;)&lt;br /&gt;
     &amp;lt;tex&amp;gt;d \gets \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;d[s] \gets 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;S \gets \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
     &amp;lt;tex&amp;gt;Q \gets V[G]&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''while''' &amp;lt;tex&amp;gt;Q \neq \emptyset&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''do''' &amp;lt;tex&amp;gt;u \gets&amp;lt;/tex&amp;gt; ''Extract_Min''(&amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt;)&lt;br /&gt;
            &amp;lt;tex&amp;gt;s \gets S \cup \{u\}&amp;lt;/tex&amp;gt;&lt;br /&gt;
            '''for''' &amp;lt;tex&amp;gt;(uv) \in E&amp;lt;/tex&amp;gt;&lt;br /&gt;
                '''do''' ''Relax''(&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;w&amp;lt;/tex&amp;gt;)&lt;br /&gt;
== Обоснование корректности работы ==&lt;br /&gt;
== Оценка сложности ==&lt;br /&gt;
== литература ==&lt;br /&gt;
* ''Кормен Т. Х., Лейзерсон Ч. И., Ривест Р. Л., Штайн К.'' '''Алгоритмы: построение и анализ''', 2-е издание. Пер. с англ. — М.:Издательский дом &amp;quot;Вильямс&amp;quot;, 2010. — 1296 с.: ил. — Парал. тит. англ. — ISBN 978-5-8459-0857-5 (рус.)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Кратчайшие пути в графах ]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=5434</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=5434"/>
				<updated>2010-12-02T00:27:45Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Обновление тем до состояния на 01.12.2010&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;
&lt;br /&gt;
== Остовные деревья ==&lt;br /&gt;
* [[Лемма о безопасном ребре]]&lt;br /&gt;
* [[Алгоритм Прима]]&lt;br /&gt;
* [[Алгоритм Краскала]]&lt;br /&gt;
* [[Теорема Тарьяна|Теорема Тарьяна (критерий минимальности остовного дерева)]]&lt;br /&gt;
* [[Алгоритм двух китайцев]]&lt;br /&gt;
&lt;br /&gt;
== Задача о паросочетании ==&lt;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>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=4919</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=4919"/>
				<updated>2010-11-18T02:04:00Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Обновление тем до состояния на 17.11.2010&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;
&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>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9A%D1%80%D0%B0%D1%82%D1%87%D0%B0%D0%B9%D1%88%D0%B8%D0%B5_%D0%BF%D1%83%D1%82%D0%B8_%D0%B2_%D0%B3%D1%80%D0%B0%D1%84%D0%B0%D1%85&amp;diff=4769</id>
		<title>Категория:Кратчайшие пути в графах</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9A%D1%80%D0%B0%D1%82%D1%87%D0%B0%D0%B9%D1%88%D0%B8%D0%B5_%D0%BF%D1%83%D1%82%D0%B8_%D0%B2_%D0%B3%D1%80%D0%B0%D1%84%D0%B0%D1%85&amp;diff=4769"/>
				<updated>2010-11-11T02:35:21Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Новая страница: «Категория: Алгоритмы и структуры данных»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория: Алгоритмы и структуры данных]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=4768</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=4768"/>
				<updated>2010-11-11T02:32:38Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Обновление тем до состояния на 10.11.2010&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;
[[Категория: Алгоритмы и структуры данных]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B0_%D0%B2_%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D1%83_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0&amp;diff=4763</id>
		<title>Использование обхода в глубину для поиска цикла</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B0_%D0%B2_%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D1%83_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0&amp;diff=4763"/>
				<updated>2010-11-10T23:00:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Добавлены категории&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Постановка задачи =&lt;br /&gt;
Пусть дан [[ориентированный граф|ориентированный граф]] без петель и кратных рёбер. Требуется проверить наличие [[Основные определения теории графов|цикла]] в этом графе.&lt;br /&gt;
&lt;br /&gt;
Решим эту задачу с помощью [[Обход в глубину, цвета вершин|поиска в глубину]] за O (M).&lt;br /&gt;
&lt;br /&gt;
= Алгоритм =&lt;br /&gt;
&lt;br /&gt;
Произведём серию поисков в глубину в графе. Т.е. из каждой вершины, в которую мы ещё ни разу не приходили, запустим поиск в глубину, который при входе в вершину будет красить её в серый цвет, а при выходе - в чёрный. И если поиск в глубину пытается пойти в серую вершину, то это означает, что мы нашли цикл.&lt;br /&gt;
&lt;br /&gt;
Сам цикл можно восстановить проходом по массиву предков.&lt;br /&gt;
&lt;br /&gt;
= Реализация =&lt;br /&gt;
&lt;br /&gt;
Здесь приведена реализация алгоритма на С++.&lt;br /&gt;
&lt;br /&gt;
===С++===&lt;br /&gt;
&lt;br /&gt;
 vector &amp;lt; vector&amp;lt;int&amp;gt; &amp;gt; graph;&lt;br /&gt;
 vector&amp;lt;int&amp;gt; color;&lt;br /&gt;
 &lt;br /&gt;
 void dfs(int index) &lt;br /&gt;
 {&lt;br /&gt;
     color[index] = 1;      // красит вершину в серый цвет&lt;br /&gt;
     for (vector&amp;lt;int&amp;gt;::iterator i = graph[index].begin(); i != graph[index].end(); ++i)&lt;br /&gt;
     {&lt;br /&gt;
         if ( color[*i] == 0 )&lt;br /&gt;
             dfs(*i);&lt;br /&gt;
         if ( color[*i] == 1 )&lt;br /&gt;
             print();       // вывод ответа   &lt;br /&gt;
     }&lt;br /&gt;
     color[index] = 2;      // красит вершину в черный цвет&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Обход в глубину]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B0_%D0%B2_%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D1%83_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D1%81%D0%B2%D1%8F%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=4762</id>
		<title>Использование обхода в глубину для проверки связности</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B0_%D0%B2_%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D1%83_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D1%81%D0%B2%D1%8F%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=4762"/>
				<updated>2010-11-10T23:00:19Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Добавлены категории&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;
Заведём счётчик количества вершин которые мы ещё не посетили. В стандартной процедуре dfs() будем уменьшать счётчик на единицу перед выходом из процедуры. Запустимся от какой-то вершины нашего графа. По окончании работы процедуры dfs() сравним счётчик с нулём. Если они равны, то мы побывали во всех вершинах графа, а следовательно он связен. Если счётчик отличен от нуля, то в графе несколько компонент связности. Работает алгоритм за O(M + N).&lt;br /&gt;
&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
 string color[];         //изначально массив color заполнен значениями white.&lt;br /&gt;
 int count = n;          //счётчик количества вершин; изначально равен количеству вершин в графе&lt;br /&gt;
 bool if_connected()    &lt;br /&gt;
   dfs(0);               //запуск от  какой-то вершины&lt;br /&gt;
   if(count == 0)&lt;br /&gt;
     return true;&lt;br /&gt;
   else&lt;br /&gt;
     return false;&lt;br /&gt;
 &lt;br /&gt;
 int dfs(int u)         //процедура обхода в глубину. запуск от номера вершины&lt;br /&gt;
     for(v: uv - ребро)&lt;br /&gt;
     if(color[v] == white)&lt;br /&gt;
       dfs(v);&lt;br /&gt;
   color[u] = black;&lt;br /&gt;
   count--;&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Обход в глубину]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%85%D0%BE%D0%B4_%D0%B2_%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D1%83,_%D1%86%D0%B2%D0%B5%D1%82%D0%B0_%D0%B2%D0%B5%D1%80%D1%88%D0%B8%D0%BD&amp;diff=4761</id>
		<title>Обход в глубину, цвета вершин</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%85%D0%BE%D0%B4_%D0%B2_%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D1%83,_%D1%86%D0%B2%D0%B5%D1%82%D0%B0_%D0%B2%D0%B5%D1%80%D1%88%D0%B8%D0%BD&amp;diff=4761"/>
				<updated>2010-11-10T22:59:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Добавлены категории&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Обход в глубину''' (поиск в глубину, англ. Depth-First Search, DFS) - один из основных методов обхода графа, часто используемый для [[Использование обхода в глубину для проверки связности|проверки связности]], поиска [[Использование обхода в глубину для поиска цикла в ориентированном графе|цикла]] и [[Использование обхода в глубину для поиска компонент сильной связности|компонент сильной связности]] и для [[Использование обхода в глубину для топологической сортировки|топологической сортировки]].&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
&lt;br /&gt;
=== Общая идея ===&lt;br /&gt;
Общая идея алгоритма состоит в следующем:  для каждой ''не пройденной'' вершины необходимо найти все ''не пройденные'' смежные вершины и повторить поиск для них.&lt;br /&gt;
&lt;br /&gt;
=== Пошаговое представление ===&lt;br /&gt;
#Выбираем  любую вершину из еще ''не пройденных'', обозначим ее как u.&lt;br /&gt;
#Запускаем процедуру DFS(u)&lt;br /&gt;
#*Помечаем вершину u как ''пройденную''&lt;br /&gt;
#*Для каждой ''не пройденной'' смежной с u вершиной (назовем ее v) запускаем DFS(v)&lt;br /&gt;
#Повторяем шаги 1 и 2, пока все вершины не окажутся ''пройденными''.  &lt;br /&gt;
&lt;br /&gt;
=== Реализация ===&lt;br /&gt;
 vector&amp;lt;bool&amp;gt; visited;                       //вектор для хранения информации о ''пройденных'' и ''не пройденных'' вершинах&lt;br /&gt;
 &lt;br /&gt;
 void dfs(int u)              &lt;br /&gt;
 {&lt;br /&gt;
     visited[u] = true;                      //помечаем вершину как пройденную&lt;br /&gt;
     for (v таких, что (u, v) - ребро в G)   //проходим по смежным с u вершинам&lt;br /&gt;
         if (!visited[v])                    //проверяем, не находились ли мы ранее в выбранной вершине&lt;br /&gt;
             dfs(v);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
     ...                                     //задание графа G с количеством вершин n.&lt;br /&gt;
     visited.assign(n, false);               //в начале все вершины в графе ''не пройденные''&lt;br /&gt;
     for (int i = 0; i &amp;lt; n; ++i)             //проходим по всем вершинам графа...&lt;br /&gt;
         if (!visited[i])                    //...не забыв проверить, были мы уже в очередной вершине или нет&lt;br /&gt;
             dfs(i);&lt;br /&gt;
     return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Цвета вершин ==&lt;br /&gt;
Зачастую, простой информации &amp;quot;были/не были в вершине&amp;quot; не хватает для конкретных целей.&amp;lt;br /&amp;gt; &lt;br /&gt;
Поэтому в процессе алгоритма вершинам задают некоторые цвета:&amp;lt;br /&amp;gt;&lt;br /&gt;
:если вершина ''белая'', значит, мы в ней еще не были, вершина ''не пройдена'';&amp;lt;br /&amp;gt;&lt;br /&gt;
:''серая'' - вершина ''проходится'' в текущей процедуре DFS;&amp;lt;br /&amp;gt;&lt;br /&gt;
:''черная'' - вершина ''пройдена'', все итерации DFS от нее завершены.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Такие &amp;quot;метки&amp;quot; в основном используются при [[Использование обхода в глубину для поиска цикла в ориентированном графе|поиске цикла]].&lt;br /&gt;
&lt;br /&gt;
=== Реализация ===&lt;br /&gt;
Отличие реализации с цветами от предыдущей лишь в массиве visited, который мы назовем теперь color, и дополнительной ''черной'' &amp;quot;метки&amp;quot;. При этом цвета вершин будут заданы следующим образом: ''белый'' - 0, ''серый'' - 1, ''черный'' - 2. Все отличия помечены '''жирным''' шрифтом.&lt;br /&gt;
&lt;br /&gt;
 vector&amp;lt;'''int'''&amp;gt; '''color''';                          //вектор для хранения информации '''о цвете''' вершин&lt;br /&gt;
 &lt;br /&gt;
 void dfs(int u)              &lt;br /&gt;
 {&lt;br /&gt;
     '''color[u] = 1;                           //раскрашиваем вершину в ''серый'' цвет'''&lt;br /&gt;
     for (v таких, что (u, v) - ребро в G)   //проходим по смежным с u вершинам&lt;br /&gt;
         if (!color[v])                      //проверяем, не находились ли мы ранее в выбранной вершине, '''условие не требует изменений,''' &lt;br /&gt;
             dfs(v);                         '''//поскольку мы считаем вершину &amp;quot;не пройденной&amp;quot; только тогда, когда она ''белого'' цвета, т.е. когда color[v] = 0'''&lt;br /&gt;
     '''color[u] = 2;                           //раскрашиваем вершину в ''черный'' цвет'''&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
     ...                                     //задание графа G с количеством вершин n.&lt;br /&gt;
     '''color.assign(n, 0);'''                     //в начале все вершины в графе ''не пройденные'', '''т.е. ''белые''.'''&lt;br /&gt;
     for (int i = 0; i &amp;lt; n; ++i)             //проходим по всем вершинам графа...&lt;br /&gt;
         if (!visited[i])                    //...не забыв проверить, были мы уже в очередной вершине или нет&lt;br /&gt;
             dfs(i);&lt;br /&gt;
     return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Обход в глубину]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D0%B8_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2&amp;diff=4480</id>
		<title>Основные определения теории графов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D0%B8_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2&amp;diff=4480"/>
				<updated>2010-10-28T02:14:27Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: корректировка формул&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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; где V - конечное множество вершин, а &amp;lt;tex&amp;gt; E \subset V \times V &amp;lt;/tex&amp;gt; - множество рёбер.&lt;br /&gt;
}}&lt;br /&gt;
В неориентированном графе &amp;lt;tex&amp;gt;(v, u) = (u, v)&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; (v, u) \in E &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
====Для ориентированного графа====&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ребром называют упорядоченную пару вершин &amp;lt;tex&amp;gt; (v, u) \in E &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Степень вершины==&lt;br /&gt;
====Для неориентированного графа====&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Степенью вершины v&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; называется число рёбер инцидентных &amp;lt;tex&amp;gt;v_i&amp;lt;/tex&amp;gt;, и обозначается deg &amp;lt;tex&amp;gt;v_i&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
Говорят, что ребро &amp;lt;tex&amp;gt; e = (u, v) &amp;lt;/tex&amp;gt; инцидентно вершине a, если &amp;lt;tex&amp;gt;u = a&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;v = a&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Для ориентированного графа====&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Полустепенью входа вершины v&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; называется число рёбер, входящих в эту вершину, и обозначается &amp;lt;tex&amp;gt;deg^+&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;v_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Полустепенью выхода вершины &amp;lt;tex&amp;gt;v_i&amp;lt;/tex&amp;gt; называется число рёбер, выходящих из этой вершину, и обозначается &amp;lt;tex&amp;gt;deg^-&amp;lt;/tex&amp;gt; v&amp;lt;sub&amp;gt;i&amp;lt;/sub&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;e=\{v,v\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
По умолчанию петли в неориентированном графе запрещены.&lt;br /&gt;
&lt;br /&gt;
==Путь==&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Путём в графе называется последовательность вида &amp;lt;tex&amp;gt;v_0 e_1 v_1 ... e_k v_k&amp;lt;/tex&amp;gt;;  где &amp;lt;tex&amp;gt;e_i = (v_{i-1}; v_i)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Цикл==&lt;br /&gt;
====Для ориентированного графа====&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Циклом называется путь у которого &amp;lt;tex&amp;gt;v_0 = v_k; k &amp;gt; 0&amp;lt;/tex&amp;gt;, а так же &amp;lt;tex&amp;gt;v_0 e_1 v_1 ... e_k v_k \sim u_0 f_1 u_1 ... f_k u_k&amp;lt;/tex&amp;gt;; где &amp;lt;tex&amp;gt;u_i = v_{(i+j) \pmod k}; f_i = e_{(i+j) \pmod k}; i = 1..k&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;v_0 = v_k&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9E%D0%B1%D1%85%D0%BE%D0%B4_%D0%B2_%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D1%83&amp;diff=4475</id>
		<title>Категория:Обход в глубину</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9E%D0%B1%D1%85%D0%BE%D0%B4_%D0%B2_%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D1%83&amp;diff=4475"/>
				<updated>2010-10-27T22:02:02Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Новая страница: «Категория: Алгоритмы и структуры данных»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория: Алгоритмы и структуры данных]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A0%D0%B0%D1%81%D0%BA%D1%80%D0%B0%D1%81%D0%BA%D0%B8_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2&amp;diff=4474</id>
		<title>Категория:Раскраски графов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A0%D0%B0%D1%81%D0%BA%D1%80%D0%B0%D1%81%D0%BA%D0%B8_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2&amp;diff=4474"/>
				<updated>2010-10-27T22:00:45Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Новая страница: «Категория: Алгоритмы и структуры данных»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория: Алгоритмы и структуры данных]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=4471</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=4471"/>
				<updated>2010-10-27T21:37:29Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Обновление тем до состояния на 27.10.2010&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D1%80%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%87%D0%BB%D0%B5%D0%BD&amp;diff=4343</id>
		<title>Хроматический многочлен</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D1%80%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%87%D0%BB%D0%B5%D0%BD&amp;diff=4343"/>
				<updated>2010-10-23T03:06:38Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Добавлены категории&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Хроматический многочлен полного графа ==&lt;br /&gt;
&amp;lt;tex&amp;gt;P(K_{n},x)=x(x-1)...(x-n+1)=x^{\underline{n}}&amp;lt;/tex&amp;gt;, так как первую вершину полного графа &amp;lt;tex&amp;gt;K_{n}&amp;lt;/tex&amp;gt; можно окрасить в любой из &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; цветов, вторую - в любой из оставшихся &amp;lt;tex&amp;gt;x-1&amp;lt;/tex&amp;gt; цветов и т. д. Очевидно, что если &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; меньше &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, то и многочлен равен &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;, потому что один из его множителей &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Примечание. В некоторых источниках &amp;lt;tex&amp;gt;x^{\underline{n}}&amp;lt;/tex&amp;gt; (&amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;-убывающей) обозначают &amp;lt;tex&amp;gt;x^{(n)}&amp;lt;/tex&amp;gt;. Это не очень удобно, так как легко спутать с &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;-ой производной.&lt;br /&gt;
&lt;br /&gt;
== Хроматический многочлен пустого графа ==&lt;br /&gt;
&amp;lt;tex&amp;gt;P(O_{n},x)=x^{n}&amp;lt;/tex&amp;gt;, так как каждую из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; вершин нулевого графа &amp;lt;tex&amp;gt;O_{n}&amp;lt;/tex&amp;gt; можно независимо окрасить в любой из &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; цветов.&amp;lt;br /&amp;gt;&lt;br /&gt;
Примечание. Нулевой граф &amp;lt;tex&amp;gt;O_{n}&amp;lt;/tex&amp;gt; также можно обозначать &amp;lt;tex&amp;gt;\overline{K_{n}}&amp;lt;/tex&amp;gt; (дополнительный граф для полного графа &amp;lt;tex&amp;gt;K_{n}&amp;lt;/tex&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Хроматический многочлен дерева ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=&lt;br /&gt;
хроматический многочлен дерева&lt;br /&gt;
|statement=&lt;br /&gt;
Граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; с &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; вершинами является деревом тогда и только тогда, когда &amp;lt;tex&amp;gt;P(G,x)=x(x-1)^{n-1}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Сначала покажем, что хроматический многочлен любого дерева &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; с &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; вершинами есть &amp;lt;tex&amp;gt;x(x-1)^{n-1}&amp;lt;/tex&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Доказательство индукцией по числу &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;. Для &amp;lt;tex&amp;gt;n=1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;n=2&amp;lt;/tex&amp;gt; результат очевиден. Предположим, что &amp;lt;tex&amp;gt;P(T',x)=x(x-1)^{n-2}&amp;lt;/tex&amp;gt; для любого дерева &amp;lt;tex&amp;gt;T'&amp;lt;/tex&amp;gt; с количеством вершин равным &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt; - ребро дерева &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; является висячей вершиной. Хроматический многочлен дерева &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; без ребра &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt; равен &amp;lt;tex&amp;gt;P(T/uv,x)=x(x-1)^{n-2}&amp;lt;/tex&amp;gt; по нашему предположению. Вершину &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; можно окрасить &amp;lt;tex&amp;gt;x-1&amp;lt;/tex&amp;gt; способом, так как её цвет должен только лишь отличаться от цвета вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Итого: &amp;lt;tex&amp;gt;P(T,x)=(x-1)P(T/uv,x)=x(x-1)^{n-1}&amp;lt;/tex&amp;gt;.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Обратно, пусть &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; - граф, у которого &amp;lt;tex&amp;gt;P(G,x)=x(x-1)^{n-1}&amp;lt;/tex&amp;gt;. Тогда верны 2 следующих утверждения:&amp;lt;br /&amp;gt;&lt;br /&gt;
1. Граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; связен, потому что если было бы 2 компоненты связности (или больше), то &amp;lt;tex&amp;gt;P(G,x)&amp;lt;/tex&amp;gt; делился бы на &amp;lt;tex&amp;gt;x^2&amp;lt;/tex&amp;gt; без остатка.&amp;lt;br /&amp;gt;&lt;br /&gt;
2. В графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; количество рёбер равно &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt;, так как по теореме о коэффициентах хроматического многочлена, количество рёбер в графе соответствует коэффициенту при &amp;lt;tex&amp;gt;x^{n-1}&amp;lt;/tex&amp;gt;, взятому со знаком минус. В нашем случае, этот коэффициент удобно искать, используя бином Ньютона:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;tex&amp;gt;{P(G,x)=x(x-1)^{n-1}=x(x^{n-1}-\begin{pmatrix}n-1\\1\end{pmatrix}x^{n-2}+\begin{pmatrix}n-1\\2\end{pmatrix}x^{n-3}-...+(-1)^{n-1})=x^{n}-(n-1)x^{n-1}+...+(-1)^{n-1}x}&amp;lt;/tex&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Из этих двух утверждений (связность и &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; ребро) следует, что граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; является деревом (см. [[Дерево, эквивалентные определения]], теорема, утверждения 1 и 3).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Коэффициенты хроматического многочлена ==&lt;br /&gt;
== Рекуррентные формулы для хроматических многочленов ==&lt;br /&gt;
== См. также ==&lt;br /&gt;
== Литература ==&lt;br /&gt;
1. Асанов М. О., Баранский В. А., Расин В. В. - Дискретная математика: Графы, матроиды, алгоритмы: Учебное пособие. 2-е изд., испр. и доп. - СПб.: Издательство &amp;quot;Лань&amp;quot;, 2010. - 368 с.: ил. - (Учебники для вузов. Специальная литература). '''ISBN 978-5-8114-1068-2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Харари Ф. - Теория графов: Изд. 4-е. - М.: Книжный дом &amp;quot;ЛИБРОКОМ&amp;quot;, 2009. - 296 с. '''ISBN 978-5-397-00622-4'''&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Раскраски графов]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D1%80%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%87%D0%BB%D0%B5%D0%BD&amp;diff=4317</id>
		<title>Хроматический многочлен</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D1%80%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%87%D0%BB%D0%B5%D0%BD&amp;diff=4317"/>
				<updated>2010-10-21T20:11:12Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Новая страница: «{{Определение |definition= }}  == Хроматический многочлен полного графа == == Хроматический многочл…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Хроматический многочлен полного графа ==&lt;br /&gt;
== Хроматический многочлен пустого графа ==&lt;br /&gt;
== Хроматический многочлен дерева ==&lt;br /&gt;
== Коэффициенты хроматического многочлена ==&lt;br /&gt;
== Рекуррентные формулы для хроматических многочленов ==&lt;br /&gt;
== См. также ==&lt;br /&gt;
== Литература ==&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=4316</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=4316"/>
				<updated>2010-10-21T20:04:45Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: /* Раскраски графов */&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=4315</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=4315"/>
				<updated>2010-10-21T20:02:58Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: /* Раскраски графов */&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0_%D0%B3%D1%80%D0%B0%D1%84%D0%B0_%D1%81_%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D0%BC%D0%B8_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%B0%D0%BC%D0%B8_%D1%80%D1%91%D0%B1%D0%B5%D1%80%D0%BD%D0%BE%D0%B9_%D0%B4%D0%B2%D1%83%D1%81%D0%B2%D1%8F%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=4314</id>
		<title>Укладка графа с планарными компонентами рёберной двусвязности</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0_%D0%B3%D1%80%D0%B0%D1%84%D0%B0_%D1%81_%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D0%BC%D0%B8_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%B0%D0%BC%D0%B8_%D1%80%D1%91%D0%B1%D0%B5%D1%80%D0%BD%D0%BE%D0%B9_%D0%B4%D0%B2%D1%83%D1%81%D0%B2%D1%8F%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D0%B8&amp;diff=4314"/>
				<updated>2010-10-21T20:00:00Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|about=об укладке графа с планарными компонентами реберной двусвязности&lt;br /&gt;
|statement=Если [[Отношение реберной двусвязности|компоненты реберной двусвязности]] (к.р.д.) [[Основные определения: граф, ребро, вершина, степень, петля, путь, цикл|графа]] &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; [[Укладка графа на плоскости|планарны]], то и сам граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; планарен.&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Докажем для начала ряд вспомогательных лемм.&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=l1&lt;br /&gt;
|about=I&lt;br /&gt;
|statement=Граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; планарен тогда и только тогда, когда он обладает укладкой на сфере&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим укладку графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; на сфере. Возьмем на сфере точку &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;, не лежащую на ребре, и не вершину. Выберем на сфере точку &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; противолежащую &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; (&amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; лежат на одном диаметре и при этом не совпадают). Проведем через точку &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; касательную к сфере плоскость. Спроектируем на плоскость все точки сферы, проведя все возможные лучи из точки &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; через точки сферы до пересечения с плоскостью. Ясно, что эта проекция дает укладку графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; на плоскости.&lt;br /&gt;
&lt;br /&gt;
Обратно рассмотрим укладку графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; на плоскости. Возьмем сферу, которая касается плоскости, и обозначим точку касания за &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;. Противолежащую &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; точку на сфере обозначим за &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;. Проведем все возможные лучи от точек плоскости через точки сферы до точки &amp;lt;tex&amp;gt;N&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; на сфере.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|id=l2&lt;br /&gt;
|about=II&lt;br /&gt;
|statement=Для любого выделенного ребра планарного графа найдется такая укладка графа на плоскости, что выделенное ребро будет лежать на границе внешней грани.&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Возьмем укладку графа на сфере. Перенесем эту укладку графа на сфере в укладку на плоскости так как это сделано в [[#l1|лемме I]], за точку &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; возьмем точку на сфере, не лежащую на ребре, не являющуюся вершиной и принадлежащую грани на границе которой лежит выделенное ребро. Полученная укладка на плоскости обладает нужным нам свойством.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Докажем утверждение теоремы для одной из компонент связности графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Ясно, что имея укладки на плоскости каждой из компонент связности графа, мы можем получить укладку на плоскости и всего графа.&lt;br /&gt;
Итак пусть граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; связен. Рассмотрим связный подграф &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; графа к.р.д. графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Из [[Граф компонент реберной двусвязности|леммы]] и из связности &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; получаем, что &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;  &amp;amp;mdash; [[Дерево, эквивалентные определения|дерево]]. &lt;br /&gt;
&lt;br /&gt;
Докажем индукцией по числу вершин в графе &amp;lt;tex&amp;gt;T&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;G&amp;lt;/tex&amp;gt; принадлежащих графу &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; планарен (далее будем говорить, что &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; соответствует &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
'''База индукции.''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #000; width:90%; margin: 10px; padding:4px; background-color: #fdfdfd; padding-left:10px;&amp;quot;&amp;gt;&lt;br /&gt;
Если &amp;lt;tex&amp;gt;|VT| = 1&amp;lt;/tex&amp;gt;, то граф &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; - тривиальный. Его единственная вершина - это к.р.д. графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, которая по утверждению теоремы - планарна.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Индукционный переход.''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #000; width:90%; margin: 10px; padding:4px; background-color: #fdfdfd; padding-left:10px;&amp;quot;&amp;gt;&lt;br /&gt;
Пусть утверждение верно для &amp;lt;tex&amp;gt;|VT| &amp;lt; m&amp;lt;/tex&amp;gt;. Рассмотрим &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;, для которого &amp;lt;tex&amp;gt;|VT| = m &amp;gt; 1&amp;lt;/tex&amp;gt;, и соответствующий &amp;lt;tex&amp;gt;T&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;G'&amp;lt;/tex&amp;gt; планарен. &lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; &amp;amp;mdash; к.р.д. графа &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; являющийся висячей вершиной дерева &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;, a &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; &amp;amp;mdash; мост в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; инцидентный &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;G_1&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;G_2&amp;lt;/tex&amp;gt; графа &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, соответствующий дереву &amp;lt;tex&amp;gt;T\backslash \{G_1\}&amp;lt;/tex&amp;gt;. Поскольку &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; &amp;amp;mdash; висячая вершина &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;T\backslash \{G_1\}&amp;lt;/tex&amp;gt; связен, и, очевидно, также как и &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; является подграфом графа к.р.д. &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;. Итак &amp;lt;tex&amp;gt;G_2&amp;lt;/tex&amp;gt; планарен по предположению индукции, т.к. &amp;lt;tex&amp;gt;|V(T\backslash \{u\})| = |VT| - 1 = m - 1 &amp;lt; m&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Из определения ребер дерева к.р.д. получаем, что графы &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;G_2&amp;lt;/tex&amp;gt; соединены в графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; единственным мостом &amp;lt;tex&amp;gt;e \in G'&amp;lt;/tex&amp;gt; инцидентным блоку &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; в дереве &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;. Поскольку &amp;lt;tex&amp;gt;T = \{G_1\}\cup e\cup \{G_2\}&amp;lt;/tex&amp;gt;, то и &amp;lt;tex&amp;gt;G' = \{G_1\}\cup e\cup \{G_2\}&amp;lt;/tex&amp;gt;. Покажем как из укладок &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;G_2&amp;lt;/tex&amp;gt; получить укладку &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Уложим &amp;lt;tex&amp;gt;G_2&amp;lt;/tex&amp;gt; на сфере и уложим &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; на плоскости так, чтобы ребро &amp;lt;tex&amp;gt;e_1 \in G_1&amp;lt;/tex&amp;gt; смежное с &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; в G' (если таковое имеется) оказалось на границе внешней грани (по [[#l2|лемме II]] это возможно). Если такого ребра &amp;lt;tex&amp;gt;e_1&amp;lt;/tex&amp;gt; не существует, значит к.р.д. &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; &amp;amp;mdash; тривиальный граф. В таком случае возьмем любую укладку &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; на плоскости. Обозначим за &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; вершину из &amp;lt;tex&amp;gt;G_2&amp;lt;/tex&amp;gt; инцедентную &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt;. Сожмем часть плоскости, содержащую укладку &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt;, так, чтобы она вмещалась в одну из граней укладки &amp;lt;tex&amp;gt;G_2&amp;lt;/tex&amp;gt; смежную с &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt;. Проведем жорднанову кривую, соответствующую ребру &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt;, от вершины &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; к инцидентоной &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; вершине графа &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; так, чтобы она не пересекалась с укладками &amp;lt;tex&amp;gt;G_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;G_2&amp;lt;/tex&amp;gt;. Мы получили укладку графа &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; на сфере, а значит (по [[#l1|лемме I]]) &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; планарен, следовательно предположение индукции верно.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Рассматривая в качестве &amp;lt;tex&amp;gt;T&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; - планарен.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Замечание.''' Доказательство теоремы непосредственно задает способ укладки графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Источники==&lt;br /&gt;
&lt;br /&gt;
Асанов М., Баранский В., Расин В. - Дискретная математика: Графы, матроиды, алгоритмы — Ижевск: ННЦ &amp;quot;Регулярная и хаотическая динамика&amp;quot;, 2001.&lt;br /&gt;
&lt;br /&gt;
H. Whitney - Non-separable and planar graphs - Trans. Amer. Math. Soc., 1932.&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=4313</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=4313"/>
				<updated>2010-10-21T19:58:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: /* Раскраски графов */  объединение хроматических многочленов разных графов&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9F%D0%BE%D0%BD%D1%82%D1%80%D1%8F%D0%B3%D0%B8%D0%BD%D0%B0-%D0%9A%D1%83%D1%80%D0%B0%D1%82%D0%BE%D0%B2%D1%81%D0%BA%D0%BE%D0%B3%D0%BE&amp;diff=4266</id>
		<title>Теорема Понтрягина-Куратовского</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9F%D0%BE%D0%BD%D1%82%D1%80%D1%8F%D0%B3%D0%B8%D0%BD%D0%B0-%D0%9A%D1%83%D1%80%D0%B0%D1%82%D0%BE%D0%B2%D1%81%D0%BA%D0%BE%D0%B3%D0%BE&amp;diff=4266"/>
				<updated>2010-10-21T06:49:46Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Добавлены категории, замена некоторых дефисов длинными тире&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement =&lt;br /&gt;
Граф планарен тогда и только тогда, когда он не содержит подграфов, гомеоморфных &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;
|proof =&lt;br /&gt;
=== Необходимость ===&lt;br /&gt;
Необходимость условия очевидна.&lt;br /&gt;
=== Достаточность ===&lt;br /&gt;
От противного: пусть существует непланарный граф, который не содержит подграфов, гомеоморфных &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;. Пусть &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; — такой граф с наименьшим возможным числом рёбер, не содержащий изолированных вершин. &lt;br /&gt;
==== G связен ====&lt;br /&gt;
Если &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;  не связен, то его компоненты связности планарны и, следовательно, сам граф &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; планарен.&lt;br /&gt;
==== G — обыкновенный граф ====&lt;br /&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; G - e &amp;lt;/tex&amp;gt; планарен. Добавляя ребро &amp;lt;tex&amp;gt; e &amp;lt;/tex&amp;gt; к графу &amp;lt;tex&amp;gt; G - e &amp;lt;/tex&amp;gt; получим, что граф &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; он планарен.&lt;br /&gt;
==== G — блок ====&lt;br /&gt;
Пусть, от противного, в графе есть точка сочленения &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt;. Через &amp;lt;tex&amp;gt; G_1 &amp;lt;/tex&amp;gt; обозначим подграф графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, порождённый вершинами одной из компонент связности графа &amp;lt;tex&amp;gt; G - v&amp;lt;/tex&amp;gt; и вершинной &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt;, а через &lt;br /&gt;
&amp;lt;tex&amp;gt; G_2 &amp;lt;/tex&amp;gt; подграф графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, порождённый вершинами остальных компонент связности графа &amp;lt;tex&amp;gt; G - v &amp;lt;/tex&amp;gt; и вершиной &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt;. (рис. 1)&lt;br /&gt;
[[Файл:p-k.1.png|thumb|right|рис. 1]]&lt;br /&gt;
Возьмём укладку графа &amp;lt;tex&amp;gt; G_1 &amp;lt;/tex&amp;gt; на плоскости такую, что вершина &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; лежит на границе верхней грани. Затем во внешней грани графа &amp;lt;tex&amp;gt; G_1 &amp;lt;/tex&amp;gt; возьмём укладку графа &amp;lt;tex&amp;gt; G_2 &amp;lt;/tex&amp;gt; такую, что вершина &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; будет представлена на плоскости в двух экземплярах. (рис. 2)&lt;br /&gt;
[[Файл:p-k.2.png|thumb|right|рис. 2]]&lt;br /&gt;
Соединим два экземпляра вершины &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; пучком жордановых линий, не допуская лишних пересечений с укладками графов &amp;lt;tex&amp;gt; G_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; G_2 &amp;lt;/tex&amp;gt;, состоящим из такого количества линий, какова степень вершины &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; в графе &amp;lt;tex&amp;gt; G_2 &amp;lt;/tex&amp;gt;. Далее отбросим вхождение вершины &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; в граф &amp;lt;tex&amp;gt; G_2 &amp;lt;/tex&amp;gt;, заменяя инцидентные её рёбра на жордановы линии, полученные из линий указанного пучка и рёбер (рис. 3)&lt;br /&gt;
[[Файл:p-k.3.png|thumb|right|рис. 3]]&lt;br /&gt;
Таким образом мы получили укладку графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; на плоскости, что невозможно.&lt;br /&gt;
&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; e = ab &amp;lt;/tex&amp;gt; — произвольное ребро графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt; G' = G - e &amp;lt;/tex&amp;gt;. &lt;br /&gt;
# граф &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt; планарен в силу минимальности графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
# граф &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt; связен в силу отсутствия в графе &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; мостов.&lt;br /&gt;
&lt;br /&gt;
==== В G' существует цикл, содержащий вершины a и b  ====&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; a &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b &amp;lt;/tex&amp;gt; лежат в одном блоке &amp;lt;tex&amp;gt; B &amp;lt;/tex&amp;gt; графа &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt; |VB| &amp;gt;= 3 &amp;lt;/tex&amp;gt;, то существует цикл графа G', содержащий вершины &amp;lt;tex&amp;gt; a &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b &amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Если &amp;lt;tex&amp;gt; |VB| = 2 &amp;lt;/tex&amp;gt;, то в &amp;lt;tex&amp;gt; B &amp;lt;/tex&amp;gt; имеется ребро &amp;lt;tex&amp;gt; e' = ab &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; e' &amp;lt;/tex&amp;gt;, что невозможно.&lt;br /&gt;
# Если вершины &amp;lt;tex&amp;gt; a &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b &amp;lt;/tex&amp;gt; лежат в разных блоках графа &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, что существует точка сочленения &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt;, принадлежащая любой простой (a, b)-цепи графа &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;. Через &amp;lt;tex&amp;gt; G'_1 &amp;lt;/tex&amp;gt; обозначим подграф графа &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, порождённый вершиной &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; и вершинами компоненты связности графа &amp;lt;tex&amp;gt; G' - v &amp;lt;/tex&amp;gt;, содержащей &amp;lt;tex&amp;gt; a &amp;lt;/tex&amp;gt;, а через &amp;lt;tex&amp;gt; G'_2 &amp;lt;/tex&amp;gt; - подграф графа &amp;lt;tex&amp;gt; G' &amp;lt;/tex&amp;gt;, порождённый вершиной &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; и вершинами остальных компонент связности графа &amp;lt;tEx&amp;gt; G' - v &amp;lt;/tex&amp;gt; (в этом множестве лежит вершина &amp;lt;tex&amp;gt; b &amp;lt;/tex&amp;gt;). Пусть &amp;lt;tex&amp;gt; G''_1 = G'_1 + e_1 &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; e_1 = vb &amp;lt;/tex&amp;gt; — новое ребро (рис. 4)&lt;br /&gt;
[[Файл:p-k.4.png|thumb|right|рис. 4]]&lt;br /&gt;
Заметим, что в графе &amp;lt;tex&amp;gt; G''_1 &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; G''_1 &amp;lt;/tex&amp;gt; есть ребро &amp;lt;tex&amp;gt; e_1 &amp;lt;/tex&amp;gt; и часть рёбер из графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; осталась в графе &amp;lt;tex&amp;gt; G''_2 &amp;lt;/tex&amp;gt;. Аналогично, в графе &amp;lt;tex&amp;gt; G''_2 &amp;lt;/tex&amp;gt; рёбер меньше, чем в графе &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Покажем, далее, что в графе &amp;lt;tex&amp;gt; G''_1 &amp;lt;/tex&amp;gt; и, аналогично, в графе &amp;lt;tex&amp;gt; G''_2 &amp;lt;/tex&amp;gt; нет подграфов, гомеоморфных &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;. Действительно, если в &amp;lt;tex&amp;gt; G''_1 &amp;lt;/tex&amp;gt; имеется такой подграф, то в этом подграфе присутствует вновь присоединенное ребро, но это ребро &amp;lt;tex&amp;gt; e_1 &amp;lt;/tex&amp;gt; можно заменить на цепь &amp;lt;br/&amp;gt;&lt;br /&gt;
a -&amp;gt; b -&amp;gt; ... -&amp;gt; v, &amp;lt;br/&amp;gt; взяв некоторую простую (b, v)-цепь &amp;lt;tex&amp;gt; P_2 &amp;lt;/tex&amp;gt; в графе &amp;lt;tex&amp;gt; G'_2 &amp;lt;/tex&amp;gt;. Следовательно, мы получили подграф в &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;, гомеоморфный &amp;lt;tex&amp;gt; K_5 &amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt; K_{3,3} &amp;lt;/tex&amp;gt;, что невозможно. &amp;lt;br/&amp;gt;  &lt;br /&gt;
Теперь в силу минимальности графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; графы &amp;lt;tex&amp;gt; G''_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; G''_2 &amp;lt;/tex&amp;gt; планарны. Возьмем укладку графа &amp;lt;tex&amp;gt; G''_1 &amp;lt;/tex&amp;gt; на плоскости такую, что ребро &amp;lt;tex&amp;gt; e_1 = av &amp;lt;/tex&amp;gt; лежит на границе внешней грани. Во внешней грани графа &amp;lt;tex&amp;gt; G''_1 &amp;lt;/tex&amp;gt; возьмем укладку графа &amp;lt;tex&amp;gt; G''_2 &amp;lt;/tex&amp;gt; такую, что ребро &amp;lt;tex&amp;gt; e_2 = vb &amp;lt;/tex&amp;gt; лежит па границе внешпей грани (рис. 5). &lt;br /&gt;
[[Файл:p-k.5.png|thumb|right|рис. 5]]&lt;br /&gt;
Отметим, что опять вершина &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; представлена на плоскости в двух экземплярах. Очевидно, добавление ребра &amp;lt;tex&amp;gt; e = ab &amp;lt;/tex&amp;gt; не меняет планарности графа &amp;lt;tex&amp;gt; G''_1 U G''_2&amp;lt;/tex&amp;gt;. Склеим оба вхождения вершины &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; точно так же, как это мы сделали в предыдущем пункте доказательства (рис. 6). &lt;br /&gt;
[[Файл:p-k.6.png|thumb|right|рис. 6]]&lt;br /&gt;
Сотрем затем ранее добавленные ребра &amp;lt;tex&amp;gt; e_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; e_2 &amp;lt;/tex&amp;gt;. В результате мы получим укладку графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt; на плоскости, что невозможно. Утверждение доказано.&lt;br /&gt;
&lt;br /&gt;
====Вспомогательные определения и утверждение об одновременно разделяющейся внутренней части====&lt;br /&gt;
Среди всех укладок графа &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; на плоскости и среди всех циклов &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, содержащих &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt;, зафиксируем такую укладку и такой цикл, что внутри области, ограниченной циклом &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, лежит максимальное возможное число граней графа &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;. Зафиксируем один из обходов по циклу &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; (на рисунках будем рассматривать обход по часовой стрелке по циклу &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;). Для вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; через &amp;lt;tex&amp;gt;C[u,v]&amp;lt;/tex&amp;gt; будем обозначать простую &amp;lt;tex&amp;gt;(u,v)&amp;lt;/tex&amp;gt;-цепь, идущую по циклу &amp;lt;tex&amp;gt;C&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;C[u,v] \ne C[v,u]&amp;lt;/tex&amp;gt;. Положим &amp;lt;tex&amp;gt;C(u,v) = C[u,v] \setminus&amp;lt;/tex&amp;gt; {&amp;lt;tex&amp;gt;u,v&amp;lt;/tex&amp;gt;}, т.е. &amp;lt;tex&amp;gt;C(u,v)&amp;lt;/tex&amp;gt; получено из &amp;lt;tex&amp;gt;C[u,v]&amp;lt;/tex&amp;gt; отбрасыванием вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Внешним графом (относительно цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;) будем называть подграф графа &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, порождённый всеми вершинами графа &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, лежащими снаружи от цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&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'&amp;lt;/tex&amp;gt;, соединяющие её с вершинами цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Внешними частями будем называть внешние компоненты вместе со всеми рёбрами, соединяющими компоненту с вершинами цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, и инцидентными им вершинами (см. рис. 7), либо рёбра графа &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, лежащие снаружи от цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; и соединяющие две вершины из &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, вместе с инцидентными такому ребру вершинами (см. рис. 8).&lt;br /&gt;
}}&lt;br /&gt;
[[Файл:pict-1.jpg|center|200px|рис. 7]][[Файл:pict-2.jpg|center|125px|рис. 8]]&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Внутренним графом (относительно цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;) будем называть подграф графа &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, порождённый всеми вершинами графа &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, лежащими внутри цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&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'&amp;lt;/tex&amp;gt;, соединяющие её с вершинами цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Внутренними частями будем называть внутренние компоненты вместе со всеми рёбрами, соединяющими компоненту с вершинами цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, и инцидентными им вершинами, либо рёбра графа &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, лежащие внутри цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; и соединяющие две вершины из &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, вместе с инцидентными такому ребру вершинами&lt;br /&gt;
}}&lt;br /&gt;
Будем говорить, что внешняя (внутренняя) часть ''встречает цикл'' &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; в своих точках прикрепления к циклу &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;.&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement =&lt;br /&gt;
1) Любая внешняя часть встречает цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; точно в двух точках, одна из которых лежит в &amp;lt;tex&amp;gt;C(a,b)&amp;lt;/tex&amp;gt;, а другая — в &amp;lt;tex&amp;gt;C(b,a)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof = &lt;br /&gt;
Если внешняя часть встречает цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; точно в одной точке &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; является точкой сочленения графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, что невозможно (см. рис. 9).&lt;br /&gt;
[[Файл:pict-3.jpg|center|рис. 9]]&lt;br /&gt;
Таким образом, внешняя часть встречает цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; не менее чем в двух точках. Если внешняя часть встречает цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; в двух точках из &amp;lt;tex&amp;gt;C[a,b]&amp;lt;/tex&amp;gt; (случай &amp;lt;tex&amp;gt;C[b,a]&amp;lt;/tex&amp;gt; рассматривается аналогично), то в &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt; имеется цикл, содержащий внутри себя больше граней, чем цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, и проходящий через &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt;, что невозможно (см. рис. 10).&lt;br /&gt;
[[Файл:pict-4.jpg|center|рис. 10]]&lt;br /&gt;
Итого, внешняя часть встречает цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; хотя бы в двух точках, никакие две из которых не лежат в &amp;lt;tex&amp;gt;C[a,b]&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;C[b,a]&amp;lt;/tex&amp;gt;. То есть ровно одна лежит в &amp;lt;tex&amp;gt;C[a,b]&amp;lt;/tex&amp;gt; и ровно одна - в &amp;lt;tex&amp;gt;C[b,a]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
Ввиду леммы 1 будем говорить, что любая внешняя часть является &amp;lt;tex&amp;gt;(a,b)&amp;lt;/tex&amp;gt;-разделяющей частью, поскольку она встречает и &amp;lt;tex&amp;gt;C(a,b)&amp;lt;/tex&amp;gt;, и &amp;lt;tex&amp;gt;C(b,a)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}} &lt;br /&gt;
Аналогично можно ввести понятие &amp;lt;tex&amp;gt;(a,b)&amp;lt;/tex&amp;gt;-разделяющей внутренней части. Заметим, что внутрення часть может встречать цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, вообще говоря, более чем в двух точках, но не менее чем в двух точках.&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement = &lt;br /&gt;
2) Существует хотя бы одна &amp;lt;tex&amp;gt;(a,b)&amp;lt;/tex&amp;gt;-разделяющая внутренняя часть.&lt;br /&gt;
|proof =&lt;br /&gt;
Пусть, от противного, таких частей нет. Тогда, выходя из &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; внутри области, ограниченной &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, и двигаясь вблизи от &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; по направлению обхода &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; и вблизи от встречающихся внутренних частей, можно уложить ребро &amp;lt;tex&amp;gt;e = ab&amp;lt;/tex&amp;gt; внутри цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; (см. рис. 11), т.е. &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; - планарный граф, что невозможно.[[Файл:pict-5.jpg|center|130px|рис. 11]]&lt;br /&gt;
}}&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement =&lt;br /&gt;
3) Существует внешняя часть, встречающая &amp;lt;tex&amp;gt;C(a,b)&amp;lt;/tex&amp;gt; в точке &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;C(b,a)&amp;lt;/tex&amp;gt; — в точке &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;, для которой найдётся внутренняя часть, являющаяся одновременно &amp;lt;tex&amp;gt;(a,b)&amp;lt;/tex&amp;gt;-разделяющей и &amp;lt;tex&amp;gt;(c,d)&amp;lt;/tex&amp;gt;-разделяющей (см. рис. 12).&lt;br /&gt;
[[Файл:pict-6.jpg|center|120px|рис. 12]]&lt;br /&gt;
|proof =&lt;br /&gt;
Пусть, от противного, лемма 3 неверна. Упорядочим &amp;lt;tex&amp;gt;(a,b)&amp;lt;/tex&amp;gt;-разделяющие внутренние части в порядке их прикрепления к циклу &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; при движении по циклу от &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; и обозначим их соответственно через &amp;lt;tex&amp;gt;In_{1},In_{2},...&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;u_{1}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;u_{2}&amp;lt;/tex&amp;gt; — первая и последняя вершины из &amp;lt;tex&amp;gt;C(a,b)&amp;lt;/tex&amp;gt;, в которых &amp;lt;tex&amp;gt;In_{1}&amp;lt;/tex&amp;gt; встречает цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt;v_{1}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_{2}&amp;lt;/tex&amp;gt; — первая и последняя вершины из &amp;lt;tex&amp;gt;C(b,a)&amp;lt;/tex&amp;gt;, в которых &amp;lt;tex&amp;gt;In_{1}&amp;lt;/tex&amp;gt; встречает цикл &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; (возможно, вообще говоря, &amp;lt;tex&amp;gt;u_{1} = u_{2}&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;v_{1} = v_{2}&amp;lt;/tex&amp;gt;). Поскольку лемма 3 неверна, для любой внешней части обе её вершины, в которых она встречает &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, лежат либо на &amp;lt;tex&amp;gt;C[v_{2},u_{1}]&amp;lt;/tex&amp;gt;, либо на &amp;lt;tex&amp;gt;C[u_{2},v_{1}]&amp;lt;/tex&amp;gt;. Тогда снаружи цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; можно провести жорданову кривую &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, не пересекая рёбер графа &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;, соединяющую &amp;lt;tex&amp;gt;v_{2}&amp;lt;/tex&amp;gt; с &amp;lt;tex&amp;gt;u_{1}&amp;lt;/tex&amp;gt; (см. рис. 13).&lt;br /&gt;
[[Файл:pict-7.jpg|center|160px|рис. 13]]&lt;br /&gt;
Поскольку на участках &amp;lt;tex&amp;gt;C(u_{1},u_{2})&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;C(v_{1},v_{2})&amp;lt;/tex&amp;gt; нет точек прикрепления внешних частей, используя жорданову кривую &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt;, внутреннюю часть &amp;lt;tex&amp;gt;In_{1}&amp;lt;/tex&amp;gt; можно перебросить (&amp;quot;вывернуть&amp;quot; наружу от цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;) во внешнюю область цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, т.е. уложить её снаружи от цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; и сделать её внешней частью.&lt;br /&gt;
Аналогично все остальные &amp;lt;tex&amp;gt;(a,b)&amp;lt;/tex&amp;gt;-разделяющие внутренние части можно перебросить во внешнюю область от цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;. После этого точно так же, как в доказательстве леммы 2, ребро &amp;lt;tex&amp;gt;e = ab&amp;lt;/tex&amp;gt; можно уложить внутри цикла &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt;, так как не останется &amp;lt;tex&amp;gt;(a,b)&amp;lt;/tex&amp;gt;-разделяющих внутренних частей. Следовательно, мы получим укладку графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, что невозможно.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Разбор случаев взаимного положения ''a, b, c, d, u1, u2, v1, v2'' ==&lt;br /&gt;
Рассмотрим 2 случая.&lt;br /&gt;
[[Файл:Case_1.png|thumb|right|рис. 1]]&lt;br /&gt;
&lt;br /&gt;
1. Пусть пара вершин &amp;lt;tex&amp;gt;\ v_1  &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\ v_2  &amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;(a, b)&amp;lt;/tex&amp;gt;-разделяющей. &amp;lt;br&amp;gt;&lt;br /&gt;
Тогда, в частности, &amp;lt;tex&amp;gt;v_2 \ne a&amp;lt;/tex&amp;gt;  и  &amp;lt;tex&amp;gt; v_1 \ne b&amp;lt;/tex&amp;gt;. В этом случае граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; содержит подграф, гомеоморфный &amp;lt;tex&amp;gt;\ K_{3,3}  &amp;lt;/tex&amp;gt; (отметим, что в &amp;lt;tex&amp;gt; In &amp;lt;/tex&amp;gt; существует простая &amp;lt;tex&amp;gt;(v_1, v_2)&amp;lt;/tex&amp;gt;-цепь)(рис. 1).&lt;br /&gt;
&lt;br /&gt;
2. Пусть пара вершин &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_2&amp;lt;/tex&amp;gt; не является &amp;lt;tex&amp;gt;(a, b)&amp;lt;/tex&amp;gt;-разделяющей. &amp;lt;br&amp;gt;&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;v_1, v_2&amp;lt;/tex&amp;gt; лежат на &amp;lt;tex&amp;gt;C[a, b]&amp;lt;/tex&amp;gt; или на &amp;lt;tex&amp;gt;C[b, a]&amp;lt;/tex&amp;gt;. Без ограничения общности будет считать, что &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_2&amp;lt;/tex&amp;gt; лежат на &amp;lt;tex&amp;gt;C[a, b]&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.1. Пусть &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_2&amp;lt;/tex&amp;gt; лежат на &amp;lt;tex&amp;gt;C(a, b)&amp;lt;/tex&amp;gt;, т.е. &amp;lt;tex&amp;gt;v_1 \ne b&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_2 \ne a&amp;lt;/tex&amp;gt;(рис. 2). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.1.1 Пусть &amp;lt;tex&amp;gt;u_2&amp;lt;/tex&amp;gt; лежит на &amp;lt;tex&amp;gt;C(d, a)&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; имеется подграф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt;(рис. 3).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.1.2. Пусть &amp;lt;tex&amp;gt;u_2 = d&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда во внешней части &amp;lt;tex&amp;gt;In&amp;lt;/tex&amp;gt; имеется вершина &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt; и три простые цепи от &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt; соответственно до &amp;lt;tex&amp;gt;d, v_1, v_2&amp;lt;/tex&amp;gt;, которые в качестве общей точки имеют только точку &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;. В этом случае в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; имеется подграф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt;(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.1.3. Пусть &amp;lt;tex&amp;gt;u_2&amp;lt;/tex&amp;gt; лежит на &amp;lt;tex&amp;gt;C(b, d)&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; есть подграф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt;(рис. 5).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Файл:Сase_2.1.png|150px|рис. 2]]&lt;br /&gt;
[[Файл:Сase_2.1.1.png|150px|рис. 3]]&lt;br /&gt;
[[Файл:Сase_2.1.2.png|150px|рис. 4]]&lt;br /&gt;
[[Файл:Сase_2.1.3.png|150px|рис. 5]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим случаи, когда хотя бы одна из вершин &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_2&amp;lt;/tex&amp;gt; не лежит на &amp;lt;tex&amp;gt;С(a, b)&amp;lt;/tex&amp;gt;. Без ограничения общности будем считать, что это вершина &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt;, т.е &amp;lt;tex&amp;gt;v_1 = b&amp;lt;/tex&amp;gt;(поскольку  &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt; лежит на &amp;lt;tex&amp;gt;C[a, b]&amp;lt;/tex&amp;gt;).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.2. Пусть &amp;lt;tex&amp;gt;v_2 \ne a&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.2.1. Пусть &amp;lt;tex&amp;gt;u_2&amp;lt;/tex&amp;gt; лежит на &amp;lt;tex&amp;gt;C(d, a)&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; есть пограф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt;(рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.2.2. Пусть &amp;lt;tex&amp;gt;u_2 = d&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; имеется подграф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt;(рис. 7).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.2.3. Пусть &amp;lt;tex&amp;gt;u_2&amp;lt;/tex&amp;gt; лежит на &amp;lt;tex&amp;gt;C(b, d)&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; имеется подграф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt;(рис. 8). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Файл:Сase_2.2.1.png|150px|рис. 6]]&lt;br /&gt;
[[Файл:Сase_2.2.2.png|150px|рис. 7]]&lt;br /&gt;
[[Файл:Сase_2.2.3.png|150px|рис. 8]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.3. Пусть &amp;lt;tex&amp;gt;v_2 = a&amp;lt;/tex&amp;gt;(рис. 9).&amp;lt;br&amp;gt;&lt;br /&gt;
Рассмотрим теперь пару вершин &amp;lt;tex&amp;gt;u_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;u_2&amp;lt;/tex&amp;gt;. Будем считать, что &amp;lt;tex&amp;gt;u_1 = c&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;u_2 = d&amp;lt;/tex&amp;gt;, поскольку все другие случаи расположения вершин &amp;lt;tex&amp;gt;u_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;u_2&amp;lt;/tex&amp;gt; так же, как были рассмотрены все случаи расположения &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_2&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;P_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P_2&amp;lt;/tex&amp;gt; — соответственно кратчайшие простые &amp;lt;tex&amp;gt;(a, b)&amp;lt;/tex&amp;gt;-цепь и &amp;lt;tex&amp;gt;(c, d)&amp;lt;/tex&amp;gt;-цепь по внутренней части &amp;lt;tex&amp;gt;In&amp;lt;/tex&amp;gt;(рис. 10).&lt;br /&gt;
Заметим, что &amp;lt;tex&amp;gt;P_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P_2&amp;lt;/tex&amp;gt; имеют общую точку.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.3.1. Пусть цепи &amp;lt;tex&amp;gt;P_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P_2&amp;lt;/tex&amp;gt; имеют более одной общей точки.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; есть подграф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt;(рис. 11).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.3.2. Пусть цепи &amp;lt;tex&amp;gt;P_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P_2&amp;lt;/tex&amp;gt; имеют точно одну общую точку &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; есть подграф, гомеоморфный &amp;lt;tex&amp;gt;K_5&amp;lt;/tex&amp;gt;(рис. 12).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Файл:Сase_2.3(a).png|150px|рис. 9]]&lt;br /&gt;
[[Файл:Сase_2.3(b).png|150px|рис. 10]]&lt;br /&gt;
[[Файл:Сase_2.3.1.png|150px|рис. 11]]&lt;br /&gt;
[[Файл:Сase_2.3.2.png|150px|рис. 12]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, доказано, что в графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; имеется подграф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;K_5&amp;lt;/tex&amp;gt;, что противоречит нашему первому предположению.&amp;lt;br&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
*  Асанов М., Баранский В., Расин В. — Дискретная математика — Графы, матроиды, алгоритмы&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Укладки графов ]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0_%D0%B3%D1%80%D0%B0%D1%84%D0%B0_%D0%BD%D0%B0_%D0%BF%D0%BB%D0%BE%D1%81%D0%BA%D0%BE%D1%81%D1%82%D0%B8&amp;diff=4263</id>
		<title>Укладка графа на плоскости</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0_%D0%B3%D1%80%D0%B0%D1%84%D0%B0_%D0%BD%D0%B0_%D0%BF%D0%BB%D0%BE%D1%81%D0%BA%D0%BE%D1%81%D1%82%D0%B8&amp;diff=4263"/>
				<updated>2010-10-21T06:28:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Добавлены категории&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Граф '''обладает укладкой''' в пространстве &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, если он изоморфен графу, вершинами которого являются некоторые точки пространства, а ребрами {{---}} жордановы кривые, соединяющие соответствующие вершины, причем&lt;br /&gt;
&amp;lt;br /&amp;gt; 1) кривая, являющаяся ребром не проходит через другие вершины графа, кроме вершин, которые она соединяет;&lt;br /&gt;
&amp;lt;br /&amp;gt; 2) две кривые, являющиеся ребрами, пересекаются лишь в вершинах, инцидентных одновременно обоим этим ребрам.&lt;br /&gt;
&amp;lt;br /&amp;gt; Соответствующий граф, составленный из точек пространства и жордановых кривых из &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;, называют '''укладкой''' исходного графа.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Граф называется '''планарным''', если он обладает укладкой на плоскости. Всевозможные укладки планарных графов на плоскости будем называются '''плоскими''' графами.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Плоский граф разбивает плоскость на несколько областей, называемых '''гранями'''. Одна из граней не ограничена, ее называют '''внешней''' гранью, а остальные {{---}} '''внутренними''' гранями.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
*  Асанов М,, Баранский В., Расин В. - Дискретная математика - Графы, матроиды, алгоритмы&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Укладки графов ]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D0%B0_%D0%AD%D0%B9%D0%BB%D0%B5%D1%80%D0%B0&amp;diff=4186</id>
		<title>Формула Эйлера</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D0%B0_%D0%AD%D0%B9%D0%BB%D0%B5%D1%80%D0%B0&amp;diff=4186"/>
				<updated>2010-10-19T12:18:59Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Добавлены категории&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|about=&lt;br /&gt;
Формула Эйлера&lt;br /&gt;
|statement=&lt;br /&gt;
Для произвольного плоского связного графа &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; с &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; вершинами, &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; ребрами и &amp;lt;tex&amp;gt;F&amp;lt;/tex&amp;gt; гранями справедливо следующее соотношение:&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;tex&amp;gt;V - E + F = 2&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=&lt;br /&gt;
Следствие из формулы Эйлера&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; произвольный граф с &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; вершинами (&amp;lt;tex&amp;gt;V \ge 3&amp;lt;/tex&amp;gt;), &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; ребрами и &amp;lt;tex&amp;gt;F&amp;lt;/tex&amp;gt; гранями. Тогда &amp;lt;tex&amp;gt;E \le 3V - 6&amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Поскольку &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; не содержит петель и кратных ребер, то каждая грань граничит хотя бы с тремя ребрами. Пусть, двигаясь вдоль &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й грани мы пройдем &amp;lt;tex&amp;gt;l_i&amp;lt;/tex&amp;gt; ребер. Очевидно, что &amp;lt;tex&amp;gt;\sum_{i=1}^{F}l_i = 2E&amp;lt;/tex&amp;gt;. Поскольку &amp;lt;tex&amp;gt;l_i \ge 3 (i = 1..F)&amp;lt;/tex&amp;gt;, получаем &amp;lt;tex&amp;gt;3F \le 2E&amp;lt;/tex&amp;gt;. Из формулы Эйлера &amp;lt;tex&amp;gt;3E - 3V + 6 = 3F \le 2E&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;E \le 3V - 6&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
* Асанов М,, Баранский В., Расин В. - Дискретная математика - Графы, матроиды, алгоритмы&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Укладки графов ]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9D%D0%B5%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0%D1%80%D0%BD%D0%BE%D1%81%D1%82%D1%8C_K5_%D0%B8_K3,3&amp;diff=4185</id>
		<title>Непланарность K5 и K3,3</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9D%D0%B5%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0%D1%80%D0%BD%D0%BE%D1%81%D1%82%D1%8C_K5_%D0%B8_K3,3&amp;diff=4185"/>
				<updated>2010-10-19T12:18:38Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Добавлены категории&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|about=&lt;br /&gt;
Непланарность &amp;lt;tex&amp;gt;K_5&amp;lt;/tex&amp;gt;&lt;br /&gt;
|statement=&lt;br /&gt;
Граф &amp;lt;tex&amp;gt;K_5&amp;lt;/tex&amp;gt; непланарен.&lt;br /&gt;
|proof=&lt;br /&gt;
Граф &amp;lt;tex&amp;gt;K_5&amp;lt;/tex&amp;gt; имеет 5 вершин и 10 ребер. Если он планарен, то по [[Формула Эйлера|следствию из формулы Эйлера]] получаем &amp;lt;tex&amp;gt;10 \le 3 \cdot 5 - 6 = 9&amp;lt;/tex&amp;gt;. Что невозможно.&lt;br /&gt;
}}&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=&lt;br /&gt;
Непланарность &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|statement=&lt;br /&gt;
Граф &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt; непланарен.&lt;br /&gt;
|proof=&lt;br /&gt;
Граф &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt; содержит &amp;lt;tex&amp;gt;V = 6&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;E = 9&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;F&amp;lt;/tex&amp;gt; граней. &amp;lt;br /&amp;gt;&lt;br /&gt;
Пусть граф &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt; планарен. Тогда по [[Формула Эйлера|формуле Эйлера]] &amp;lt;tex&amp;gt;F = E - V + 2 = 9 - 6 + 2 = 5&amp;lt;/tex&amp;gt;. Пусть, двигаясь вдоль &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й грани мы пройдем &amp;lt;tex&amp;gt;l_i&amp;lt;/tex&amp;gt; ребер. Очевидно, что &amp;lt;tex&amp;gt;\sum_{i=1}^{F}l_i = 2E&amp;lt;/tex&amp;gt;. Поскольку граф двудольный, все его циклы имеют четную длину. Значит &amp;lt;tex&amp;gt;l_i \ge 4&amp;lt;/tex&amp;gt;. Получаем &amp;lt;tex&amp;gt;4F \le 2E&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;2F \le E&amp;lt;/tex&amp;gt;. То есть &amp;lt;tex&amp;gt;2\cdot5 = 10 \le 9&amp;lt;/tex&amp;gt;, что невозможно.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Укладки графов ]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9F%D0%BE%D0%BD%D1%82%D1%80%D1%8F%D0%B3%D0%B8%D0%BD%D0%B0-%D0%9A%D1%83%D1%80%D0%B0%D1%82%D0%BE%D0%B2%D1%81%D0%BA%D0%BE%D0%B3%D0%BE&amp;diff=4184</id>
		<title>Теорема Понтрягина-Куратовского</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9F%D0%BE%D0%BD%D1%82%D1%80%D1%8F%D0%B3%D0%B8%D0%BD%D0%B0-%D0%9A%D1%83%D1%80%D0%B0%D1%82%D0%BE%D0%B2%D1%81%D0%BA%D0%BE%D0%B3%D0%BE&amp;diff=4184"/>
				<updated>2010-10-19T12:18:11Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Добавлены категории&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Разбор случаев взаимного положения ''a, b, c, d, u1, u2, v1, v2'' ====&lt;br /&gt;
Рассмотрим 2 случая.&lt;br /&gt;
[[Файл:Case_1.png|thumb|right|рис. 1]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
1. Пусть пара вершин &amp;lt;tex&amp;gt;\ v_1  &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\ v_2  &amp;lt;/tex&amp;gt; является &amp;lt;tex&amp;gt;(a, b)&amp;lt;/tex&amp;gt;-разделяющей. &amp;lt;br&amp;gt;&lt;br /&gt;
Тогда, в частности, &amp;lt;tex&amp;gt;v_2 \ne a&amp;lt;/tex&amp;gt;  и  &amp;lt;tex&amp;gt; v_1 \ne b&amp;lt;/tex&amp;gt;. В этом случае граф G содержит подграф, гомеоморфный &amp;lt;tex&amp;gt;\ K_{3,3}  &amp;lt;/tex&amp;gt; (отметим, что в &amp;lt;tex&amp;gt; In &amp;lt;/tex&amp;gt; существует простая &amp;lt;tex&amp;gt;(v_1, v_2)&amp;lt;/tex&amp;gt;-цепь)(рис. 1).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
2. Пусть пара вершин &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_2&amp;lt;/tex&amp;gt; не является &amp;lt;tex&amp;gt;(a, b)&amp;lt;/tex&amp;gt;-разделяющей. &amp;lt;br&amp;gt;&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;v_1, v_2&amp;lt;/tex&amp;gt; лежат на &amp;lt;tex&amp;gt;C[a, b]&amp;lt;/tex&amp;gt; или на &amp;lt;tex&amp;gt;C[b, a]&amp;lt;/tex&amp;gt;. Без ограничения общности будет считать, что &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_2&amp;lt;/tex&amp;gt; лежат на &amp;lt;tex&amp;gt;C[a, b]&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.1. Пусть &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_2&amp;lt;/tex&amp;gt; лежат на &amp;lt;tex&amp;gt;C(a, b)&amp;lt;/tex&amp;gt;, т.е. &amp;lt;tex&amp;gt;v_1 \ne b&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_2 \ne a&amp;lt;/tex&amp;gt;(рис. 2). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.1.1 Пусть &amp;lt;tex&amp;gt;u_2&amp;lt;/tex&amp;gt; лежит на &amp;lt;tex&amp;gt;C(d, a)&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда в графе G имеется подграф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt;(рис. 3).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.1.2. Пусть &amp;lt;tex&amp;gt;u_2 = d&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда во внешней части &amp;lt;tex&amp;gt;In&amp;lt;/tex&amp;gt; имеется вершина &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt; и три простые цепи от &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt; соответственно до &amp;lt;tex&amp;gt;d, v_1, v_2&amp;lt;/tex&amp;gt;, которые в качестве общей точки имеют только точку &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;. В этом случае в графе G имеется подграф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt;(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.1.3. Пусть &amp;lt;tex&amp;gt;u_2&amp;lt;/tex&amp;gt; лежит на &amp;lt;tex&amp;gt;C(b, d)&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда в графе G есть подграф, гомеоморфный &amp;lt;tex&amp;gt;K{3,3}&amp;lt;/tex&amp;gt;(рис. 5).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Файл:Сase_2.1.png|150px|рис. 2]]&lt;br /&gt;
[[Файл:Сase_2.1.1.png|150px|рис. 3]]&lt;br /&gt;
[[Файл:Сase_2.1.2.png|150px|рис. 4]]&lt;br /&gt;
[[Файл:Сase_2.1.3.png|150px|рис. 5]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим случаи, когда хотя бы одна из вершин &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_2&amp;lt;/tex&amp;gt; не лежит на &amp;lt;tex&amp;gt;С(a, b)&amp;lt;/tex&amp;gt;. Без ограничения общности будем считать, что это вершина &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt;, т.е &amp;lt;tex&amp;gt;v_1 = b&amp;lt;/tex&amp;gt;(поскольку  &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt; лежит на &amp;lt;tex&amp;gt;C[a, b]&amp;lt;/tex&amp;gt;).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.2. Пусть &amp;lt;tex&amp;gt;v_2 \ne a&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.2.1. Пусть &amp;lt;tex&amp;gt;u_2&amp;lt;/tex&amp;gt; лежит на &amp;lt;tex&amp;gt;C(d, a)&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда в графе G есть пограф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt;(рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.2.2. Пусть &amp;lt;tex&amp;gt;u_2 = d&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда в графе G имеется подграф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt;(рис. 7).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.2.3. Пусть &amp;lt;tex&amp;gt;u_2&amp;lt;/tex&amp;gt; лежит на &amp;lt;tex&amp;gt;C(b, d)&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда в графе G имеется подграф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt;(рис. 8). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Файл:Сase_2.2.1.png|150px|рис. 6]]&lt;br /&gt;
[[Файл:Сase_2.2.2.png|150px|рис. 7]]&lt;br /&gt;
[[Файл:Сase_2.2.3.png|150px|рис. 8]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
2.3. Пусть &amp;lt;tex&amp;gt;v_2 = a&amp;lt;/tex&amp;gt;(рис. 9).&amp;lt;br&amp;gt;&lt;br /&gt;
Рассмотрим теперь пару вершин &amp;lt;tex&amp;gt;u_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;u_2&amp;lt;/tex&amp;gt;. Будем считать, что &amp;lt;tex&amp;gt;u_1 = c&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;u_2 = d&amp;lt;/tex&amp;gt;, поскольку все другие случаи расположения вершин &amp;lt;tex&amp;gt;u_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;u_2&amp;lt;/tex&amp;gt; так же, как были рассмотрены все случаи расположения &amp;lt;tex&amp;gt;v_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_2&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;P_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P_2&amp;lt;/tex&amp;gt; -- соответственно кратчайшие простые &amp;lt;tex&amp;gt;(a, b)&amp;lt;/tex&amp;gt;-цепь и &amp;lt;tex&amp;gt;(c, d)&amp;lt;/tex&amp;gt;-цепь по внутренней части &amp;lt;tex&amp;gt;In&amp;lt;/tex&amp;gt;(рис. 10).&lt;br /&gt;
Заметим, что &amp;lt;tex&amp;gt;P_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P_2&amp;lt;/tex&amp;gt; имеют общую точку.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.3.1. Пусть цепи &amp;lt;tex&amp;gt;P_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P_2&amp;lt;/tex&amp;gt; имеют более одной общей точки.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда в графе G есть подграф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt;(рис. 11).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2.3.2. Пусть цепи &amp;lt;tex&amp;gt;P_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P_2&amp;lt;/tex&amp;gt; имеют точно одну общую точку &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Тогда в графе G есть подграф, гомеоморфный &amp;lt;tex&amp;gt;K_5&amp;lt;/tex&amp;gt;(рис. 12).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Файл:Сase_2.3(a).png|150px|рис. 9]]&lt;br /&gt;
[[Файл:Сase_2.3(b).png|150px|рис. 10]]&lt;br /&gt;
[[Файл:Сase_2.3.1.png|150px|рис. 11]]&lt;br /&gt;
[[Файл:Сase_2.3.2.png|150px|рис. 12]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, доказано, что в графе G имеется подграф, гомеоморфный &amp;lt;tex&amp;gt;K_{3,3}&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;K_5&amp;lt;/tex&amp;gt;, что противоречит нашему первому предположению.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Литература==&lt;br /&gt;
*  Асанов М,, Баранский В., Расин В. - Дискретная математика - Графы, матроиды, алгоритмы&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Укладки графов ]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=4126</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=4126"/>
				<updated>2010-10-17T04:55:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Обновление тем до актуального состояния на 17.10.10&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;
* [[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;
* [[Непланарность 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;
* [[Двудольные графы и раскраска в 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;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0_%D1%81%D0%BC%D0%B5%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B3%D1%80%D0%B0%D1%84%D0%B0&amp;diff=3892</id>
		<title>Матрица смежности графа</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0_%D1%81%D0%BC%D0%B5%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B3%D1%80%D0%B0%D1%84%D0%B0&amp;diff=3892"/>
				<updated>2010-10-13T21:17:49Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: вставка шаблона&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition ='''Матрицей смежности''' (англ. Adjacency matrix) &amp;lt;tex&amp;gt;A=||\alpha_{i,j}||&amp;lt;/tex&amp;gt; ''помеченного графа'' &amp;lt;tex&amp;gt;G(V,E)&amp;lt;/tex&amp;gt; называется матрица &amp;lt;tex&amp;gt;A_{[V\times{}V]}&amp;lt;/tex&amp;gt;, в которой &amp;lt;tex&amp;gt;\alpha_{i,j}&amp;lt;/tex&amp;gt; — количество рёбер, соединяющих вершины &amp;lt;tex&amp;gt;v_i&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_j&amp;lt;/tex&amp;gt;, причём при &amp;lt;tex&amp;gt;i=j&amp;lt;/tex&amp;gt; каждую петлю учитываем дважды, если граф не является ориентированным, и один раз, если граф ориентирован.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Граф&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Матрица смежности&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|[[Файл:Graph 5-7.png|175px]]&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;\begin{pmatrix}&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1\\&lt;br /&gt;
1 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 1\\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0\\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 1\\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0\\&lt;br /&gt;
\end{pmatrix}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Свойства ==&lt;br /&gt;
Для графов без петель и кратных рёбер матрица смежности бинарна (состоит из нулей и единиц), причём её главная диагональ целиком состоит из нулей.&lt;br /&gt;
&lt;br /&gt;
=== Случай ориентированного графа ===&lt;br /&gt;
Сумма элементов &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й строки равна &amp;lt;tex&amp;gt;\deg^- v_i&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\sum\limits_{j=1}^{n}\alpha_{i,j} = \deg^- v_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Аналогично сумма элементов &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;-го стоблца равна &amp;lt;tex&amp;gt;\deg^+ v_j&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\sum\limits_{i=1}^{n}\alpha_{i,j} = \deg^+ v_j&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;i&amp;lt;/tex&amp;gt;-й строки равна &amp;lt;tex&amp;gt;\deg v_i&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\sum\limits_{j=1}^{n}\alpha_{i,j} = \deg v_i&amp;lt;/tex&amp;gt;. В следствии симметричности суммы элементов &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й строки и &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-го столбца равны.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Связь степени матрицы смежности и количества путей]]&lt;br /&gt;
* [[Матрица инцидентности графа]]&lt;br /&gt;
== Литература ==&lt;br /&gt;
* Харари Фрэнк '''Теория графов''' = Graph theory/Пер. с англ. и предисл. В. П. Козырева. Под ред. Г.П.Гаврилова. Изд. 2-е. — М.: Едиториал УРСС, 2003. — 296 с. — ISBN 5-354-00301-6&lt;br /&gt;
* Асанов М. О., Баранский В. А., Расин В. В. '''Дискретная математика: графы, матроиды, алгоритмы''' — НИЦ РХД, 2001. — 288 с. — ISBN 5-93972-076-5&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Основные определения теории графов]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%BE_%D1%81%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B3%D0%BE_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0_%D0%B2_%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B5_%D1%81%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0&amp;diff=3631</id>
		<title>Теорема о существовании простого цикла в случае существования цикла</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%BE_%D1%81%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B3%D0%BE_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0_%D0%B2_%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B5_%D1%81%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0&amp;diff=3631"/>
				<updated>2010-10-11T04:45:30Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: корректировка ссылок, выставление категорий&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Простой (рёберно-простой) цикл''' в графе – [[Основные_определения_теории_графов#Цикл|цикл]], в котором каждое из рёбер графа встречается не более одного раза.&lt;br /&gt;
}}&lt;br /&gt;
Для удобства будем считать, что цикл задаётся &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; вершинами и &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; рёбрами:&lt;br /&gt;
&amp;lt;math&amp;gt;V_0E_1V_1E_2 ... V_{n-1}E_n&amp;lt;/math&amp;gt;, – причём ребро &amp;lt;math&amp;gt;E_i&amp;lt;/math&amp;gt; соединяет вершины &amp;lt;math&amp;gt;V_{i-1}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;V_{i % n}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Длина цикла''' – количество рёбер, входящих в последовательность, задающую этот цикл.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если две вершины графа лежат на цикле, то они лежат на простом цикле.&lt;br /&gt;
|proof=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Основные определения теории графов]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%94%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D1%80%D0%B0%D1%84_%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0%D1%80%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B3%D1%80%D0%B0%D1%84%D0%B0&amp;diff=3241</id>
		<title>Двойственный граф планарного графа</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%94%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D1%80%D0%B0%D1%84_%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0%D1%80%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B3%D1%80%D0%B0%D1%84%D0%B0&amp;diff=3241"/>
				<updated>2010-10-08T01:51:06Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Добавлены категории&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;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=3229</id>
		<title>Алгоритмы и структуры данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%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=3229"/>
				<updated>2010-10-08T00:26:14Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Обновление тем до состояния на 07.10.2010&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;
* [[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;
* [[Непланарность 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;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A3%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B8_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2&amp;diff=3226</id>
		<title>Категория:Укладки графов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A3%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B8_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2&amp;diff=3226"/>
				<updated>2010-10-08T00:09:15Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Новая страница: «Категория: Алгоритмы и структуры данных»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория: Алгоритмы и структуры данных]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9E%D0%B1%D1%85%D0%BE%D0%B4%D1%8B_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2&amp;diff=3225</id>
		<title>Категория:Обходы графов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9E%D0%B1%D1%85%D0%BE%D0%B4%D1%8B_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2&amp;diff=3225"/>
				<updated>2010-10-08T00:08:36Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Новая страница: «Категория: Алгоритмы и структуры данных»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория: Алгоритмы и структуры данных]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%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&amp;diff=3224</id>
		<title>Категория:Остовные деревья</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%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&amp;diff=3224"/>
				<updated>2010-10-08T00:07:50Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Новая страница: «Категория: Алгоритмы и структуры данных»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория: Алгоритмы и структуры данных]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A1%D0%B2%D1%8F%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_%D0%B3%D1%80%D0%B0%D1%84%D0%B0%D1%85&amp;diff=3223</id>
		<title>Категория:Связность в графах</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A1%D0%B2%D1%8F%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_%D0%B3%D1%80%D0%B0%D1%84%D0%B0%D1%85&amp;diff=3223"/>
				<updated>2010-10-08T00:07:14Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Новая страница: «Категория: Алгоритмы и структуры данных»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория: Алгоритмы и структуры данных]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D0%B8_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2&amp;diff=3222</id>
		<title>Категория:Основные определения теории графов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D0%B8_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2&amp;diff=3222"/>
				<updated>2010-10-08T00:04:20Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Новая страница: «Категория: Алгоритмы и структуры данных»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория: Алгоритмы и структуры данных]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0_%D1%81%D0%BC%D0%B5%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B3%D1%80%D0%B0%D1%84%D0%B0&amp;diff=3221</id>
		<title>Матрица смежности графа</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0_%D1%81%D0%BC%D0%B5%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B3%D1%80%D0%B0%D1%84%D0%B0&amp;diff=3221"/>
				<updated>2010-10-08T00:03:26Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Добавлены категории&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
'''Матрицей смежности''' (англ. Adjacency matrix) &amp;lt;tex&amp;gt;A=||\alpha_{i,j}||&amp;lt;/tex&amp;gt; ''помеченного графа'' &amp;lt;tex&amp;gt;G(V,E)&amp;lt;/tex&amp;gt; называется матрица &amp;lt;tex&amp;gt;A_{[V\times{}V]}&amp;lt;/tex&amp;gt;, в которой &amp;lt;tex&amp;gt;\alpha_{i,j}&amp;lt;/tex&amp;gt; — количество рёбер, соединяющих вершины &amp;lt;tex&amp;gt;v_i&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_j&amp;lt;/tex&amp;gt;, причём при &amp;lt;tex&amp;gt;i=j&amp;lt;/tex&amp;gt; каждую петлю учитываем дважды, если граф не является ориентированным, и один раз, если граф ориентирован.&lt;br /&gt;
&lt;br /&gt;
=== Пример ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Граф&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Матрица смежности&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|[[Файл:Graph 5-7.png|175px]]&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;\begin{pmatrix}&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1\\&lt;br /&gt;
1 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 1\\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0\\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 1\\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0\\&lt;br /&gt;
\end{pmatrix}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Свойства ==&lt;br /&gt;
Для графов без петель и кратных рёбер матрица смежности бинарна (состоит из нулей и единиц), причём её главная диагональ целиком состоит из нулей.&lt;br /&gt;
&lt;br /&gt;
=== Ориентированный граф ===&lt;br /&gt;
Сумма элементов &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й строки равна &amp;lt;tex&amp;gt;\deg^- v_i&amp;lt;/tex&amp;gt;, то есть &amp;lt;math&amp;gt;\sum_{j=1}^{n}\alpha_{i,j} = \deg^- v_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
Аналогично сумма элементов &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;-го стоблца равна &amp;lt;tex&amp;gt;\deg^+ v_j&amp;lt;/tex&amp;gt;, то есть &amp;lt;math&amp;gt;\sum_{i=1}^{n}\alpha_{i,j} = \deg^+ v_j&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Неориентированный граф ===&lt;br /&gt;
Для неориентированных графов матрица смежности является симметричной.&lt;br /&gt;
&lt;br /&gt;
Сумма элементов &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й строки равна &amp;lt;tex&amp;gt;\deg v_i&amp;lt;/tex&amp;gt;, то есть &amp;lt;math&amp;gt;\sum_{j=1}^{n}\alpha_{i,j} = \deg v_i&amp;lt;/math&amp;gt;. В следствии симметричности суммы элементов &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й строки и &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-го столбца равны.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Связь степени матрицы смежности и количества путей]]&lt;br /&gt;
* [[Матрица инцидентности графа]]&lt;br /&gt;
== Литература ==&lt;br /&gt;
* Харари Фрэнк '''Теория графов''' = Graph theory/Пер. с англ. и предисл. В. П. Козырева. Под ред. Г.П.Гаврилова. Изд. 2-е. — М.: Едиториал УРСС, 2003. — 296 с. — ISBN 5-354-00301-6&lt;br /&gt;
* Асанов М. О., Баранский В. А., Расин В. В. '''Дискретная математика: графы, матроиды, алгоритмы''' — НИЦ РХД, 2001. — 288 с. — ISBN 5-93972-076-5&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Основные определения теории графов]]&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0_%D1%81%D0%BC%D0%B5%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B3%D1%80%D0%B0%D1%84%D0%B0&amp;diff=3219</id>
		<title>Матрица смежности графа</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0_%D1%81%D0%BC%D0%B5%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B3%D1%80%D0%B0%D1%84%D0%B0&amp;diff=3219"/>
				<updated>2010-10-08T00:00:59Z</updated>
		
		<summary type="html">&lt;p&gt;Vladimir.nesmelov: Новая страница: «== Определение == '''Матрицей смежности''' (англ. Adjacency matrix) &amp;lt;tex&amp;gt;A=||\alpha_{i,j}||&amp;lt;/tex&amp;gt; ''помеченного графа…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
'''Матрицей смежности''' (англ. Adjacency matrix) &amp;lt;tex&amp;gt;A=||\alpha_{i,j}||&amp;lt;/tex&amp;gt; ''помеченного графа'' &amp;lt;tex&amp;gt;G(V,E)&amp;lt;/tex&amp;gt; называется матрица &amp;lt;tex&amp;gt;A_{[V\times{}V]}&amp;lt;/tex&amp;gt;, в которой &amp;lt;tex&amp;gt;\alpha_{i,j}&amp;lt;/tex&amp;gt; — количество рёбер, соединяющих вершины &amp;lt;tex&amp;gt;v_i&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v_j&amp;lt;/tex&amp;gt;, причём при &amp;lt;tex&amp;gt;i=j&amp;lt;/tex&amp;gt; каждую петлю учитываем дважды, если граф не является ориентированным, и один раз, если граф ориентирован.&lt;br /&gt;
&lt;br /&gt;
=== Пример ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Граф&lt;br /&gt;
!style=&amp;quot;background:#f2f2f2&amp;quot;|Матрица смежности&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|[[Файл:Graph 5-7.png|175px]]&lt;br /&gt;
|style=&amp;quot;background:#f9f9f9&amp;quot;|&amp;lt;tex&amp;gt;\begin{pmatrix}&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1\\&lt;br /&gt;
1 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 1\\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0\\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 1\\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0\\&lt;br /&gt;
\end{pmatrix}&amp;lt;/tex&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Свойства ==&lt;br /&gt;
Для графов без петель и кратных рёбер матрица смежности бинарна (состоит из нулей и единиц), причём её главная диагональ целиком состоит из нулей.&lt;br /&gt;
&lt;br /&gt;
=== Ориентированный граф ===&lt;br /&gt;
Сумма элементов &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й строки равна &amp;lt;tex&amp;gt;\deg^- v_i&amp;lt;/tex&amp;gt;, то есть &amp;lt;math&amp;gt;\sum_{j=1}^{n}\alpha_{i,j} = \deg^- v_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
Аналогично сумма элементов &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;-го стоблца равна &amp;lt;tex&amp;gt;\deg^+ v_j&amp;lt;/tex&amp;gt;, то есть &amp;lt;math&amp;gt;\sum_{i=1}^{n}\alpha_{i,j} = \deg^+ v_j&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Неориентированный граф ===&lt;br /&gt;
Для неориентированных графов матрица смежности является симметричной.&lt;br /&gt;
&lt;br /&gt;
Сумма элементов &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й строки равна &amp;lt;tex&amp;gt;\deg v_i&amp;lt;/tex&amp;gt;, то есть &amp;lt;math&amp;gt;\sum_{j=1}^{n}\alpha_{i,j} = \deg v_i&amp;lt;/math&amp;gt;. В следствии симметричности суммы элементов &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й строки и &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-го столбца равны.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Связь степени матрицы смежности и количества путей]]&lt;br /&gt;
* [[Матрица инцидентности графа]]&lt;br /&gt;
== Литература ==&lt;br /&gt;
* Харари Фрэнк '''Теория графов''' = Graph theory/Пер. с англ. и предисл. В. П. Козырева. Под ред. Г.П.Гаврилова. Изд. 2-е. — М.: Едиториал УРСС, 2003. — 296 с. — ISBN 5-354-00301-6&lt;br /&gt;
* Асанов М. О., Баранский В. А., Расин В. В. '''Дискретная математика: графы, матроиды, алгоритмы''' — НИЦ РХД, 2001. — 288 с. — ISBN 5-93972-076-5&lt;/div&gt;</summary>
		<author><name>Vladimir.nesmelov</name></author>	</entry>

	</feed>