Ожидаемый алгоритм MST с линейным временем - Expected linear time MST algorithm

В ожидаемый алгоритм MST с линейным временем это рандомизированный алгоритм для вычисления минимальная протяженность леса из взвешенный график без изолированные вершины. Он был разработан Дэвид Каргер, Филип Кляйн и Роберт Тарджан.[1] Алгоритм основан на методах из Алгоритм Борувки вместе с алгоритмом проверки минимального остовного дерева за линейное время.[2][3] Он сочетает в себе парадигмы дизайна разделяй и властвуй алгоритмы, жадные алгоритмы, и рандомизированные алгоритмы достигать ожидал линейная производительность.

Детерминированные алгоритмы, которые находят минимальное остовное дерево, включают Алгоритм Прима, Алгоритм Краскала, алгоритм обратного удаления, и Алгоритм Борувки.

Обзор

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

Борувская степь

Каждая итерация алгоритма основана на адаптации алгоритма Борувки, называемой Боровка ступенька:

 Вход: график грамм без изолированных вершин 1 Для каждой вершины v, выберите самый светлый край, падающий на v    2 Создайте сжатый граф ГРАММ' путем замены каждого компонента грамм связанных ребрами, выбранными на шаге 1, с одной вершиной 3 Удалите все изолированные вершины, петли и неминимальные повторяющиеся ребра из ГРАММ'  Выход: ребра, выбранные на шаге 1, и сжатый граф. ГРАММ'

Шаг Борувки эквивалентен внутреннему циклу алгоритма Борувки, который выполняется в О(м) время, когда м количество ребер в грамм. Кроме того, поскольку каждое ребро может быть выбрано не более двух раз (по одному разу каждой инцидентной вершиной), максимальное количество отключенных компонентов после шага 1 равно половине числа вершин. Таким образом, шаг Борувки уменьшает количество вершин в графе как минимум в два раза и удаляет как минимум п/ 2 ребра, где п это количество вершин в грамм.

Пример выполнения шага Борувка

ИзображениеОписание
Борувка Шаг 1.svgСамое светлое ребро, попадающее в каждую вершину, выделено зеленым.
Борувка Шаг 2.svgГраф сжимается, и каждый компонент, соединенный ребрами, выбранными на шаге 1, заменяется одной вершиной. Это создает два суперузла. Все ребра исходного графа остаются.
Борувка Шаг 3.svgРебра, которые образуют петли к надузлам, удаляются.
Борувка Шаг 4.svgНе минимальные избыточные ребра между суперузлами удаляются.
Борувка Шаг 5.svgРезультатом одного шага Borvka на примере графа является граф с двумя суперузлами, соединенными одним ребром.

Края F-Heavy и F-light

На каждой итерации алгоритм удаляет ребра с определенными свойствами, исключающими их из минимальное остовное дерево. Они называются F-тяжелые края и определяются следующим образом. Позволять F быть лесом на график ЧАС. F-тяжелая кромка - это кромка е соединяющие вершины ты,v чей вес строго больше веса самого тяжелого ребра на пути из ты к v в F. (Если путь не существует в F он считается имеющим бесконечный вес). Любое ребро, не являющееся F-тяжелым, считается Полет. Если F это подграф из грамм то любое F-тяжелое ребро в грамм не может быть в минимальном остовном дереве грамм посредством свойство цикла. Учитывая лес, F-тяжелые ребра могут быть вычислены за линейное время с использованием алгоритма проверки минимального остовного дерева.[2][3]

Алгоритм

Вход: график грамм без изолированных вершин

  1. Если грамм пусто вернуть пустой лес
  2. Создать сокращенный граф ГРАММ' пройдя два последовательных шага по Борувке грамм
  3. Создать подграф ЧАС выбирая каждое ребро в ГРАММ' с вероятностью 1/2. Рекурсивно применить алгоритм к ЧАС получить минимальную протяженность леса F.
  4. Удалите все F-тяжелые края с ГРАММ' (куда F - лес из шага 3) с использованием алгоритма проверки минимального остовного дерева с линейным временем.[2][3]
  5. Рекурсивно применить алгоритм к ГРАММ' чтобы получить его минимальный охват леса.

Выход: минимальный охват леса ГРАММ' и стянутые ребра от ступенек Борувки

Правильность

Корректность доказывается индукцией по количеству вершин в графе. Базовый случай тривиально верен. Позволять Т * быть минимальным остовным деревом грамм. Каждое ребро, выбранное на шаге 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, мбревноп}) на графе с п вершины и м края.

Рекомендации

  1. ^ Каргер, Дэвид Р .; Klein, Philip N .; Тарьян, Роберт Э. (1995). «Рандомизированный алгоритм линейного времени для поиска минимальных остовных деревьев». Журнал ACM. 42 (2): 321. CiteSeerX  10.1.1.39.9012. Дои:10.1145/201019.201022.
  2. ^ а б c d Диксон, Брэндон; Раух, Моника; Тарджан, Роберт Э. (1992). «Проверка и анализ чувствительности минимальных остовных деревьев в линейное время». SIAM Журнал по вычислениям. 21 (6): 1184. CiteSeerX  10.1.1.49.25. Дои:10.1137/0221070.
  3. ^ а б c d Король, Валери (1995). Более простой алгоритм проверки минимального связующего дерева. Материалы 4-го Международного семинара по алгоритмам и структурам данных. Лондон, Великобритания, Великобритания: Springer-Verlag. С. 440–448.

дальнейшее чтение