103
с/к “Эффективные алгоритмы” Лекция 9: Линейный вероятностный алгоритм построения минимального покрывающего дерева А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/infclub/ А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 1 / 27

20071125 efficientalgorithms kulikov_lecture09

Embed Size (px)

Citation preview

Page 1: 20071125 efficientalgorithms kulikov_lecture09

с/к “Эффективные алгоритмы”Лекция 9: Линейный вероятностный алгоритм

построения минимального покрывающего дерева

А. Куликов

Computer Science клуб при ПОМИhttp://logic.pdmi.ras.ru/∼infclub/

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 1 / 27

Page 2: 20071125 efficientalgorithms kulikov_lecture09

План лекции

1 Введение

2 Алгоритм

3 Время работы в худшем случае

4 Время работы в среднем

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 2 / 27

Page 3: 20071125 efficientalgorithms kulikov_lecture09

План лекции

1 Введение

2 Алгоритм

3 Время работы в худшем случае

4 Время работы в среднем

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 2 / 27

Page 4: 20071125 efficientalgorithms kulikov_lecture09

План лекции

1 Введение

2 Алгоритм

3 Время работы в худшем случае

4 Время работы в среднем

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 2 / 27

Page 5: 20071125 efficientalgorithms kulikov_lecture09

План лекции

1 Введение

2 Алгоритм

3 Время работы в худшем случае

4 Время работы в среднем

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 2 / 27

Page 6: 20071125 efficientalgorithms kulikov_lecture09

План лекции

1 Введение

2 Алгоритм

3 Время работы в худшем случае

4 Время работы в среднем

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 3 / 27

Page 7: 20071125 efficientalgorithms kulikov_lecture09

Минимальное покрывающее деревро

Определение

Покрывающим деревом (связного) графа (spanning tree)называется его поддерево на всех вершинах графа.Задача о минимальном покрывающем дереве (minimum spanningtree problem, MST) заключается в нахождении по данномувзвешенному (с вещественными весами на рёбрах) графупокрывающего дерева минимального веса.

ЗамечанияБудем считать, что веса всех рёбер различны. При такомпредположении у графа есть ровно одно минимальноепокрывающее дерево.Для несвязного графа имеет смысл искать минимальныйпокрывающий лес.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 4 / 27

Page 8: 20071125 efficientalgorithms kulikov_lecture09

Минимальное покрывающее деревро

ОпределениеПокрывающим деревом (связного) графа (spanning tree)называется его поддерево на всех вершинах графа.

Задача о минимальном покрывающем дереве (minimum spanningtree problem, MST) заключается в нахождении по данномувзвешенному (с вещественными весами на рёбрах) графупокрывающего дерева минимального веса.

ЗамечанияБудем считать, что веса всех рёбер различны. При такомпредположении у графа есть ровно одно минимальноепокрывающее дерево.Для несвязного графа имеет смысл искать минимальныйпокрывающий лес.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 4 / 27

Page 9: 20071125 efficientalgorithms kulikov_lecture09

Минимальное покрывающее деревро

ОпределениеПокрывающим деревом (связного) графа (spanning tree)называется его поддерево на всех вершинах графа.Задача о минимальном покрывающем дереве (minimum spanningtree problem, MST) заключается в нахождении по данномувзвешенному (с вещественными весами на рёбрах) графупокрывающего дерева минимального веса.

ЗамечанияБудем считать, что веса всех рёбер различны. При такомпредположении у графа есть ровно одно минимальноепокрывающее дерево.Для несвязного графа имеет смысл искать минимальныйпокрывающий лес.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 4 / 27

Page 10: 20071125 efficientalgorithms kulikov_lecture09

Минимальное покрывающее деревро

ОпределениеПокрывающим деревом (связного) графа (spanning tree)называется его поддерево на всех вершинах графа.Задача о минимальном покрывающем дереве (minimum spanningtree problem, MST) заключается в нахождении по данномувзвешенному (с вещественными весами на рёбрах) графупокрывающего дерева минимального веса.

Замечания

Будем считать, что веса всех рёбер различны. При такомпредположении у графа есть ровно одно минимальноепокрывающее дерево.Для несвязного графа имеет смысл искать минимальныйпокрывающий лес.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 4 / 27

Page 11: 20071125 efficientalgorithms kulikov_lecture09

Минимальное покрывающее деревро

ОпределениеПокрывающим деревом (связного) графа (spanning tree)называется его поддерево на всех вершинах графа.Задача о минимальном покрывающем дереве (minimum spanningtree problem, MST) заключается в нахождении по данномувзвешенному (с вещественными весами на рёбрах) графупокрывающего дерева минимального веса.

ЗамечанияБудем считать, что веса всех рёбер различны. При такомпредположении у графа есть ровно одно минимальноепокрывающее дерево.

Для несвязного графа имеет смысл искать минимальныйпокрывающий лес.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 4 / 27

Page 12: 20071125 efficientalgorithms kulikov_lecture09

Минимальное покрывающее деревро

ОпределениеПокрывающим деревом (связного) графа (spanning tree)называется его поддерево на всех вершинах графа.Задача о минимальном покрывающем дереве (minimum spanningtree problem, MST) заключается в нахождении по данномувзвешенному (с вещественными весами на рёбрах) графупокрывающего дерева минимального веса.

ЗамечанияБудем считать, что веса всех рёбер различны. При такомпредположении у графа есть ровно одно минимальноепокрывающее дерево.Для несвязного графа имеет смысл искать минимальныйпокрывающий лес.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 4 / 27

Page 13: 20071125 efficientalgorithms kulikov_lecture09

Общая схема детерминированных алгоритмов

Общая схема детерминированных алгоритмов

На кажом шаге поддерживаем ациклический подграф F графа G ,который будем называть промежуточным остовным лесом(intermediate spanning forest).F является подграфом минимального покрывающего дерева, акаждая компонента F является минимальным покрывающимдеревом подграфа на вершинах этой компоненты.На каждом шаге алгоритм соединяет различные компоненты,добавляя рёбра графа G в F .Изначально, F содержит |V | деревьев, состоящих из однойвершины.В конце работы алгоритма F состоит из одного дерева на |V |вершинах, которое и является минимальным покрывающимдеревом.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 5 / 27

Page 14: 20071125 efficientalgorithms kulikov_lecture09

Общая схема детерминированных алгоритмов

Общая схема детерминированных алгоритмовНа кажом шаге поддерживаем ациклический подграф F графа G ,который будем называть промежуточным остовным лесом(intermediate spanning forest).

F является подграфом минимального покрывающего дерева, акаждая компонента F является минимальным покрывающимдеревом подграфа на вершинах этой компоненты.На каждом шаге алгоритм соединяет различные компоненты,добавляя рёбра графа G в F .Изначально, F содержит |V | деревьев, состоящих из однойвершины.В конце работы алгоритма F состоит из одного дерева на |V |вершинах, которое и является минимальным покрывающимдеревом.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 5 / 27

Page 15: 20071125 efficientalgorithms kulikov_lecture09

Общая схема детерминированных алгоритмов

Общая схема детерминированных алгоритмовНа кажом шаге поддерживаем ациклический подграф F графа G ,который будем называть промежуточным остовным лесом(intermediate spanning forest).F является подграфом минимального покрывающего дерева, акаждая компонента F является минимальным покрывающимдеревом подграфа на вершинах этой компоненты.

На каждом шаге алгоритм соединяет различные компоненты,добавляя рёбра графа G в F .Изначально, F содержит |V | деревьев, состоящих из однойвершины.В конце работы алгоритма F состоит из одного дерева на |V |вершинах, которое и является минимальным покрывающимдеревом.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 5 / 27

Page 16: 20071125 efficientalgorithms kulikov_lecture09

Общая схема детерминированных алгоритмов

Общая схема детерминированных алгоритмовНа кажом шаге поддерживаем ациклический подграф F графа G ,который будем называть промежуточным остовным лесом(intermediate spanning forest).F является подграфом минимального покрывающего дерева, акаждая компонента F является минимальным покрывающимдеревом подграфа на вершинах этой компоненты.На каждом шаге алгоритм соединяет различные компоненты,добавляя рёбра графа G в F .

Изначально, F содержит |V | деревьев, состоящих из однойвершины.В конце работы алгоритма F состоит из одного дерева на |V |вершинах, которое и является минимальным покрывающимдеревом.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 5 / 27

Page 17: 20071125 efficientalgorithms kulikov_lecture09

Общая схема детерминированных алгоритмов

Общая схема детерминированных алгоритмовНа кажом шаге поддерживаем ациклический подграф F графа G ,который будем называть промежуточным остовным лесом(intermediate spanning forest).F является подграфом минимального покрывающего дерева, акаждая компонента F является минимальным покрывающимдеревом подграфа на вершинах этой компоненты.На каждом шаге алгоритм соединяет различные компоненты,добавляя рёбра графа G в F .Изначально, F содержит |V | деревьев, состоящих из однойвершины.

В конце работы алгоритма F состоит из одного дерева на |V |вершинах, которое и является минимальным покрывающимдеревом.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 5 / 27

Page 18: 20071125 efficientalgorithms kulikov_lecture09

Общая схема детерминированных алгоритмов

Общая схема детерминированных алгоритмовНа кажом шаге поддерживаем ациклический подграф F графа G ,который будем называть промежуточным остовным лесом(intermediate spanning forest).F является подграфом минимального покрывающего дерева, акаждая компонента F является минимальным покрывающимдеревом подграфа на вершинах этой компоненты.На каждом шаге алгоритм соединяет различные компоненты,добавляя рёбра графа G в F .Изначально, F содержит |V | деревьев, состоящих из однойвершины.В конце работы алгоритма F состоит из одного дерева на |V |вершинах, которое и является минимальным покрывающимдеревом.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 5 / 27

Page 19: 20071125 efficientalgorithms kulikov_lecture09

Безопасные и бесполезные рёбра

ОпределениеРассмотрим граф G и его промежуточный подлес F .

Ребро G называется бесполезным (useless), если оно не являетсяребром F , в то время как оба его конца принадлежат однойкомпоненте F .Ребро G называется безопасным (safe), если для некоторойкомпоненты F это ребро является самым лёгким из всех рёбер,соединяющих вершины этой компоненты с оставшимисявершинами.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 6 / 27

Page 20: 20071125 efficientalgorithms kulikov_lecture09

Безопасные и бесполезные рёбра

ОпределениеРассмотрим граф G и его промежуточный подлес F .

Ребро G называется бесполезным (useless), если оно не являетсяребром F , в то время как оба его конца принадлежат однойкомпоненте F .

Ребро G называется безопасным (safe), если для некоторойкомпоненты F это ребро является самым лёгким из всех рёбер,соединяющих вершины этой компоненты с оставшимисявершинами.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 6 / 27

Page 21: 20071125 efficientalgorithms kulikov_lecture09

Безопасные и бесполезные рёбра

ОпределениеРассмотрим граф G и его промежуточный подлес F .

Ребро G называется бесполезным (useless), если оно не являетсяребром F , в то время как оба его конца принадлежат однойкомпоненте F .Ребро G называется безопасным (safe), если для некоторойкомпоненты F это ребро является самым лёгким из всех рёбер,соединяющих вершины этой компоненты с оставшимисявершинами.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 6 / 27

Page 22: 20071125 efficientalgorithms kulikov_lecture09

Два важных свойства минимального покрывающегодерева

Свойство циклаДля любого цикла C самое тяжёлое ребро C не содержится вминимальном покрывающем дереве.

Свойство разрезаДля любого подмножества вершин X ⊂ V самое лёгкое ребро междуX и V ∖ X содержится в минимальном покрывающем дереве.

СледствиеМинимальное покрывающее дерево содержит все безопасные рёбра ине содержит бесполезных рёбер.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 7 / 27

Page 23: 20071125 efficientalgorithms kulikov_lecture09

Два важных свойства минимального покрывающегодерева

Свойство циклаДля любого цикла C самое тяжёлое ребро C не содержится вминимальном покрывающем дереве.

Свойство разрезаДля любого подмножества вершин X ⊂ V самое лёгкое ребро междуX и V ∖ X содержится в минимальном покрывающем дереве.

СледствиеМинимальное покрывающее дерево содержит все безопасные рёбра ине содержит бесполезных рёбер.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 7 / 27

Page 24: 20071125 efficientalgorithms kulikov_lecture09

Два важных свойства минимального покрывающегодерева

Свойство циклаДля любого цикла C самое тяжёлое ребро C не содержится вминимальном покрывающем дереве.

Свойство разрезаДля любого подмножества вершин X ⊂ V самое лёгкое ребро междуX и V ∖ X содержится в минимальном покрывающем дереве.

СледствиеМинимальное покрывающее дерево содержит все безопасные рёбра ине содержит бесполезных рёбер.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 7 / 27

Page 25: 20071125 efficientalgorithms kulikov_lecture09

Известные алгоритмы

Известные алгоритмы

Алгоритм Борувки Добавляем все безопасные рёбра и производимрекурсивный вызов.

Алгоритм Прима В каждый момент есть ровно одна нетривиальнаякомпонента связности. На каждом шаге добавляем в неёбезопасное ребро.

Алгоритм Крускала Перебираем рёбра в порядке возрастания их веса.Если ребро является безопасным, добавляем его.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 8 / 27

Page 26: 20071125 efficientalgorithms kulikov_lecture09

Известные алгоритмы

Известные алгоритмыАлгоритм Борувки Добавляем все безопасные рёбра и производим

рекурсивный вызов.

Алгоритм Прима В каждый момент есть ровно одна нетривиальнаякомпонента связности. На каждом шаге добавляем в неёбезопасное ребро.

Алгоритм Крускала Перебираем рёбра в порядке возрастания их веса.Если ребро является безопасным, добавляем его.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 8 / 27

Page 27: 20071125 efficientalgorithms kulikov_lecture09

Известные алгоритмы

Известные алгоритмыАлгоритм Борувки Добавляем все безопасные рёбра и производим

рекурсивный вызов.Алгоритм Прима В каждый момент есть ровно одна нетривиальная

компонента связности. На каждом шаге добавляем в неёбезопасное ребро.

Алгоритм Крускала Перебираем рёбра в порядке возрастания их веса.Если ребро является безопасным, добавляем его.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 8 / 27

Page 28: 20071125 efficientalgorithms kulikov_lecture09

Известные алгоритмы

Известные алгоритмыАлгоритм Борувки Добавляем все безопасные рёбра и производим

рекурсивный вызов.Алгоритм Прима В каждый момент есть ровно одна нетривиальная

компонента связности. На каждом шаге добавляем в неёбезопасное ребро.

Алгоритм Крускала Перебираем рёбра в порядке возрастания их веса.Если ребро является безопасным, добавляем его.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 8 / 27

Page 29: 20071125 efficientalgorithms kulikov_lecture09

Общая схема алгоритма Борувки

Общая схема

Для каждой вершины выберем ребро минимального веса,инцидентное ей.Каждую компоненту связности, образованную выбраннымирёбрами, стянем в вершину, после чего удалим висячие вершины,петли, а при появлении кратных рёбер оставим только самоелёгкое.Произвести рекурсивный вызов для полученного графа.

Время работыНа каждом шаге количество вершин уменьшается хотя бы вдвое, аколичество рёбер не увеличивается. Значит, время работы естьO(|E | log |V |).

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 9 / 27

Page 30: 20071125 efficientalgorithms kulikov_lecture09

Общая схема алгоритма Борувки

Общая схемаДля каждой вершины выберем ребро минимального веса,инцидентное ей.

Каждую компоненту связности, образованную выбраннымирёбрами, стянем в вершину, после чего удалим висячие вершины,петли, а при появлении кратных рёбер оставим только самоелёгкое.Произвести рекурсивный вызов для полученного графа.

Время работыНа каждом шаге количество вершин уменьшается хотя бы вдвое, аколичество рёбер не увеличивается. Значит, время работы естьO(|E | log |V |).

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 9 / 27

Page 31: 20071125 efficientalgorithms kulikov_lecture09

Общая схема алгоритма Борувки

Общая схемаДля каждой вершины выберем ребро минимального веса,инцидентное ей.Каждую компоненту связности, образованную выбраннымирёбрами, стянем в вершину, после чего удалим висячие вершины,петли, а при появлении кратных рёбер оставим только самоелёгкое.

Произвести рекурсивный вызов для полученного графа.

Время работыНа каждом шаге количество вершин уменьшается хотя бы вдвое, аколичество рёбер не увеличивается. Значит, время работы естьO(|E | log |V |).

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 9 / 27

Page 32: 20071125 efficientalgorithms kulikov_lecture09

Общая схема алгоритма Борувки

Общая схемаДля каждой вершины выберем ребро минимального веса,инцидентное ей.Каждую компоненту связности, образованную выбраннымирёбрами, стянем в вершину, после чего удалим висячие вершины,петли, а при появлении кратных рёбер оставим только самоелёгкое.Произвести рекурсивный вызов для полученного графа.

Время работыНа каждом шаге количество вершин уменьшается хотя бы вдвое, аколичество рёбер не увеличивается. Значит, время работы естьO(|E | log |V |).

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 9 / 27

Page 33: 20071125 efficientalgorithms kulikov_lecture09

Общая схема алгоритма Борувки

Общая схемаДля каждой вершины выберем ребро минимального веса,инцидентное ей.Каждую компоненту связности, образованную выбраннымирёбрами, стянем в вершину, после чего удалим висячие вершины,петли, а при появлении кратных рёбер оставим только самоелёгкое.Произвести рекурсивный вызов для полученного графа.

Время работыНа каждом шаге количество вершин уменьшается хотя бы вдвое, аколичество рёбер не увеличивается. Значит, время работы естьO(|E | log |V |).

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 9 / 27

Page 34: 20071125 efficientalgorithms kulikov_lecture09

F -тяжёлые рёбра

ОпределениеПусть лес F является подграфом графа G .

Через F (x , y) обозначим путь (если такой есть вообще) извершины x в вершину y в лесе F .Через wF (x , y) обозначим вес тяжелейшего ребра пути F (x , y)(если такого пути нет, положим wF (x , y) равным ∞).Ребро (x , y) называется F -тяжёлым (F -heavy), еслиw(x , y) > wF (x , y), и F -лёгким (F -light) в противном случае.

ЗамечанияВсе рёбра леса F являются F -лёгкими.Для любого леса F ни одно F -тяжёлое ребро не входит вминимальный остовный лес.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 10 / 27

Page 35: 20071125 efficientalgorithms kulikov_lecture09

F -тяжёлые рёбра

ОпределениеПусть лес F является подграфом графа G .

Через F (x , y) обозначим путь (если такой есть вообще) извершины x в вершину y в лесе F .

Через wF (x , y) обозначим вес тяжелейшего ребра пути F (x , y)(если такого пути нет, положим wF (x , y) равным ∞).Ребро (x , y) называется F -тяжёлым (F -heavy), еслиw(x , y) > wF (x , y), и F -лёгким (F -light) в противном случае.

ЗамечанияВсе рёбра леса F являются F -лёгкими.Для любого леса F ни одно F -тяжёлое ребро не входит вминимальный остовный лес.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 10 / 27

Page 36: 20071125 efficientalgorithms kulikov_lecture09

F -тяжёлые рёбра

ОпределениеПусть лес F является подграфом графа G .

Через F (x , y) обозначим путь (если такой есть вообще) извершины x в вершину y в лесе F .Через wF (x , y) обозначим вес тяжелейшего ребра пути F (x , y)(если такого пути нет, положим wF (x , y) равным ∞).

Ребро (x , y) называется F -тяжёлым (F -heavy), еслиw(x , y) > wF (x , y), и F -лёгким (F -light) в противном случае.

ЗамечанияВсе рёбра леса F являются F -лёгкими.Для любого леса F ни одно F -тяжёлое ребро не входит вминимальный остовный лес.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 10 / 27

Page 37: 20071125 efficientalgorithms kulikov_lecture09

F -тяжёлые рёбра

ОпределениеПусть лес F является подграфом графа G .

Через F (x , y) обозначим путь (если такой есть вообще) извершины x в вершину y в лесе F .Через wF (x , y) обозначим вес тяжелейшего ребра пути F (x , y)(если такого пути нет, положим wF (x , y) равным ∞).Ребро (x , y) называется F -тяжёлым (F -heavy), еслиw(x , y) > wF (x , y), и F -лёгким (F -light) в противном случае.

ЗамечанияВсе рёбра леса F являются F -лёгкими.Для любого леса F ни одно F -тяжёлое ребро не входит вминимальный остовный лес.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 10 / 27

Page 38: 20071125 efficientalgorithms kulikov_lecture09

F -тяжёлые рёбра

ОпределениеПусть лес F является подграфом графа G .

Через F (x , y) обозначим путь (если такой есть вообще) извершины x в вершину y в лесе F .Через wF (x , y) обозначим вес тяжелейшего ребра пути F (x , y)(если такого пути нет, положим wF (x , y) равным ∞).Ребро (x , y) называется F -тяжёлым (F -heavy), еслиw(x , y) > wF (x , y), и F -лёгким (F -light) в противном случае.

Замечания

Все рёбра леса F являются F -лёгкими.Для любого леса F ни одно F -тяжёлое ребро не входит вминимальный остовный лес.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 10 / 27

Page 39: 20071125 efficientalgorithms kulikov_lecture09

F -тяжёлые рёбра

ОпределениеПусть лес F является подграфом графа G .

Через F (x , y) обозначим путь (если такой есть вообще) извершины x в вершину y в лесе F .Через wF (x , y) обозначим вес тяжелейшего ребра пути F (x , y)(если такого пути нет, положим wF (x , y) равным ∞).Ребро (x , y) называется F -тяжёлым (F -heavy), еслиw(x , y) > wF (x , y), и F -лёгким (F -light) в противном случае.

ЗамечанияВсе рёбра леса F являются F -лёгкими.

Для любого леса F ни одно F -тяжёлое ребро не входит вминимальный остовный лес.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 10 / 27

Page 40: 20071125 efficientalgorithms kulikov_lecture09

F -тяжёлые рёбра

ОпределениеПусть лес F является подграфом графа G .

Через F (x , y) обозначим путь (если такой есть вообще) извершины x в вершину y в лесе F .Через wF (x , y) обозначим вес тяжелейшего ребра пути F (x , y)(если такого пути нет, положим wF (x , y) равным ∞).Ребро (x , y) называется F -тяжёлым (F -heavy), еслиw(x , y) > wF (x , y), и F -лёгким (F -light) в противном случае.

ЗамечанияВсе рёбра леса F являются F -лёгкими.Для любого леса F ни одно F -тяжёлое ребро не входит вминимальный остовный лес.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 10 / 27

Page 41: 20071125 efficientalgorithms kulikov_lecture09

Лёгкие и тяжёлые рёбра

Лёгкие и тяжёлые рёбра

Ребро улучшает лес, если либо добавление этого ребра уменьшаетколичество деревьев в лесу, либо добавление этого ребра споследующим удалением самого тяжёлого ребра единственногообразованного цикла ведёт к лесу меньшего веса.Лёгкие рёбра могут улучшить лес, в то время как тяжёлые — нет.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 11 / 27

Page 42: 20071125 efficientalgorithms kulikov_lecture09

Лёгкие и тяжёлые рёбра

Лёгкие и тяжёлые рёбраРебро улучшает лес, если либо добавление этого ребра уменьшаетколичество деревьев в лесу, либо добавление этого ребра споследующим удалением самого тяжёлого ребра единственногообразованного цикла ведёт к лесу меньшего веса.

Лёгкие рёбра могут улучшить лес, в то время как тяжёлые — нет.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 11 / 27

Page 43: 20071125 efficientalgorithms kulikov_lecture09

Лёгкие и тяжёлые рёбра

Лёгкие и тяжёлые рёбраРебро улучшает лес, если либо добавление этого ребра уменьшаетколичество деревьев в лесу, либо добавление этого ребра споследующим удалением самого тяжёлого ребра единственногообразованного цикла ведёт к лесу меньшего веса.Лёгкие рёбра могут улучшить лес, в то время как тяжёлые — нет.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 11 / 27

Page 44: 20071125 efficientalgorithms kulikov_lecture09

Важный факт

ФактСуществует алгоритм, проверяющий, является ли данный лесминимальным остовным лесом, за линейное время. Модификацияданного алгоритма также по лесу F находит за линейное время всеF -тяжёлые ребра.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 12 / 27

Page 45: 20071125 efficientalgorithms kulikov_lecture09

Важная лемма

ЛеммаПусть H – подграф G , полученный случайным выбором каждого ребраG с вероятностью p, а F — минимальный остовный лес H. Тогда мат.ожидание количества F -лёгких рёбер в G не превосходит n/p (гдеn = |V (G )|).

ДоказательствоБудем строить граф H и его минимальный остовный лес Fодновременно.Изначально H и F пусты.Обрабатываем рёбра в порядке увеличения веса.Для ребра e сперва проверим, не лежат ли оба конца e в однойкомпоненте F .

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 13 / 27

Page 46: 20071125 efficientalgorithms kulikov_lecture09

Важная лемма

ЛеммаПусть H – подграф G , полученный случайным выбором каждого ребраG с вероятностью p, а F — минимальный остовный лес H. Тогда мат.ожидание количества F -лёгких рёбер в G не превосходит n/p (гдеn = |V (G )|).

Доказательство

Будем строить граф H и его минимальный остовный лес Fодновременно.Изначально H и F пусты.Обрабатываем рёбра в порядке увеличения веса.Для ребра e сперва проверим, не лежат ли оба конца e в однойкомпоненте F .

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 13 / 27

Page 47: 20071125 efficientalgorithms kulikov_lecture09

Важная лемма

ЛеммаПусть H – подграф G , полученный случайным выбором каждого ребраG с вероятностью p, а F — минимальный остовный лес H. Тогда мат.ожидание количества F -лёгких рёбер в G не превосходит n/p (гдеn = |V (G )|).

ДоказательствоБудем строить граф H и его минимальный остовный лес Fодновременно.

Изначально H и F пусты.Обрабатываем рёбра в порядке увеличения веса.Для ребра e сперва проверим, не лежат ли оба конца e в однойкомпоненте F .

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 13 / 27

Page 48: 20071125 efficientalgorithms kulikov_lecture09

Важная лемма

ЛеммаПусть H – подграф G , полученный случайным выбором каждого ребраG с вероятностью p, а F — минимальный остовный лес H. Тогда мат.ожидание количества F -лёгких рёбер в G не превосходит n/p (гдеn = |V (G )|).

ДоказательствоБудем строить граф H и его минимальный остовный лес Fодновременно.Изначально H и F пусты.

Обрабатываем рёбра в порядке увеличения веса.Для ребра e сперва проверим, не лежат ли оба конца e в однойкомпоненте F .

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 13 / 27

Page 49: 20071125 efficientalgorithms kulikov_lecture09

Важная лемма

ЛеммаПусть H – подграф G , полученный случайным выбором каждого ребраG с вероятностью p, а F — минимальный остовный лес H. Тогда мат.ожидание количества F -лёгких рёбер в G не превосходит n/p (гдеn = |V (G )|).

ДоказательствоБудем строить граф H и его минимальный остовный лес Fодновременно.Изначально H и F пусты.Обрабатываем рёбра в порядке увеличения веса.

Для ребра e сперва проверим, не лежат ли оба конца e в однойкомпоненте F .

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 13 / 27

Page 50: 20071125 efficientalgorithms kulikov_lecture09

Важная лемма

ЛеммаПусть H – подграф G , полученный случайным выбором каждого ребраG с вероятностью p, а F — минимальный остовный лес H. Тогда мат.ожидание количества F -лёгких рёбер в G не превосходит n/p (гдеn = |V (G )|).

ДоказательствоБудем строить граф H и его минимальный остовный лес Fодновременно.Изначально H и F пусты.Обрабатываем рёбра в порядке увеличения веса.Для ребра e сперва проверим, не лежат ли оба конца e в однойкомпоненте F .

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 13 / 27

Page 51: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

Доказательство

Если лежат, то e является F -тяжёлым, поскольку все текущиерёбра F имеют меньший вес.С вероятностью p добавим e в H. Если e добавлено в H иявляется F -лёгким, добавим его в F .Построенный таким образом лес F является минимальнымостовным лесом H (в точности такой лес строит алгоритмКрускала).Ясно, что любое ребро e, которое было F -тяжёлым на моментдобавления, будет F -тяжёлым и дальше, поскольку из F рёбра неудаляются.Аналогично каждое F -лёгкое ребро остаётся таковым, посколькупосле добавления e добавляются только F -тяжёлые рёбра.При обработке ребра мы заранее знаем, является ли оноF -тяжёлым.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 14 / 27

Page 52: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

ДоказательствоЕсли лежат, то e является F -тяжёлым, поскольку все текущиерёбра F имеют меньший вес.

С вероятностью p добавим e в H. Если e добавлено в H иявляется F -лёгким, добавим его в F .Построенный таким образом лес F является минимальнымостовным лесом H (в точности такой лес строит алгоритмКрускала).Ясно, что любое ребро e, которое было F -тяжёлым на моментдобавления, будет F -тяжёлым и дальше, поскольку из F рёбра неудаляются.Аналогично каждое F -лёгкое ребро остаётся таковым, посколькупосле добавления e добавляются только F -тяжёлые рёбра.При обработке ребра мы заранее знаем, является ли оноF -тяжёлым.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 14 / 27

Page 53: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

ДоказательствоЕсли лежат, то e является F -тяжёлым, поскольку все текущиерёбра F имеют меньший вес.С вероятностью p добавим e в H. Если e добавлено в H иявляется F -лёгким, добавим его в F .

Построенный таким образом лес F является минимальнымостовным лесом H (в точности такой лес строит алгоритмКрускала).Ясно, что любое ребро e, которое было F -тяжёлым на моментдобавления, будет F -тяжёлым и дальше, поскольку из F рёбра неудаляются.Аналогично каждое F -лёгкое ребро остаётся таковым, посколькупосле добавления e добавляются только F -тяжёлые рёбра.При обработке ребра мы заранее знаем, является ли оноF -тяжёлым.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 14 / 27

Page 54: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

ДоказательствоЕсли лежат, то e является F -тяжёлым, поскольку все текущиерёбра F имеют меньший вес.С вероятностью p добавим e в H. Если e добавлено в H иявляется F -лёгким, добавим его в F .Построенный таким образом лес F является минимальнымостовным лесом H (в точности такой лес строит алгоритмКрускала).

Ясно, что любое ребро e, которое было F -тяжёлым на моментдобавления, будет F -тяжёлым и дальше, поскольку из F рёбра неудаляются.Аналогично каждое F -лёгкое ребро остаётся таковым, посколькупосле добавления e добавляются только F -тяжёлые рёбра.При обработке ребра мы заранее знаем, является ли оноF -тяжёлым.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 14 / 27

Page 55: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

ДоказательствоЕсли лежат, то e является F -тяжёлым, поскольку все текущиерёбра F имеют меньший вес.С вероятностью p добавим e в H. Если e добавлено в H иявляется F -лёгким, добавим его в F .Построенный таким образом лес F является минимальнымостовным лесом H (в точности такой лес строит алгоритмКрускала).Ясно, что любое ребро e, которое было F -тяжёлым на моментдобавления, будет F -тяжёлым и дальше, поскольку из F рёбра неудаляются.

Аналогично каждое F -лёгкое ребро остаётся таковым, посколькупосле добавления e добавляются только F -тяжёлые рёбра.При обработке ребра мы заранее знаем, является ли оноF -тяжёлым.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 14 / 27

Page 56: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

ДоказательствоЕсли лежат, то e является F -тяжёлым, поскольку все текущиерёбра F имеют меньший вес.С вероятностью p добавим e в H. Если e добавлено в H иявляется F -лёгким, добавим его в F .Построенный таким образом лес F является минимальнымостовным лесом H (в точности такой лес строит алгоритмКрускала).Ясно, что любое ребро e, которое было F -тяжёлым на моментдобавления, будет F -тяжёлым и дальше, поскольку из F рёбра неудаляются.Аналогично каждое F -лёгкое ребро остаётся таковым, посколькупосле добавления e добавляются только F -тяжёлые рёбра.

При обработке ребра мы заранее знаем, является ли оноF -тяжёлым.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 14 / 27

Page 57: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

ДоказательствоЕсли лежат, то e является F -тяжёлым, поскольку все текущиерёбра F имеют меньший вес.С вероятностью p добавим e в H. Если e добавлено в H иявляется F -лёгким, добавим его в F .Построенный таким образом лес F является минимальнымостовным лесом H (в точности такой лес строит алгоритмКрускала).Ясно, что любое ребро e, которое было F -тяжёлым на моментдобавления, будет F -тяжёлым и дальше, поскольку из F рёбра неудаляются.Аналогично каждое F -лёгкое ребро остаётся таковым, посколькупосле добавления e добавляются только F -тяжёлые рёбра.При обработке ребра мы заранее знаем, является ли оноF -тяжёлым.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 14 / 27

Page 58: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)Доказательство

Рассмотрим подбрасывания монетки, соответствующие F -лёгкимрёбрам.Каждый такой эксперимент с вероятностью p (при выпадениирешки) добавляет ребро в F .Размер F в конце не превосходит n − 1, поэтому подбрасываниязаканчиваются после выпадения не более чем n − 1 решек.Представим, что мы подкидываем монетку до выпадения ровно nрешек. Пусть Y есть общее число подбрасываний.Ясно, что количество F -лёгких ребер не превосходит Y .Распределение случайной величины Y — отрицательноебиномиальное распределение с параметрами n и p (количествонезависимых подбрасываний монетки до n выпадений решки, гдерешка выпадает с вероятностью p).E [Y ] = n/p.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27

Page 59: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)Доказательство

Рассмотрим подбрасывания монетки, соответствующие F -лёгкимрёбрам.

Каждый такой эксперимент с вероятностью p (при выпадениирешки) добавляет ребро в F .Размер F в конце не превосходит n − 1, поэтому подбрасываниязаканчиваются после выпадения не более чем n − 1 решек.Представим, что мы подкидываем монетку до выпадения ровно nрешек. Пусть Y есть общее число подбрасываний.Ясно, что количество F -лёгких ребер не превосходит Y .Распределение случайной величины Y — отрицательноебиномиальное распределение с параметрами n и p (количествонезависимых подбрасываний монетки до n выпадений решки, гдерешка выпадает с вероятностью p).E [Y ] = n/p.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27

Page 60: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)Доказательство

Рассмотрим подбрасывания монетки, соответствующие F -лёгкимрёбрам.Каждый такой эксперимент с вероятностью p (при выпадениирешки) добавляет ребро в F .

Размер F в конце не превосходит n − 1, поэтому подбрасываниязаканчиваются после выпадения не более чем n − 1 решек.Представим, что мы подкидываем монетку до выпадения ровно nрешек. Пусть Y есть общее число подбрасываний.Ясно, что количество F -лёгких ребер не превосходит Y .Распределение случайной величины Y — отрицательноебиномиальное распределение с параметрами n и p (количествонезависимых подбрасываний монетки до n выпадений решки, гдерешка выпадает с вероятностью p).E [Y ] = n/p.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27

Page 61: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)Доказательство

Рассмотрим подбрасывания монетки, соответствующие F -лёгкимрёбрам.Каждый такой эксперимент с вероятностью p (при выпадениирешки) добавляет ребро в F .Размер F в конце не превосходит n − 1, поэтому подбрасываниязаканчиваются после выпадения не более чем n − 1 решек.

Представим, что мы подкидываем монетку до выпадения ровно nрешек. Пусть Y есть общее число подбрасываний.Ясно, что количество F -лёгких ребер не превосходит Y .Распределение случайной величины Y — отрицательноебиномиальное распределение с параметрами n и p (количествонезависимых подбрасываний монетки до n выпадений решки, гдерешка выпадает с вероятностью p).E [Y ] = n/p.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27

Page 62: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)Доказательство

Рассмотрим подбрасывания монетки, соответствующие F -лёгкимрёбрам.Каждый такой эксперимент с вероятностью p (при выпадениирешки) добавляет ребро в F .Размер F в конце не превосходит n − 1, поэтому подбрасываниязаканчиваются после выпадения не более чем n − 1 решек.Представим, что мы подкидываем монетку до выпадения ровно nрешек. Пусть Y есть общее число подбрасываний.

Ясно, что количество F -лёгких ребер не превосходит Y .Распределение случайной величины Y — отрицательноебиномиальное распределение с параметрами n и p (количествонезависимых подбрасываний монетки до n выпадений решки, гдерешка выпадает с вероятностью p).E [Y ] = n/p.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27

Page 63: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)Доказательство

Рассмотрим подбрасывания монетки, соответствующие F -лёгкимрёбрам.Каждый такой эксперимент с вероятностью p (при выпадениирешки) добавляет ребро в F .Размер F в конце не превосходит n − 1, поэтому подбрасываниязаканчиваются после выпадения не более чем n − 1 решек.Представим, что мы подкидываем монетку до выпадения ровно nрешек. Пусть Y есть общее число подбрасываний.Ясно, что количество F -лёгких ребер не превосходит Y .

Распределение случайной величины Y — отрицательноебиномиальное распределение с параметрами n и p (количествонезависимых подбрасываний монетки до n выпадений решки, гдерешка выпадает с вероятностью p).E [Y ] = n/p.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27

Page 64: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)Доказательство

Рассмотрим подбрасывания монетки, соответствующие F -лёгкимрёбрам.Каждый такой эксперимент с вероятностью p (при выпадениирешки) добавляет ребро в F .Размер F в конце не превосходит n − 1, поэтому подбрасываниязаканчиваются после выпадения не более чем n − 1 решек.Представим, что мы подкидываем монетку до выпадения ровно nрешек. Пусть Y есть общее число подбрасываний.Ясно, что количество F -лёгких ребер не превосходит Y .Распределение случайной величины Y — отрицательноебиномиальное распределение с параметрами n и p (количествонезависимых подбрасываний монетки до n выпадений решки, гдерешка выпадает с вероятностью p).

E [Y ] = n/p.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27

Page 65: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)Доказательство

Рассмотрим подбрасывания монетки, соответствующие F -лёгкимрёбрам.Каждый такой эксперимент с вероятностью p (при выпадениирешки) добавляет ребро в F .Размер F в конце не превосходит n − 1, поэтому подбрасываниязаканчиваются после выпадения не более чем n − 1 решек.Представим, что мы подкидываем монетку до выпадения ровно nрешек. Пусть Y есть общее число подбрасываний.Ясно, что количество F -лёгких ребер не превосходит Y .Распределение случайной величины Y — отрицательноебиномиальное распределение с параметрами n и p (количествонезависимых подбрасываний монетки до n выпадений решки, гдерешка выпадает с вероятностью p).E [Y ] = n/p.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27

Page 66: 20071125 efficientalgorithms kulikov_lecture09

План лекции

1 Введение

2 Алгоритм

3 Время работы в худшем случае

4 Время работы в среднем

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 16 / 27

Page 67: 20071125 efficientalgorithms kulikov_lecture09

Алгоритм

Randomized-MST(G )

1 � Выход: минимальный остовный лес для G2 применить три шага алгоритма Борувки к G

(количество вершин в полученном графе будетхотя бы в восемь раз меньше);полученный граф назовем G *

3 в G * выбрать подграф H,включая в H каждое ребро с вероятностью 1/2

4 F = Randomized-MST(H)5 найти все F -тяжёлые рёбра графа G * и удалить их из G *;

полученный граф назовём G ′

6 F ′ = Randomized-MST(G ′)7 return рёбра F ′ и рёбра, стянутые на первом шаге

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 17 / 27

Page 68: 20071125 efficientalgorithms kulikov_lecture09

Схема работы

G

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 18 / 27

Page 69: 20071125 efficientalgorithms kulikov_lecture09

Схема работы

G

G *

три шага Борувки

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 18 / 27

Page 70: 20071125 efficientalgorithms kulikov_lecture09

Схема работы

G

G *

три шага Борувки

H

выкидывание рёбер

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 18 / 27

Page 71: 20071125 efficientalgorithms kulikov_lecture09

Схема работы

G

G *

три шага Борувки

H

выкидывание рёбер

. . . . . .

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 18 / 27

Page 72: 20071125 efficientalgorithms kulikov_lecture09

Схема работы

G

G *

три шага Борувки

H

выкидывание рёбер

. . . . . .

G ′удаление F -тяжёлых рёбер

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 18 / 27

Page 73: 20071125 efficientalgorithms kulikov_lecture09

Схема работы

G

G *

три шага Борувки

H

выкидывание рёбер

. . . . . .

G ′удаление F -тяжёлых рёбер

. . . . . .

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 18 / 27

Page 74: 20071125 efficientalgorithms kulikov_lecture09

Анализ алгоритма

Анализ алгоритма

Применение двух шагов Борувки занимает линейное отколичества рёбер время.Нахождение всех F -тяжёлых ребер также требует линейного отколичества рёбер времени.Для оценки времени работы, таким образом, достаточно оценитьобщее количество рёбер в исходной задаче и всех рекурсивныхвызовах.Допустим, что у исходного графа n вершин и m рёбер. НУО,m ≥ n/2.На уровне d дерева работы алгоритма находится не более 2d

графов, в каждом из которых не более n/8d вершин.Значит, общее количество вершин не превосходит∑︀∞

d=0 2dn/8d =∑︀∞

d=0 n/4d ≤ 2n.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 19 / 27

Page 75: 20071125 efficientalgorithms kulikov_lecture09

Анализ алгоритма

Анализ алгоритмаПрименение двух шагов Борувки занимает линейное отколичества рёбер время.

Нахождение всех F -тяжёлых ребер также требует линейного отколичества рёбер времени.Для оценки времени работы, таким образом, достаточно оценитьобщее количество рёбер в исходной задаче и всех рекурсивныхвызовах.Допустим, что у исходного графа n вершин и m рёбер. НУО,m ≥ n/2.На уровне d дерева работы алгоритма находится не более 2d

графов, в каждом из которых не более n/8d вершин.Значит, общее количество вершин не превосходит∑︀∞

d=0 2dn/8d =∑︀∞

d=0 n/4d ≤ 2n.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 19 / 27

Page 76: 20071125 efficientalgorithms kulikov_lecture09

Анализ алгоритма

Анализ алгоритмаПрименение двух шагов Борувки занимает линейное отколичества рёбер время.Нахождение всех F -тяжёлых ребер также требует линейного отколичества рёбер времени.

Для оценки времени работы, таким образом, достаточно оценитьобщее количество рёбер в исходной задаче и всех рекурсивныхвызовах.Допустим, что у исходного графа n вершин и m рёбер. НУО,m ≥ n/2.На уровне d дерева работы алгоритма находится не более 2d

графов, в каждом из которых не более n/8d вершин.Значит, общее количество вершин не превосходит∑︀∞

d=0 2dn/8d =∑︀∞

d=0 n/4d ≤ 2n.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 19 / 27

Page 77: 20071125 efficientalgorithms kulikov_lecture09

Анализ алгоритма

Анализ алгоритмаПрименение двух шагов Борувки занимает линейное отколичества рёбер время.Нахождение всех F -тяжёлых ребер также требует линейного отколичества рёбер времени.Для оценки времени работы, таким образом, достаточно оценитьобщее количество рёбер в исходной задаче и всех рекурсивныхвызовах.

Допустим, что у исходного графа n вершин и m рёбер. НУО,m ≥ n/2.На уровне d дерева работы алгоритма находится не более 2d

графов, в каждом из которых не более n/8d вершин.Значит, общее количество вершин не превосходит∑︀∞

d=0 2dn/8d =∑︀∞

d=0 n/4d ≤ 2n.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 19 / 27

Page 78: 20071125 efficientalgorithms kulikov_lecture09

Анализ алгоритма

Анализ алгоритмаПрименение двух шагов Борувки занимает линейное отколичества рёбер время.Нахождение всех F -тяжёлых ребер также требует линейного отколичества рёбер времени.Для оценки времени работы, таким образом, достаточно оценитьобщее количество рёбер в исходной задаче и всех рекурсивныхвызовах.Допустим, что у исходного графа n вершин и m рёбер. НУО,m ≥ n/2.

На уровне d дерева работы алгоритма находится не более 2d

графов, в каждом из которых не более n/8d вершин.Значит, общее количество вершин не превосходит∑︀∞

d=0 2dn/8d =∑︀∞

d=0 n/4d ≤ 2n.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 19 / 27

Page 79: 20071125 efficientalgorithms kulikov_lecture09

Анализ алгоритма

Анализ алгоритмаПрименение двух шагов Борувки занимает линейное отколичества рёбер время.Нахождение всех F -тяжёлых ребер также требует линейного отколичества рёбер времени.Для оценки времени работы, таким образом, достаточно оценитьобщее количество рёбер в исходной задаче и всех рекурсивныхвызовах.Допустим, что у исходного графа n вершин и m рёбер. НУО,m ≥ n/2.На уровне d дерева работы алгоритма находится не более 2d

графов, в каждом из которых не более n/8d вершин.

Значит, общее количество вершин не превосходит∑︀∞d=0 2dn/8d =

∑︀∞d=0 n/4d ≤ 2n.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 19 / 27

Page 80: 20071125 efficientalgorithms kulikov_lecture09

Анализ алгоритма

Анализ алгоритмаПрименение двух шагов Борувки занимает линейное отколичества рёбер время.Нахождение всех F -тяжёлых ребер также требует линейного отколичества рёбер времени.Для оценки времени работы, таким образом, достаточно оценитьобщее количество рёбер в исходной задаче и всех рекурсивныхвызовах.Допустим, что у исходного графа n вершин и m рёбер. НУО,m ≥ n/2.На уровне d дерева работы алгоритма находится не более 2d

графов, в каждом из которых не более n/8d вершин.Значит, общее количество вершин не превосходит∑︀∞

d=0 2dn/8d =∑︀∞

d=0 n/4d ≤ 2n.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 19 / 27

Page 81: 20071125 efficientalgorithms kulikov_lecture09

План лекции

1 Введение

2 Алгоритм

3 Время работы в худшем случае

4 Время работы в среднем

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 20 / 27

Page 82: 20071125 efficientalgorithms kulikov_lecture09

Время работы в худшем случаеТеоремаВремя работы алгоритма Randomized-MST в худшем случае есть

O(min{n2, m log n}).

ДоказательствоОценим количество рёбер двумя способами.

1 Поскольку кратных рёбер нет, любой граф на уровне d содержитне более (n/8d )2/2 рёбер. Просуммировав по всем уровням,получим верхнюю оценку O(n2).

2 Покажем, что общее количество рёбер двух графов, на которыхпроизводятся рекурсивные вызовы, не превосходит количестварёбер исходного графа. Из этого будет следовать, что на каждомуровне не более m рёбер.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 21 / 27

Page 83: 20071125 efficientalgorithms kulikov_lecture09

Время работы в худшем случаеТеоремаВремя работы алгоритма Randomized-MST в худшем случае есть

O(min{n2, m log n}).

ДоказательствоОценим количество рёбер двумя способами.

1 Поскольку кратных рёбер нет, любой граф на уровне d содержитне более (n/8d )2/2 рёбер. Просуммировав по всем уровням,получим верхнюю оценку O(n2).

2 Покажем, что общее количество рёбер двух графов, на которыхпроизводятся рекурсивные вызовы, не превосходит количестварёбер исходного графа. Из этого будет следовать, что на каждомуровне не более m рёбер.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 21 / 27

Page 84: 20071125 efficientalgorithms kulikov_lecture09

Время работы в худшем случаеТеоремаВремя работы алгоритма Randomized-MST в худшем случае есть

O(min{n2, m log n}).

ДоказательствоОценим количество рёбер двумя способами.

1 Поскольку кратных рёбер нет, любой граф на уровне d содержитне более (n/8d )2/2 рёбер. Просуммировав по всем уровням,получим верхнюю оценку O(n2).

2 Покажем, что общее количество рёбер двух графов, на которыхпроизводятся рекурсивные вызовы, не превосходит количестварёбер исходного графа. Из этого будет следовать, что на каждомуровне не более m рёбер.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 21 / 27

Page 85: 20071125 efficientalgorithms kulikov_lecture09

Время работы в худшем случаеТеоремаВремя работы алгоритма Randomized-MST в худшем случае есть

O(min{n2, m log n}).

ДоказательствоОценим количество рёбер двумя способами.

1 Поскольку кратных рёбер нет, любой граф на уровне d содержитне более (n/8d )2/2 рёбер. Просуммировав по всем уровням,получим верхнюю оценку O(n2).

2 Покажем, что общее количество рёбер двух графов, на которыхпроизводятся рекурсивные вызовы, не превосходит количестварёбер исходного графа. Из этого будет следовать, что на каждомуровне не более m рёбер.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 21 / 27

Page 86: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

Доказательство

Количество рёбер в левой ветке есть |E (H)|.Количество рёбер в правой ветке есть

|E (G *)| − |F -тяжёлые в G *|≤ |E (G *)| − |E (H)|+ |E (F )|≤ (|E (G )| − |V (G )|/2)− |E (H)|+ |V (G )|/2≤ |E (G )| − |E (H)|.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 22 / 27

Page 87: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

ДоказательствоКоличество рёбер в левой ветке есть |E (H)|.

Количество рёбер в правой ветке есть|E (G *)| − |F -тяжёлые в G *|

≤ |E (G *)| − |E (H)|+ |E (F )|≤ (|E (G )| − |V (G )|/2)− |E (H)|+ |V (G )|/2≤ |E (G )| − |E (H)|.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 22 / 27

Page 88: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

ДоказательствоКоличество рёбер в левой ветке есть |E (H)|.Количество рёбер в правой ветке есть

|E (G *)| − |F -тяжёлые в G *|≤ |E (G *)| − |E (H)|+ |E (F )|≤ (|E (G )| − |V (G )|/2)− |E (H)|+ |V (G )|/2≤ |E (G )| − |E (H)|.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 22 / 27

Page 89: 20071125 efficientalgorithms kulikov_lecture09

План лекции

1 Введение

2 Алгоритм

3 Время работы в худшем случае

4 Время работы в среднем

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 23 / 27

Page 90: 20071125 efficientalgorithms kulikov_lecture09

Время работы в среднем

ТеоремаМат. ожидание времени работы алгоритма Randomized-MST естьO(m).

ДоказательствоОбозначим через T (n, m) мат. ожидание времени работыалгоритма на графе из n вершин и m рёбер.Применение трёх шагов алгоритма Борувки требует O(n + m)шагов и производит граф G * с не более чем n/8 вершинами.На следующем шаге за время O(n + m) производится граф H смат. ожиданием количества рёбер не более m/2.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 24 / 27

Page 91: 20071125 efficientalgorithms kulikov_lecture09

Время работы в среднем

ТеоремаМат. ожидание времени работы алгоритма Randomized-MST естьO(m).

Доказательство

Обозначим через T (n, m) мат. ожидание времени работыалгоритма на графе из n вершин и m рёбер.Применение трёх шагов алгоритма Борувки требует O(n + m)шагов и производит граф G * с не более чем n/8 вершинами.На следующем шаге за время O(n + m) производится граф H смат. ожиданием количества рёбер не более m/2.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 24 / 27

Page 92: 20071125 efficientalgorithms kulikov_lecture09

Время работы в среднем

ТеоремаМат. ожидание времени работы алгоритма Randomized-MST естьO(m).

ДоказательствоОбозначим через T (n, m) мат. ожидание времени работыалгоритма на графе из n вершин и m рёбер.

Применение трёх шагов алгоритма Борувки требует O(n + m)шагов и производит граф G * с не более чем n/8 вершинами.На следующем шаге за время O(n + m) производится граф H смат. ожиданием количества рёбер не более m/2.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 24 / 27

Page 93: 20071125 efficientalgorithms kulikov_lecture09

Время работы в среднем

ТеоремаМат. ожидание времени работы алгоритма Randomized-MST естьO(m).

ДоказательствоОбозначим через T (n, m) мат. ожидание времени работыалгоритма на графе из n вершин и m рёбер.Применение трёх шагов алгоритма Борувки требует O(n + m)шагов и производит граф G * с не более чем n/8 вершинами.

На следующем шаге за время O(n + m) производится граф H смат. ожиданием количества рёбер не более m/2.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 24 / 27

Page 94: 20071125 efficientalgorithms kulikov_lecture09

Время работы в среднем

ТеоремаМат. ожидание времени работы алгоритма Randomized-MST естьO(m).

ДоказательствоОбозначим через T (n, m) мат. ожидание времени работыалгоритма на графе из n вершин и m рёбер.Применение трёх шагов алгоритма Борувки требует O(n + m)шагов и производит граф G * с не более чем n/8 вершинами.На следующем шаге за время O(n + m) производится граф H смат. ожиданием количества рёбер не более m/2.

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 24 / 27

Page 95: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

Доказательство

Нахождение минимального остовного леса F для H требуетT (n/8, m/2) шагов в среднем.Нахождение всех F -тяжёлых рёбер делается за время O(n + m) ипроизводит граф G ′ с не более чем n/8 вершинами и мат.ожиданием количества рёбер не более n/4 (по доказанной лемме).Наождение минимального остовного леса для G ′ требует времениT (n/8, n/4).Итого,

T (n, m) ≤ T (n/8, m/2) + T (n/8, n/4) + c(n + m),

откуда следует, что T (n, m) ≤ 2c(n + m).

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 25 / 27

Page 96: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

ДоказательствоНахождение минимального остовного леса F для H требуетT (n/8, m/2) шагов в среднем.

Нахождение всех F -тяжёлых рёбер делается за время O(n + m) ипроизводит граф G ′ с не более чем n/8 вершинами и мат.ожиданием количества рёбер не более n/4 (по доказанной лемме).Наождение минимального остовного леса для G ′ требует времениT (n/8, n/4).Итого,

T (n, m) ≤ T (n/8, m/2) + T (n/8, n/4) + c(n + m),

откуда следует, что T (n, m) ≤ 2c(n + m).

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 25 / 27

Page 97: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

ДоказательствоНахождение минимального остовного леса F для H требуетT (n/8, m/2) шагов в среднем.Нахождение всех F -тяжёлых рёбер делается за время O(n + m) ипроизводит граф G ′ с не более чем n/8 вершинами и мат.ожиданием количества рёбер не более n/4 (по доказанной лемме).

Наождение минимального остовного леса для G ′ требует времениT (n/8, n/4).Итого,

T (n, m) ≤ T (n/8, m/2) + T (n/8, n/4) + c(n + m),

откуда следует, что T (n, m) ≤ 2c(n + m).

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 25 / 27

Page 98: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

ДоказательствоНахождение минимального остовного леса F для H требуетT (n/8, m/2) шагов в среднем.Нахождение всех F -тяжёлых рёбер делается за время O(n + m) ипроизводит граф G ′ с не более чем n/8 вершинами и мат.ожиданием количества рёбер не более n/4 (по доказанной лемме).Наождение минимального остовного леса для G ′ требует времениT (n/8, n/4).

Итого,

T (n, m) ≤ T (n/8, m/2) + T (n/8, n/4) + c(n + m),

откуда следует, что T (n, m) ≤ 2c(n + m).

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 25 / 27

Page 99: 20071125 efficientalgorithms kulikov_lecture09

Доказательство (продолжение)

ДоказательствоНахождение минимального остовного леса F для H требуетT (n/8, m/2) шагов в среднем.Нахождение всех F -тяжёлых рёбер делается за время O(n + m) ипроизводит граф G ′ с не более чем n/8 вершинами и мат.ожиданием количества рёбер не более n/4 (по доказанной лемме).Наождение минимального остовного леса для G ′ требует времениT (n/8, n/4).Итого,

T (n, m) ≤ T (n/8, m/2) + T (n/8, n/4) + c(n + m),

откуда следует, что T (n, m) ≤ 2c(n + m).

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 25 / 27

Page 100: 20071125 efficientalgorithms kulikov_lecture09

Что мы узнали за сегодня?

Что мы узнали за сегодня?

Существует детерминированный линейный алгоритм проверки,является ли данный лес минимальным остовным лесом данногографа.Используя этот алгоритм, можно построить вероятностныйалгоритм для нахождения минимального остовного леса, которыйв худшем случае имеет время работы O(min{n2, m log n}), а всреднем — O(n + m).

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 26 / 27

Page 101: 20071125 efficientalgorithms kulikov_lecture09

Что мы узнали за сегодня?

Что мы узнали за сегодня?Существует детерминированный линейный алгоритм проверки,является ли данный лес минимальным остовным лесом данногографа.

Используя этот алгоритм, можно построить вероятностныйалгоритм для нахождения минимального остовного леса, которыйв худшем случае имеет время работы O(min{n2, m log n}), а всреднем — O(n + m).

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 26 / 27

Page 102: 20071125 efficientalgorithms kulikov_lecture09

Что мы узнали за сегодня?

Что мы узнали за сегодня?Существует детерминированный линейный алгоритм проверки,является ли данный лес минимальным остовным лесом данногографа.Используя этот алгоритм, можно построить вероятностныйалгоритм для нахождения минимального остовного леса, которыйв худшем случае имеет время работы O(min{n2, m log n}), а всреднем — O(n + m).

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 26 / 27

Page 103: 20071125 efficientalgorithms kulikov_lecture09

Спасибо за внимание!

А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 27 / 27