Ожидаемый алгоритм MST с линейным временем - Expected linear time MST algorithm
В ожидаемый алгоритм MST с линейным временем это рандомизированный алгоритм для вычисления минимальная протяженность леса из взвешенный график без изолированные вершины. Он был разработан Дэвид Каргер, Филип Кляйн и Роберт Тарджан.[1] Алгоритм основан на методах из Алгоритм Борувки вместе с алгоритмом проверки минимального остовного дерева за линейное время.[2][3] Он сочетает в себе парадигмы дизайна разделяй и властвуй алгоритмы, жадные алгоритмы, и рандомизированные алгоритмы достигать ожидал линейная производительность.
Детерминированные алгоритмы, которые находят минимальное остовное дерево, включают Алгоритм Прима, Алгоритм Краскала, алгоритм обратного удаления, и Алгоритм Борувки.
Обзор
Ключевым моментом в алгоритме является этап случайной выборки, который разбивает граф на две части. подграфы путем случайного выбора ребер для включения в каждый подграф. Алгоритм рекурсивно находит минимальная протяженность леса первой подзадачи и использует решение в сочетании с алгоритмом проверки с линейным временем, чтобы отбросить ребра в графе, которые не могут быть в минимальном остовном дереве. Процедура, взятая из алгоритма Борувки, также используется для уменьшения размера графа на каждом рекурсия.
Борувская степь
Каждая итерация алгоритма основана на адаптации алгоритма Борувки, называемой Боровка ступенька:
Вход: график грамм без изолированных вершин 1 Для каждой вершины v, выберите самый светлый край, падающий на v 2 Создайте сжатый граф ГРАММ' путем замены каждого компонента грамм связанных ребрами, выбранными на шаге 1, с одной вершиной 3 Удалите все изолированные вершины, петли и неминимальные повторяющиеся ребра из ГРАММ' Выход: ребра, выбранные на шаге 1, и сжатый граф. ГРАММ'
Шаг Борувки эквивалентен внутреннему циклу алгоритма Борувки, который выполняется в О(м) время, когда м количество ребер в грамм. Кроме того, поскольку каждое ребро может быть выбрано не более двух раз (по одному разу каждой инцидентной вершиной), максимальное количество отключенных компонентов после шага 1 равно половине числа вершин. Таким образом, шаг Борувки уменьшает количество вершин в графе как минимум в два раза и удаляет как минимум п/ 2 ребра, где п это количество вершин в грамм.
Пример выполнения шага Борувка
Изображение | Описание |
---|---|
Самое светлое ребро, попадающее в каждую вершину, выделено зеленым. | |
Граф сжимается, и каждый компонент, соединенный ребрами, выбранными на шаге 1, заменяется одной вершиной. Это создает два суперузла. Все ребра исходного графа остаются. | |
Ребра, которые образуют петли к надузлам, удаляются. | |
Не минимальные избыточные ребра между суперузлами удаляются. | |
Результатом одного шага Borvka на примере графа является граф с двумя суперузлами, соединенными одним ребром. |
Края F-Heavy и F-light
На каждой итерации алгоритм удаляет ребра с определенными свойствами, исключающими их из минимальное остовное дерево. Они называются F-тяжелые края и определяются следующим образом. Позволять F быть лесом на график ЧАС. F-тяжелая кромка - это кромка е соединяющие вершины ты,v чей вес строго больше веса самого тяжелого ребра на пути из ты к v в F. (Если путь не существует в F он считается имеющим бесконечный вес). Любое ребро, не являющееся F-тяжелым, считается Полет. Если F это подграф из грамм то любое F-тяжелое ребро в грамм не может быть в минимальном остовном дереве грамм посредством свойство цикла. Учитывая лес, F-тяжелые ребра могут быть вычислены за линейное время с использованием алгоритма проверки минимального остовного дерева.[2][3]
Алгоритм
Вход: график грамм без изолированных вершин
- Если грамм пусто вернуть пустой лес
- Создать сокращенный граф ГРАММ' пройдя два последовательных шага по Борувке грамм
- Создать подграф ЧАС выбирая каждое ребро в ГРАММ' с вероятностью 1/2. Рекурсивно применить алгоритм к ЧАС получить минимальную протяженность леса F.
- Удалите все F-тяжелые края с ГРАММ' (куда F - лес из шага 3) с использованием алгоритма проверки минимального остовного дерева с линейным временем.[2][3]
- Рекурсивно применить алгоритм к ГРАММ' чтобы получить его минимальный охват леса.
Выход: минимальный охват леса ГРАММ' и стянутые ребра от ступенек Борувки
Правильность
Корректность доказывается индукцией по количеству вершин в графе. Базовый случай тривиально верен. Позволять Т * быть минимальным остовным деревом грамм. Каждое ребро, выбранное на шаге Borvka, находится в Т * посредством вырезать собственность и ни одно из ребер, удаленных для формирования сжатого графа, не находится в Т * посредством вырезать собственность (для избыточных кромок) и свойство цикла (для самостоятельных петель). Остальные края Т * не выбрано на шаге 2 из минимальное остовное дерево сжатого графа вырезать собственность (пусть каждый разрез будет суперузлом). Каждый F-тяжелый край удаленный не входит в минимальное связующее дерево свойство цикла. Ну наконец то F ' - минимальное остовное дерево сжатого графа по предположению индукции. Таким образом F ' а ребра, стянутые ребрами ступеней Борувки, образуют минимальное остовное дерево.
Спектакль
Ожидаемая производительность является результатом шага случайной выборки. Эффективность шага случайной выборки описывается следующей леммой, которая ограничивает количество Полет края в грамм тем самым ограничивая размер второй подзадачи.
Лемма о случайной выборке
Лемма- Позволять ЧАС быть подграфом грамм образованный включением каждого края грамм независимо с вероятностью п и разреши F быть минимальным остовным лесом ЧАС. В ожидаемое число из Полет края в грамм самое большее н / п куда п это количество вершин в грамм
Чтобы доказать лемму, исследуем ребра грамм поскольку они добавляются к ЧАС. Количество Полет края в грамм не зависит от порядка, в котором ребра ЧАС выбираются, поскольку минимальный остов ЧАС одинаков для всех порядков отбора. Ради доказательства рассмотрите возможность выбора ребер для ЧАС взяв края грамм по одному в порядке убывания веса кромки от самого легкого до самого тяжелого. Позволять е быть текущим рассматриваемым ребром. Если конечные точки е находятся в двух разрозненных компонентах ЧАС тогда е является самым светлым ребром, соединяющим эти компоненты, и если он добавлен к ЧАС это будет в F посредством вырезать собственность. Это также означает е является Полет независимо от того, добавлен ли он к ЧАС поскольку в дальнейшем рассматриваются только более тяжелые кромки. Если обе конечные точки е находятся в одном компоненте ЧАС то это (и всегда будет) F-тяжелым свойство цикла. Край е затем добавляется к ЧАС с вероятностью п.
Максимальное количество Полет края добавлены к ЧАС является п-1, поскольку любое минимальное остовное дерево ЧАС имеет п-1 ребро. Один раз п-1 F-light края были добавлены к ЧАС ни одно из последующих рассматриваемых ребер не является F-легким по свойство цикла. Таким образом, количество ребер F-light в грамм ограничено количеством F-легких ребер, рассмотренных для ЧАС перед п-1 F-light края фактически добавлены к ЧАС. Так как любое ребро F-light добавляется с вероятностью п это эквивалентно подбрасыванию монеты с вероятностью п Подниматься головы, пока пПоявилась -1 голова. Общее количество подбрасываний монеты равно количеству ребер F-light в грамм. Распределение количества подбрасываний монеты определяется обратное биномиальное распределение с параметрами п-1 и п. Для этих параметров ожидаемое значение этого распределения равно (п-1)/п.
Ожидаемый анализ
Игнорируя работу, выполненную в рекурсивных подзадачах, общий объем работы, выполненной за один вызов алгоритма, равен линейный в количестве ребер во входном графе. Шаг 1 занимает постоянное время. Шаги Borvka могут быть выполнены во времени линейно по количеству ребер, как указано в Борувка ступенька раздел. Шаг 3 выполняет итерацию по ребрам и подбрасывает по одной монете для каждого из них, так что количество ребер линейно. Шаг 4 может быть выполнен за линейное время с использованием модифицированного алгоритма проверки минимального остовного дерева за линейное время.[2][3] Поскольку работа, выполняемая на одной итерации алгоритма, линейна по количеству ребер, работа, выполняемая за один полный прогон алгоритма (включая все рекурсивные вызовы), ограничена постоянным множителем, умноженным на общее количество ребер в исходной задаче, и все рекурсивные подзадачи.
Каждый вызов алгоритма порождает не более двух подзадач, поэтому набор подзадач образует двоичное дерево. Каждый Борувка ступенька уменьшает количество вершин как минимум в два раза, поэтому после двух шагов Борувки количество вершин уменьшится в четыре раза. Таким образом, если исходный граф имеет п вершины и м края затем на глубине d дерева каждая подзадача находится на графе не более чем п/4d вершины. Также в дереве не больше журнала4п уровни.
Чтобы рассуждать о дереве рекурсии, пусть левая дочерняя проблема будет подзадачей в рекурсивном вызове на шаге 3, а правая дочерняя проблема будет подзадачей в рекурсивном вызове на шаге 5. Подсчитайте общее количество ребер в исходной задаче и всех подзадачах путем подсчета количества ребер в каждом левом пути дерева. Левый путь начинается либо с правого потомка, либо с корня и включает все узлы, достижимые через путь левых потомков. Левые пути двоичного дерева показаны синим кружком на диаграмме справа.
Каждое ребро в левой дочерней задаче выбирается из краев родительской задачи (за вычетом краев, сжатых в Борувка ступеньки ) с вероятностью 1/2. Если у родительской проблемы Икс края тогда ожидаемое число ребер в левой дочерней задаче не более Икс/ 2. Если Икс заменяется случайной величиной Икс затем по линейность ожидания ожидаемое количество ребер в левой дочерней задаче Y дан кем-то . Таким образом, если ожидаемое количество ребер в задаче в верхней части левого пути равно k то сумма ожидаемого количества ребер в каждой подзадаче на левом пути не превосходит (видеть Геометрическая серия ). Корень имеет м края так что ожидаемое число ребер равно 2м плюс удвоенное ожидаемое количество ребер в каждой правой подзадаче.
Ожидаемое количество ребер в каждой правой подзадаче равно количеству Полет края в родительской задаче, где F - минимальное остовное дерево левой подзадачи. Количество ребер F-light меньше или равно удвоенному количеству вершин в подзадаче на лемма выборки. Количество вершин в подзадаче на глубине d является п/4d поэтому общее количество вершин во всех правых подзадачах равно . Таким образом, ожидаемое количество ребер в исходной задаче и всех подзадачах не превышает 2.м+п. С п максимум 2м для графа без изолированных вершин алгоритм работает за ожидаемое время О(м).
Анализ наихудшего случая
Время выполнения в худшем случае эквивалентно времени выполнения Алгоритм Борувки. Это происходит, если все ребра добавляются к левой или правой подзадаче при каждом вызове. В этом случае алгоритм идентичен Алгоритм Борувки который работает в О(min {п2, мбревноп}) на графе с п вершины и м края.
Рекомендации
- ^ Каргер, Дэвид Р .; Klein, Philip N .; Тарьян, Роберт Э. (1995). «Рандомизированный алгоритм линейного времени для поиска минимальных остовных деревьев». Журнал ACM. 42 (2): 321. CiteSeerX 10.1.1.39.9012. Дои:10.1145/201019.201022.
- ^ а б c d Диксон, Брэндон; Раух, Моника; Тарджан, Роберт Э. (1992). «Проверка и анализ чувствительности минимальных остовных деревьев в линейное время». SIAM Журнал по вычислениям. 21 (6): 1184. CiteSeerX 10.1.1.49.25. Дои:10.1137/0221070.
- ^ а б c d Король, Валери (1995). Более простой алгоритм проверки минимального связующего дерева. Материалы 4-го Международного семинара по алгоритмам и структурам данных. Лондон, Великобритания, Великобритания: Springer-Verlag. С. 440–448.