Алгоритм двух китайцев — различия между версиями
Yurik (обсуждение | вклад) |
Yurik (обсуждение | вклад) |
||
Строка 23: | Строка 23: | ||
| | | | ||
|} | |} | ||
+ | <br> | ||
+ | <br> | ||
=== Пример === | === Пример === | ||
+ | {|width="70%" align="center" | ||
+ | |- | ||
+ | |Исходный граф. | ||
+ | |[[Файл:китайГраф1.png|200px]] | ||
+ | |- | ||
+ | |Произведем спуск до нулевых ребер (Фаза 1, 2). | ||
+ | |[[Файл:китайГраф2.png|200px]] | ||
+ | |- | ||
+ | |По нулевым ребрам нельзя дойти до всех вершин из <tex>v</tex>, поэтому строим конденсацию и добавляем наименьшие ребра между компонентами (Фаза 3). | ||
+ | Найдем <tex>MST</tex> для данного графа. | ||
+ | |[[Файл:китайГраф3.png|200px]] | ||
+ | |- | ||
+ | |Произведем спуск до нулевых ребер (Фаза 1, 2). | ||
+ | |[[Файл:китайГраф4.png|200px]] | ||
+ | |- | ||
+ | |По нулевым ребрам нельзя дойти до всех вершин из <tex>v</tex>, поэтому строим конденсацию и добавляем наименьшие ребра между компонентами (Фаза 3). | ||
+ | Найдем <tex>MST</tex> для данного графа. | ||
+ | |[[Файл:китайГраф5.png|200px]] | ||
+ | |- | ||
+ | |Произведем спуск до нулевых ребер (Фаза 1, 2). По полученным нулевым ребрам можно дойти из корня до всех вершин. Тогда запускаем <tex>dfs</tex> из корня и возвращаем ребра. | ||
+ | |[[Файл:китайГраф6.png|200px]] | ||
+ | |- | ||
+ | |Находим корень в каждой из компонент, из него запускаем <tex>dfs</tex> по нулевым ребрам, возвращаем результат. | ||
+ | |[[Файл:китайГраф7.png|200px]] | ||
+ | |- | ||
+ | |Находим корень в каждой из компонент, из него запускаем <tex>dfs</tex> по нулевым ребрам. Полученое дерево и есть <tex>MST</tex>. | ||
+ | |[[Файл:китайГраф8.png|200px]] | ||
+ | |} | ||
=== Корректность === | === Корректность === | ||
Строка 55: | Строка 85: | ||
*Романовский И. В. '''Дискретный анализ''', 3-е изд., перераб. и доп. - СПб.:Невский Диалект; БХВ-Петербург, 2003. - 320 с.: ил. - '''ISBN 5-7940-0114-3''' | *Романовский И. В. '''Дискретный анализ''', 3-е изд., перераб. и доп. - СПб.:Невский Диалект; БХВ-Петербург, 2003. - 320 с.: ил. - '''ISBN 5-7940-0114-3''' | ||
* [http://is.ifmo.ru/vis/ctree/ http://is.ifmo.ru] | * [http://is.ifmo.ru/vis/ctree/ http://is.ifmo.ru] | ||
− | |||
− | |||
− | |||
[[Категория: Алгоритмы и структуры данных]] | [[Категория: Алгоритмы и структуры данных]] | ||
[[Категория: Остовные деревья ]] | [[Категория: Остовные деревья ]] |
Версия 17:08, 11 декабря 2012
Алгоритм двух китайцев — алгоритм построения минимального остовного дерева во взвешенном ориентированном графе с корнем в заданной вершине. Был разработан математиками Чу Йонджином и Лю Цзенхонгом.
Содержание
Постановка задачи
Дан взвешенный ориентированный граф
и начальная вершина . Требуется построить корневое остовное дерево в с корнем в вершине , сумма весов всех ребер которого минимальна.Алгоритм
Описание
Если хотя бы одна вершина графа
|
Пример
Корректность
Замечания:
- После перевзвешивания в каждую вершину, кроме
- Пусть
Лемма: |
Кратчайшее дерево путей в графе можно получить, найдя кратчайшее дерево путей в графе , а затем заменив в нем каждую компоненту сильной связности деревом, построенным из дуг нулевой длинны. |
Доказательство: |
Зафиксируем любое дерево путей и покажем, что в графе | найдется дерево не большей длины, имеющее такую структуру, как сказано в лемме. Для такой структуры дерева необходимо и достаточно, чтобы в каждое из подмножеств входило только по одному ребру. Меньше быть не может, иначе получится отдельная компонента связности. Если же в какое-то подмножество входит больше чем одно ребро, то все ребра кроме одного можно заменить ребрами нулевой длины, лежащими внутри подмножества, что разве лишь уменьшит длину дерева и не нарушит связности. Повторяя это преобразование нужное число раз мы добьемся искомой структуры дерева.
Из сделанных замечаний и леммы следует, что дерево
— MST в .Реализация
лололол цу вц цв
Сложность
Всего будет построено не более
конденсаций. Конденсацию можно построить за . Значит, алгоритм можно реализовать за .Источники
- Романовский И. В. Дискретный анализ, 3-е изд., перераб. и доп. - СПб.:Невский Диалект; БХВ-Петербург, 2003. - 320 с.: ил. - ISBN 5-7940-0114-3
- http://is.ifmo.ru