SlideShare una empresa de Scribd logo
1 de 103
Descargar para leer sin conexión
с/к “Эффективные алгоритмы”
        Лекция 9: Линейный вероятностный алгоритм
       построения минимального покрывающего дерева

                                      А. Куликов

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




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



1   Введение




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



1   Введение


2   Алгоритм




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



1   Введение


2   Алгоритм


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




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



1   Введение


2   Алгоритм


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


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




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



1   Введение


2   Алгоритм


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


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




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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево   4 / 27
Минимальное покрывающее деревро
Определение
      Покрывающим деревом (связного) графа (spanning tree)
      называется его поддерево на всех вершинах графа.




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




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

Замечания




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

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




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

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

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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево   5 / 27
Общая схема детерминированных алгоритмов
Общая схема детерминированных алгоритмов
      На кажом шаге поддерживаем ациклический подграф F графа G ,
      который будем называть промежуточным остовным лесом
      (intermediate spanning forest).




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




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




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




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

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


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




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


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




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


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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево          6 / 27
Два важных свойства минимального покрывающего
дерева

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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево   7 / 27
Два важных свойства минимального покрывающего
дерева

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

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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево   7 / 27
Два важных свойства минимального покрывающего
дерева

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

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

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



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



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




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



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




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



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




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



Известные алгоритмы
Алгоритм Борувки Добавляем все безопасные рёбра и производим
           рекурсивный вызов.
Алгоритм Прима В каждый момент есть ровно одна нетривиальная
           компонента связности. На каждом шаге добавляем в неё
           безопасное ребро.
Алгоритм Крускала Перебираем рёбра в порядке возрастания их веса.
           Если ребро является безопасным, добавляем его.




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

Общая схема




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

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




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

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




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

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




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

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

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


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

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




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

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




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

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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево              10 / 27
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) в противном случае.




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево                 10 / 27
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) в противном случае.

Замечания




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево                 10 / 27
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 -лёгкими.




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево                 10 / 27
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
Лёгкие и тяжёлые рёбра




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




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




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




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




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




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




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




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

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




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

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

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




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

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

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




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

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

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




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

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

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




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

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

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


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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево   14 / 27
Доказательство (продолжение)
Доказательство
      Если лежат, то e является F -тяжёлым, поскольку все текущие
      рёбра F имеют меньший вес.




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




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




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




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



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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево   15 / 27
Доказательство (продолжение)
Доказательство
      Рассмотрим подбрасывания монетки, соответствующие F -лёгким
      рёбрам.




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево    15 / 27
Доказательство (продолжение)
Доказательство
      Рассмотрим подбрасывания монетки, соответствующие F -лёгким
      рёбрам.
      Каждый такой эксперимент с вероятностью p (при выпадении
      решки) добавляет ребро в F .




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




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




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




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


А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево       15 / 27
Доказательство (продолжение)
Доказательство
      Рассмотрим подбрасывания монетки, соответствующие 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
План лекции



1   Введение


2   Алгоритм


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


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




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

Randomized-MST(G )
1 £ Выход: минимальный остовный лес для G
2 применить три шага алгоритма Борувки к 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
Схема работы


                                           G




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


                                           G

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

                                           G*




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


                                           G

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

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


                       H




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


                                           G

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

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


                       H

      ...                         ...




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


                                              G

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

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

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

      ...                            ...




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


                                              G

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

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

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

      ...                            ...             ...             ...




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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево   19 / 27
Анализ алгоритма
Анализ алгоритма
      Применение двух шагов Борувки занимает линейное от
      количества рёбер время.




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево   19 / 27
Анализ алгоритма
Анализ алгоритма
      Применение двух шагов Борувки занимает линейное от
      количества рёбер время.
      Нахождение всех F -тяжёлых ребер также требует линейного от
      количества рёбер времени.




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево      19 / 27
Анализ алгоритма
Анализ алгоритма
      Применение двух шагов Борувки занимает линейное от
      количества рёбер время.
      Нахождение всех F -тяжёлых ребер также требует линейного от
      количества рёбер времени.
      Для оценки времени работы, таким образом, достаточно оценить
      общее количество рёбер в исходной задаче и всех рекурсивных
      вызовах.




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




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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево        19 / 27
Анализ алгоритма
Анализ алгоритма
      Применение двух шагов Борувки занимает линейное от
      количества рёбер время.
      Нахождение всех F -тяжёлых ребер также требует линейного от
      количества рёбер времени.
      Для оценки времени работы, таким образом, достаточно оценить
      общее количество рёбер в исходной задаче и всех рекурсивных
      вызовах.
      Допустим, что у исходного графа n вершин и m рёбер. НУО,
      m ≥ n/2.
      На уровне d дерева работы алгоритма находится не более 2d
      графов, в каждом из которых не более n/8d вершин.
      Значит, общее количество вершин не превосходит
      ∑︀∞ d          ∑︀∞
                 d            d
        d=0 2 n/8 =    d=0 n/4 ≤ 2n.


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



1   Введение


2   Алгоритм


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


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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево   20 / 27
Время работы в худшем случае
Теорема
Время работы алгоритма Randomized-MST в худшем случае есть

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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево   21 / 27
Время работы в худшем случае
Теорема
Время работы алгоритма Randomized-MST в худшем случае есть

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



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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево   21 / 27
Время работы в худшем случае
Теорема
Время работы алгоритма Randomized-MST в худшем случае есть

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



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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево       21 / 27
Время работы в худшем случае
Теорема
Время работы алгоритма Randomized-MST в худшем случае есть

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



Доказательство
Оценим количество рёбер двумя способами.
   1   Поскольку кратных рёбер нет, любой граф на уровне d содержит
       не более (n/8d )2 /2 рёбер. Просуммировав по всем уровням,
       получим верхнюю оценку O(n2 ).
   2   Покажем, что общее количество рёбер двух графов, на которых
       производятся рекурсивные вызовы, не превосходит количества
       рёбер исходного графа. Из этого будет следовать, что на каждом
       уровне не более m рёбер.
А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево        21 / 27
Доказательство (продолжение)



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




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



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




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



Доказательство
      Количество рёбер в левой ветке есть |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
План лекции



1   Введение


2   Алгоритм


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


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




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


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




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


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

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




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


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

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




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


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

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




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


Теорема
Мат. ожидание времени работы алгоритма 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
Доказательство (продолжение)

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




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

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




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

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




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

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




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

Доказательство
      Нахождение минимального остовного леса 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
Что мы узнали за сегодня?



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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево   26 / 27
Что мы узнали за сегодня?



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




А. Куликов (CS клуб при ПОМИ)   9. Мин. покрывающее дерево   26 / 27
Что мы узнали за сегодня?



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




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




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

Más contenido relacionado

Destacado

2012 SAP Retail Forum
2012 SAP Retail Forum2012 SAP Retail Forum
2012 SAP Retail ForumKCIEvents
 
Section b planning
Section b planningSection b planning
Section b planningKStockwell
 
結腸直腸癌手冊 Hope and help
結腸直腸癌手冊 Hope and help結腸直腸癌手冊 Hope and help
結腸直腸癌手冊 Hope and helplys167
 
WinDirStat Quick Guide
WinDirStat Quick GuideWinDirStat Quick Guide
WinDirStat Quick GuideJacob Knaack
 
BpSM 2014.09. - Sebestyén Endre: Alternatív splicing változások elemzése rákg...
BpSM 2014.09. - Sebestyén Endre: Alternatív splicing változások elemzése rákg...BpSM 2014.09. - Sebestyén Endre: Alternatív splicing változások elemzése rákg...
BpSM 2014.09. - Sebestyén Endre: Alternatív splicing változások elemzése rákg...Budapest Science Meetup
 
Hydrological modeling of sustainable land management interventions in the Miz...
Hydrological modeling of sustainable land management interventions in the Miz...Hydrological modeling of sustainable land management interventions in the Miz...
Hydrological modeling of sustainable land management interventions in the Miz...essp2
 

Destacado (11)

2012 SAP Retail Forum
2012 SAP Retail Forum2012 SAP Retail Forum
2012 SAP Retail Forum
 
Section b planning
Section b planningSection b planning
Section b planning
 
Newspaper analysis
Newspaper analysisNewspaper analysis
Newspaper analysis
 
Mississippi
MississippiMississippi
Mississippi
 
結腸直腸癌手冊 Hope and help
結腸直腸癌手冊 Hope and help結腸直腸癌手冊 Hope and help
結腸直腸癌手冊 Hope and help
 
Understanding Adoption and Discontinuance for Greater Impact
Understanding Adoption and Discontinuance for Greater ImpactUnderstanding Adoption and Discontinuance for Greater Impact
Understanding Adoption and Discontinuance for Greater Impact
 
WinDirStat Quick Guide
WinDirStat Quick GuideWinDirStat Quick Guide
WinDirStat Quick Guide
 
Bark.mc kee.project.january2012
Bark.mc kee.project.january2012Bark.mc kee.project.january2012
Bark.mc kee.project.january2012
 
BpSM 2014.09. - Sebestyén Endre: Alternatív splicing változások elemzése rákg...
BpSM 2014.09. - Sebestyén Endre: Alternatív splicing változások elemzése rákg...BpSM 2014.09. - Sebestyén Endre: Alternatív splicing változások elemzése rákg...
BpSM 2014.09. - Sebestyén Endre: Alternatív splicing változások elemzése rákg...
 
Hydrological modeling of sustainable land management interventions in the Miz...
Hydrological modeling of sustainable land management interventions in the Miz...Hydrological modeling of sustainable land management interventions in the Miz...
Hydrological modeling of sustainable land management interventions in the Miz...
 
Bbfc
BbfcBbfc
Bbfc
 

Más de Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugsComputer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01Computer Science Club
 

Más de Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 

20071125 efficientalgorithms kulikov_lecture09

  • 1. с/к “Эффективные алгоритмы” Лекция 9: Линейный вероятностный алгоритм построения минимального покрывающего дерева А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/∼infclub/ А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 1 / 27
  • 2. План лекции 1 Введение А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 2 / 27
  • 3. План лекции 1 Введение 2 Алгоритм А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 2 / 27
  • 4. План лекции 1 Введение 2 Алгоритм 3 Время работы в худшем случае А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 2 / 27
  • 5. План лекции 1 Введение 2 Алгоритм 3 Время работы в худшем случае 4 Время работы в среднем А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 2 / 27
  • 6. План лекции 1 Введение 2 Алгоритм 3 Время работы в худшем случае 4 Время работы в среднем А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 3 / 27
  • 7. Минимальное покрывающее деревро Определение А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 4 / 27
  • 8. Минимальное покрывающее деревро Определение Покрывающим деревом (связного) графа (spanning tree) называется его поддерево на всех вершинах графа. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 4 / 27
  • 9. Минимальное покрывающее деревро Определение Покрывающим деревом (связного) графа (spanning tree) называется его поддерево на всех вершинах графа. Задача о минимальном покрывающем дереве (minimum spanning tree problem, MST) заключается в нахождении по данному взвешенному (с вещественными весами на рёбрах) графу покрывающего дерева минимального веса. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 4 / 27
  • 10. Минимальное покрывающее деревро Определение Покрывающим деревом (связного) графа (spanning tree) называется его поддерево на всех вершинах графа. Задача о минимальном покрывающем дереве (minimum spanning tree problem, MST) заключается в нахождении по данному взвешенному (с вещественными весами на рёбрах) графу покрывающего дерева минимального веса. Замечания А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 4 / 27
  • 11. Минимальное покрывающее деревро Определение Покрывающим деревом (связного) графа (spanning tree) называется его поддерево на всех вершинах графа. Задача о минимальном покрывающем дереве (minimum spanning tree problem, MST) заключается в нахождении по данному взвешенному (с вещественными весами на рёбрах) графу покрывающего дерева минимального веса. Замечания Будем считать, что веса всех рёбер различны. При таком предположении у графа есть ровно одно минимальное покрывающее дерево. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 4 / 27
  • 12. Минимальное покрывающее деревро Определение Покрывающим деревом (связного) графа (spanning tree) называется его поддерево на всех вершинах графа. Задача о минимальном покрывающем дереве (minimum spanning tree problem, MST) заключается в нахождении по данному взвешенному (с вещественными весами на рёбрах) графу покрывающего дерева минимального веса. Замечания Будем считать, что веса всех рёбер различны. При таком предположении у графа есть ровно одно минимальное покрывающее дерево. Для несвязного графа имеет смысл искать минимальный покрывающий лес. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 4 / 27
  • 13. Общая схема детерминированных алгоритмов Общая схема детерминированных алгоритмов А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 5 / 27
  • 14. Общая схема детерминированных алгоритмов Общая схема детерминированных алгоритмов На кажом шаге поддерживаем ациклический подграф F графа G , который будем называть промежуточным остовным лесом (intermediate spanning forest). А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 5 / 27
  • 15. Общая схема детерминированных алгоритмов Общая схема детерминированных алгоритмов На кажом шаге поддерживаем ациклический подграф F графа G , который будем называть промежуточным остовным лесом (intermediate spanning forest). F является подграфом минимального покрывающего дерева, а каждая компонента F является минимальным покрывающим деревом подграфа на вершинах этой компоненты. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 5 / 27
  • 16. Общая схема детерминированных алгоритмов Общая схема детерминированных алгоритмов На кажом шаге поддерживаем ациклический подграф F графа G , который будем называть промежуточным остовным лесом (intermediate spanning forest). F является подграфом минимального покрывающего дерева, а каждая компонента F является минимальным покрывающим деревом подграфа на вершинах этой компоненты. На каждом шаге алгоритм соединяет различные компоненты, добавляя рёбра графа G в F . А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 5 / 27
  • 17. Общая схема детерминированных алгоритмов Общая схема детерминированных алгоритмов На кажом шаге поддерживаем ациклический подграф F графа G , который будем называть промежуточным остовным лесом (intermediate spanning forest). F является подграфом минимального покрывающего дерева, а каждая компонента F является минимальным покрывающим деревом подграфа на вершинах этой компоненты. На каждом шаге алгоритм соединяет различные компоненты, добавляя рёбра графа G в F . Изначально, F содержит |V | деревьев, состоящих из одной вершины. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 5 / 27
  • 18. Общая схема детерминированных алгоритмов Общая схема детерминированных алгоритмов На кажом шаге поддерживаем ациклический подграф F графа G , который будем называть промежуточным остовным лесом (intermediate spanning forest). F является подграфом минимального покрывающего дерева, а каждая компонента F является минимальным покрывающим деревом подграфа на вершинах этой компоненты. На каждом шаге алгоритм соединяет различные компоненты, добавляя рёбра графа G в F . Изначально, F содержит |V | деревьев, состоящих из одной вершины. В конце работы алгоритма F состоит из одного дерева на |V | вершинах, которое и является минимальным покрывающим деревом. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 5 / 27
  • 19. Безопасные и бесполезные рёбра Определение Рассмотрим граф G и его промежуточный подлес F . А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 6 / 27
  • 20. Безопасные и бесполезные рёбра Определение Рассмотрим граф G и его промежуточный подлес F . Ребро G называется бесполезным (useless), если оно не является ребром F , в то время как оба его конца принадлежат одной компоненте F . А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 6 / 27
  • 21. Безопасные и бесполезные рёбра Определение Рассмотрим граф G и его промежуточный подлес F . Ребро G называется бесполезным (useless), если оно не является ребром F , в то время как оба его конца принадлежат одной компоненте F . Ребро G называется безопасным (safe), если для некоторой компоненты F это ребро является самым лёгким из всех рёбер, соединяющих вершины этой компоненты с оставшимися вершинами. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 6 / 27
  • 22. Два важных свойства минимального покрывающего дерева Свойство цикла Для любого цикла C самое тяжёлое ребро C не содержится в минимальном покрывающем дереве. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 7 / 27
  • 23. Два важных свойства минимального покрывающего дерева Свойство цикла Для любого цикла C самое тяжёлое ребро C не содержится в минимальном покрывающем дереве. Свойство разреза Для любого подмножества вершин X ⊂ V самое лёгкое ребро между X и V ∖ X содержится в минимальном покрывающем дереве. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 7 / 27
  • 24. Два важных свойства минимального покрывающего дерева Свойство цикла Для любого цикла C самое тяжёлое ребро C не содержится в минимальном покрывающем дереве. Свойство разреза Для любого подмножества вершин X ⊂ V самое лёгкое ребро между X и V ∖ X содержится в минимальном покрывающем дереве. Следствие Минимальное покрывающее дерево содержит все безопасные рёбра и не содержит бесполезных рёбер. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 7 / 27
  • 25. Известные алгоритмы Известные алгоритмы А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 8 / 27
  • 26. Известные алгоритмы Известные алгоритмы Алгоритм Борувки Добавляем все безопасные рёбра и производим рекурсивный вызов. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 8 / 27
  • 27. Известные алгоритмы Известные алгоритмы Алгоритм Борувки Добавляем все безопасные рёбра и производим рекурсивный вызов. Алгоритм Прима В каждый момент есть ровно одна нетривиальная компонента связности. На каждом шаге добавляем в неё безопасное ребро. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 8 / 27
  • 28. Известные алгоритмы Известные алгоритмы Алгоритм Борувки Добавляем все безопасные рёбра и производим рекурсивный вызов. Алгоритм Прима В каждый момент есть ровно одна нетривиальная компонента связности. На каждом шаге добавляем в неё безопасное ребро. Алгоритм Крускала Перебираем рёбра в порядке возрастания их веса. Если ребро является безопасным, добавляем его. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 8 / 27
  • 29. Общая схема алгоритма Борувки Общая схема А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 9 / 27
  • 30. Общая схема алгоритма Борувки Общая схема Для каждой вершины выберем ребро минимального веса, инцидентное ей. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 9 / 27
  • 31. Общая схема алгоритма Борувки Общая схема Для каждой вершины выберем ребро минимального веса, инцидентное ей. Каждую компоненту связности, образованную выбранными рёбрами, стянем в вершину, после чего удалим висячие вершины, петли, а при появлении кратных рёбер оставим только самое лёгкое. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 9 / 27
  • 32. Общая схема алгоритма Борувки Общая схема Для каждой вершины выберем ребро минимального веса, инцидентное ей. Каждую компоненту связности, образованную выбранными рёбрами, стянем в вершину, после чего удалим висячие вершины, петли, а при появлении кратных рёбер оставим только самое лёгкое. Произвести рекурсивный вызов для полученного графа. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 9 / 27
  • 33. Общая схема алгоритма Борувки Общая схема Для каждой вершины выберем ребро минимального веса, инцидентное ей. Каждую компоненту связности, образованную выбранными рёбрами, стянем в вершину, после чего удалим висячие вершины, петли, а при появлении кратных рёбер оставим только самое лёгкое. Произвести рекурсивный вызов для полученного графа. Время работы На каждом шаге количество вершин уменьшается хотя бы вдвое, а количество рёбер не увеличивается. Значит, время работы есть O(|E | log |V |). А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 9 / 27
  • 34. F -тяжёлые рёбра Определение Пусть лес F является подграфом графа G . А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 10 / 27
  • 35. F -тяжёлые рёбра Определение Пусть лес F является подграфом графа G . Через F (x, y ) обозначим путь (если такой есть вообще) из вершины x в вершину y в лесе F . А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 10 / 27
  • 36. F -тяжёлые рёбра Определение Пусть лес F является подграфом графа G . Через F (x, y ) обозначим путь (если такой есть вообще) из вершины x в вершину y в лесе F . Через wF (x, y ) обозначим вес тяжелейшего ребра пути F (x, y ) (если такого пути нет, положим wF (x, y ) равным ∞). А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 10 / 27
  • 37. 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) в противном случае. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 10 / 27
  • 38. 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) в противном случае. Замечания А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 10 / 27
  • 39. 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 -лёгкими. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 10 / 27
  • 40. 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
  • 41. Лёгкие и тяжёлые рёбра Лёгкие и тяжёлые рёбра А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 11 / 27
  • 42. Лёгкие и тяжёлые рёбра Лёгкие и тяжёлые рёбра Ребро улучшает лес, если либо добавление этого ребра уменьшает количество деревьев в лесу, либо добавление этого ребра с последующим удалением самого тяжёлого ребра единственного образованного цикла ведёт к лесу меньшего веса. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 11 / 27
  • 43. Лёгкие и тяжёлые рёбра Лёгкие и тяжёлые рёбра Ребро улучшает лес, если либо добавление этого ребра уменьшает количество деревьев в лесу, либо добавление этого ребра с последующим удалением самого тяжёлого ребра единственного образованного цикла ведёт к лесу меньшего веса. Лёгкие рёбра могут улучшить лес, в то время как тяжёлые — нет. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 11 / 27
  • 44. Важный факт Факт Существует алгоритм, проверяющий, является ли данный лес минимальным остовным лесом, за линейное время. Модификация данного алгоритма также по лесу F находит за линейное время все F -тяжёлые ребра. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 12 / 27
  • 45. Важная лемма Лемма Пусть H – подграф G , полученный случайным выбором каждого ребра G с вероятностью p, а F — минимальный остовный лес H. Тогда мат. ожидание количества F -лёгких рёбер в G не превосходит n/p (где n = |V (G )|). А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 13 / 27
  • 46. Важная лемма Лемма Пусть H – подграф G , полученный случайным выбором каждого ребра G с вероятностью p, а F — минимальный остовный лес H. Тогда мат. ожидание количества F -лёгких рёбер в G не превосходит n/p (где n = |V (G )|). Доказательство А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 13 / 27
  • 47. Важная лемма Лемма Пусть H – подграф G , полученный случайным выбором каждого ребра G с вероятностью p, а F — минимальный остовный лес H. Тогда мат. ожидание количества F -лёгких рёбер в G не превосходит n/p (где n = |V (G )|). Доказательство Будем строить граф H и его минимальный остовный лес F одновременно. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 13 / 27
  • 48. Важная лемма Лемма Пусть H – подграф G , полученный случайным выбором каждого ребра G с вероятностью p, а F — минимальный остовный лес H. Тогда мат. ожидание количества F -лёгких рёбер в G не превосходит n/p (где n = |V (G )|). Доказательство Будем строить граф H и его минимальный остовный лес F одновременно. Изначально H и F пусты. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 13 / 27
  • 49. Важная лемма Лемма Пусть H – подграф G , полученный случайным выбором каждого ребра G с вероятностью p, а F — минимальный остовный лес H. Тогда мат. ожидание количества F -лёгких рёбер в G не превосходит n/p (где n = |V (G )|). Доказательство Будем строить граф H и его минимальный остовный лес F одновременно. Изначально H и F пусты. Обрабатываем рёбра в порядке увеличения веса. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 13 / 27
  • 50. Важная лемма Лемма Пусть H – подграф G , полученный случайным выбором каждого ребра G с вероятностью p, а F — минимальный остовный лес H. Тогда мат. ожидание количества F -лёгких рёбер в G не превосходит n/p (где n = |V (G )|). Доказательство Будем строить граф H и его минимальный остовный лес F одновременно. Изначально H и F пусты. Обрабатываем рёбра в порядке увеличения веса. Для ребра e сперва проверим, не лежат ли оба конца e в одной компоненте F . А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 13 / 27
  • 51. Доказательство (продолжение) Доказательство А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 14 / 27
  • 52. Доказательство (продолжение) Доказательство Если лежат, то e является F -тяжёлым, поскольку все текущие рёбра F имеют меньший вес. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 14 / 27
  • 53. Доказательство (продолжение) Доказательство Если лежат, то e является F -тяжёлым, поскольку все текущие рёбра F имеют меньший вес. С вероятностью p добавим e в H. Если e добавлено в H и является F -лёгким, добавим его в F . А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 14 / 27
  • 54. Доказательство (продолжение) Доказательство Если лежат, то e является F -тяжёлым, поскольку все текущие рёбра F имеют меньший вес. С вероятностью p добавим e в H. Если e добавлено в H и является F -лёгким, добавим его в F . Построенный таким образом лес F является минимальным остовным лесом H (в точности такой лес строит алгоритм Крускала). А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 14 / 27
  • 55. Доказательство (продолжение) Доказательство Если лежат, то e является F -тяжёлым, поскольку все текущие рёбра F имеют меньший вес. С вероятностью p добавим e в H. Если e добавлено в H и является F -лёгким, добавим его в F . Построенный таким образом лес F является минимальным остовным лесом H (в точности такой лес строит алгоритм Крускала). Ясно, что любое ребро e, которое было F -тяжёлым на момент добавления, будет F -тяжёлым и дальше, поскольку из F рёбра не удаляются. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 14 / 27
  • 56. Доказательство (продолжение) Доказательство Если лежат, то e является F -тяжёлым, поскольку все текущие рёбра F имеют меньший вес. С вероятностью p добавим e в H. Если e добавлено в H и является F -лёгким, добавим его в F . Построенный таким образом лес F является минимальным остовным лесом H (в точности такой лес строит алгоритм Крускала). Ясно, что любое ребро e, которое было F -тяжёлым на момент добавления, будет F -тяжёлым и дальше, поскольку из F рёбра не удаляются. Аналогично каждое F -лёгкое ребро остаётся таковым, поскольку после добавления e добавляются только F -тяжёлые рёбра. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 14 / 27
  • 57. Доказательство (продолжение) Доказательство Если лежат, то e является F -тяжёлым, поскольку все текущие рёбра F имеют меньший вес. С вероятностью p добавим e в H. Если e добавлено в H и является F -лёгким, добавим его в F . Построенный таким образом лес F является минимальным остовным лесом H (в точности такой лес строит алгоритм Крускала). Ясно, что любое ребро e, которое было F -тяжёлым на момент добавления, будет F -тяжёлым и дальше, поскольку из F рёбра не удаляются. Аналогично каждое F -лёгкое ребро остаётся таковым, поскольку после добавления e добавляются только F -тяжёлые рёбра. При обработке ребра мы заранее знаем, является ли оно F -тяжёлым. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 14 / 27
  • 58. Доказательство (продолжение) Доказательство А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27
  • 59. Доказательство (продолжение) Доказательство Рассмотрим подбрасывания монетки, соответствующие F -лёгким рёбрам. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27
  • 60. Доказательство (продолжение) Доказательство Рассмотрим подбрасывания монетки, соответствующие F -лёгким рёбрам. Каждый такой эксперимент с вероятностью p (при выпадении решки) добавляет ребро в F . А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27
  • 61. Доказательство (продолжение) Доказательство Рассмотрим подбрасывания монетки, соответствующие F -лёгким рёбрам. Каждый такой эксперимент с вероятностью p (при выпадении решки) добавляет ребро в F . Размер F в конце не превосходит n − 1, поэтому подбрасывания заканчиваются после выпадения не более чем n − 1 решек. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27
  • 62. Доказательство (продолжение) Доказательство Рассмотрим подбрасывания монетки, соответствующие F -лёгким рёбрам. Каждый такой эксперимент с вероятностью p (при выпадении решки) добавляет ребро в F . Размер F в конце не превосходит n − 1, поэтому подбрасывания заканчиваются после выпадения не более чем n − 1 решек. Представим, что мы подкидываем монетку до выпадения ровно n решек. Пусть Y есть общее число подбрасываний. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27
  • 63. Доказательство (продолжение) Доказательство Рассмотрим подбрасывания монетки, соответствующие F -лёгким рёбрам. Каждый такой эксперимент с вероятностью p (при выпадении решки) добавляет ребро в F . Размер F в конце не превосходит n − 1, поэтому подбрасывания заканчиваются после выпадения не более чем n − 1 решек. Представим, что мы подкидываем монетку до выпадения ровно n решек. Пусть Y есть общее число подбрасываний. Ясно, что количество F -лёгких ребер не превосходит Y . А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27
  • 64. Доказательство (продолжение) Доказательство Рассмотрим подбрасывания монетки, соответствующие F -лёгким рёбрам. Каждый такой эксперимент с вероятностью p (при выпадении решки) добавляет ребро в F . Размер F в конце не превосходит n − 1, поэтому подбрасывания заканчиваются после выпадения не более чем n − 1 решек. Представим, что мы подкидываем монетку до выпадения ровно n решек. Пусть Y есть общее число подбрасываний. Ясно, что количество F -лёгких ребер не превосходит Y . Распределение случайной величины Y — отрицательное биномиальное распределение с параметрами n и p (количество независимых подбрасываний монетки до n выпадений решки, где решка выпадает с вероятностью p). А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 15 / 27
  • 65. Доказательство (продолжение) Доказательство Рассмотрим подбрасывания монетки, соответствующие 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
  • 66. План лекции 1 Введение 2 Алгоритм 3 Время работы в худшем случае 4 Время работы в среднем А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 16 / 27
  • 67. Алгоритм Randomized-MST(G ) 1 £ Выход: минимальный остовный лес для G 2 применить три шага алгоритма Борувки к 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
  • 68. Схема работы G А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 18 / 27
  • 69. Схема работы G три шага Борувки G* А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 18 / 27
  • 70. Схема работы G три шага Борувки G* выкидывание рёбер H А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 18 / 27
  • 71. Схема работы G три шага Борувки G* выкидывание рёбер H ... ... А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 18 / 27
  • 72. Схема работы G три шага Борувки G* выкидывание рёбер удаление F -тяжёлых рёбер H G′ ... ... А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 18 / 27
  • 73. Схема работы G три шага Борувки G* выкидывание рёбер удаление F -тяжёлых рёбер H G′ ... ... ... ... А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 18 / 27
  • 74. Анализ алгоритма Анализ алгоритма А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 19 / 27
  • 75. Анализ алгоритма Анализ алгоритма Применение двух шагов Борувки занимает линейное от количества рёбер время. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 19 / 27
  • 76. Анализ алгоритма Анализ алгоритма Применение двух шагов Борувки занимает линейное от количества рёбер время. Нахождение всех F -тяжёлых ребер также требует линейного от количества рёбер времени. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 19 / 27
  • 77. Анализ алгоритма Анализ алгоритма Применение двух шагов Борувки занимает линейное от количества рёбер время. Нахождение всех F -тяжёлых ребер также требует линейного от количества рёбер времени. Для оценки времени работы, таким образом, достаточно оценить общее количество рёбер в исходной задаче и всех рекурсивных вызовах. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 19 / 27
  • 78. Анализ алгоритма Анализ алгоритма Применение двух шагов Борувки занимает линейное от количества рёбер время. Нахождение всех F -тяжёлых ребер также требует линейного от количества рёбер времени. Для оценки времени работы, таким образом, достаточно оценить общее количество рёбер в исходной задаче и всех рекурсивных вызовах. Допустим, что у исходного графа n вершин и m рёбер. НУО, m ≥ n/2. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 19 / 27
  • 79. Анализ алгоритма Анализ алгоритма Применение двух шагов Борувки занимает линейное от количества рёбер время. Нахождение всех F -тяжёлых ребер также требует линейного от количества рёбер времени. Для оценки времени работы, таким образом, достаточно оценить общее количество рёбер в исходной задаче и всех рекурсивных вызовах. Допустим, что у исходного графа n вершин и m рёбер. НУО, m ≥ n/2. На уровне d дерева работы алгоритма находится не более 2d графов, в каждом из которых не более n/8d вершин. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 19 / 27
  • 80. Анализ алгоритма Анализ алгоритма Применение двух шагов Борувки занимает линейное от количества рёбер время. Нахождение всех F -тяжёлых ребер также требует линейного от количества рёбер времени. Для оценки времени работы, таким образом, достаточно оценить общее количество рёбер в исходной задаче и всех рекурсивных вызовах. Допустим, что у исходного графа n вершин и m рёбер. НУО, m ≥ n/2. На уровне d дерева работы алгоритма находится не более 2d графов, в каждом из которых не более n/8d вершин. Значит, общее количество вершин не превосходит ∑︀∞ d ∑︀∞ d d d=0 2 n/8 = d=0 n/4 ≤ 2n. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 19 / 27
  • 81. План лекции 1 Введение 2 Алгоритм 3 Время работы в худшем случае 4 Время работы в среднем А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 20 / 27
  • 82. Время работы в худшем случае Теорема Время работы алгоритма Randomized-MST в худшем случае есть O(min{n2 , m log n}). А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 21 / 27
  • 83. Время работы в худшем случае Теорема Время работы алгоритма Randomized-MST в худшем случае есть O(min{n2 , m log n}). Доказательство Оценим количество рёбер двумя способами. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 21 / 27
  • 84. Время работы в худшем случае Теорема Время работы алгоритма Randomized-MST в худшем случае есть O(min{n2 , m log n}). Доказательство Оценим количество рёбер двумя способами. 1 Поскольку кратных рёбер нет, любой граф на уровне d содержит не более (n/8d )2 /2 рёбер. Просуммировав по всем уровням, получим верхнюю оценку O(n2 ). А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 21 / 27
  • 85. Время работы в худшем случае Теорема Время работы алгоритма Randomized-MST в худшем случае есть O(min{n2 , m log n}). Доказательство Оценим количество рёбер двумя способами. 1 Поскольку кратных рёбер нет, любой граф на уровне d содержит не более (n/8d )2 /2 рёбер. Просуммировав по всем уровням, получим верхнюю оценку O(n2 ). 2 Покажем, что общее количество рёбер двух графов, на которых производятся рекурсивные вызовы, не превосходит количества рёбер исходного графа. Из этого будет следовать, что на каждом уровне не более m рёбер. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 21 / 27
  • 86. Доказательство (продолжение) Доказательство А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 22 / 27
  • 87. Доказательство (продолжение) Доказательство Количество рёбер в левой ветке есть |E (H)|. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 22 / 27
  • 88. Доказательство (продолжение) Доказательство Количество рёбер в левой ветке есть |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
  • 89. План лекции 1 Введение 2 Алгоритм 3 Время работы в худшем случае 4 Время работы в среднем А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 23 / 27
  • 90. Время работы в среднем Теорема Мат. ожидание времени работы алгоритма Randomized-MST есть O(m). А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 24 / 27
  • 91. Время работы в среднем Теорема Мат. ожидание времени работы алгоритма Randomized-MST есть O(m). Доказательство А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 24 / 27
  • 92. Время работы в среднем Теорема Мат. ожидание времени работы алгоритма Randomized-MST есть O(m). Доказательство Обозначим через T (n, m) мат. ожидание времени работы алгоритма на графе из n вершин и m рёбер. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 24 / 27
  • 93. Время работы в среднем Теорема Мат. ожидание времени работы алгоритма Randomized-MST есть O(m). Доказательство Обозначим через T (n, m) мат. ожидание времени работы алгоритма на графе из n вершин и m рёбер. Применение трёх шагов алгоритма Борувки требует O(n + m) шагов и производит граф G * с не более чем n/8 вершинами. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 24 / 27
  • 94. Время работы в среднем Теорема Мат. ожидание времени работы алгоритма 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
  • 95. Доказательство (продолжение) Доказательство А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 25 / 27
  • 96. Доказательство (продолжение) Доказательство Нахождение минимального остовного леса F для H требует T (n/8, m/2) шагов в среднем. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 25 / 27
  • 97. Доказательство (продолжение) Доказательство Нахождение минимального остовного леса F для H требует T (n/8, m/2) шагов в среднем. Нахождение всех F -тяжёлых рёбер делается за время O(n + m) и производит граф G ′ с не более чем n/8 вершинами и мат. ожиданием количества рёбер не более n/4 (по доказанной лемме). А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 25 / 27
  • 98. Доказательство (продолжение) Доказательство Нахождение минимального остовного леса F для H требует T (n/8, m/2) шагов в среднем. Нахождение всех F -тяжёлых рёбер делается за время O(n + m) и производит граф G ′ с не более чем n/8 вершинами и мат. ожиданием количества рёбер не более n/4 (по доказанной лемме). Наождение минимального остовного леса для G ′ требует времени T (n/8, n/4). А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 25 / 27
  • 99. Доказательство (продолжение) Доказательство Нахождение минимального остовного леса 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
  • 100. Что мы узнали за сегодня? Что мы узнали за сегодня? А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 26 / 27
  • 101. Что мы узнали за сегодня? Что мы узнали за сегодня? Существует детерминированный линейный алгоритм проверки, является ли данный лес минимальным остовным лесом данного графа. А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 26 / 27
  • 102. Что мы узнали за сегодня? Что мы узнали за сегодня? Существует детерминированный линейный алгоритм проверки, является ли данный лес минимальным остовным лесом данного графа. Используя этот алгоритм, можно построить вероятностный алгоритм для нахождения минимального остовного леса, который в худшем случае имеет время работы O(min{n2 , m log n}), а в среднем — O(n + m). А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 26 / 27
  • 103. Спасибо за внимание! А. Куликов (CS клуб при ПОМИ) 9. Мин. покрывающее дерево 27 / 27