Алгоритм Каргера
Алгори́тм Ка́ргера (англ. Karger's algorithm) — в информатике и теории графов является вероятностным алгоритмом, позволяющим найти минимальный разрез связного графа. Алгоритм изобретен Девидом Каргером и опубликован в 1993 году[1].
Алгоритм Каргера | |
---|---|
| |
Назван в честь | David Karger[d] |
Предназначение | поиск наименьшего разреза графа |
Структура данных | граф |
Среднее время | |
Затраты памяти | - |
Идея алгоритма основана на стягивании ребра в неориентированном графе. Во время стягивания ребра происходит объединение двух вершин в одну, что уменьшает количество вершин графа на единицу. Все рёбра стягиваемых вершин соединяются со вновь образованной вершиной, порождая мультиграф. Алгоритм Каргера итеративно выбирает случайные рёбра и выполняет операцию до тех пор, пока не останется две вершины, которые и представляют собой разрез изначального графа. Если повторять алгоритм достаточное количество раз, то с высокой вероятностью может быть найден минимальный разрез.
Описание
Примеры
Основной задачей является поиск узких мест в различных сетях. Примеры:
- Обнаружение сообществ в социальных сетях[2].
- Определение уязвимостей у потенциального противника с целью разрушения его транспортной сети.
- Сегментация изображений[3][4].
Алгоритм
Основной операцией алгоритма Каргера является одна из форм стягивания ребра. Для выполнения этой операции на произвольном ребре происходит объединение вершин графа и в одну . Если удаляется вершина , то каждое ребро вида заменяется на ребро вида . Петли удаляются, и после этой операции граф не содержит петель.
Алгоритм представляет собой равновероятный выбор случайного имеющегося ребра и объединение вершин согласно описанной операции. Результатом работы алгоритма является пара вершин, множество рёбер между которыми является разрезом графа. Этот разрез может быть не минимальным, но вероятность того, что этот разрез минимальный существенно больше, чем для случайно выбранного разреза.
Псевдокод
Алгоритм Каргера повторить n − 2 раза выбрать случайно ребро e стянуть ребро e результат число рёбер между двумя последними вершинами
См. также
Примечания
- Karger, David R. Global Min-cuts in RNC, and Other Ramifications of a Simple Min-Cut Algorithm (англ.) // SODA : journal. — 1993. — Vol. 93. — P. 21—30. — ISBN 0-89871-313-7.
- Terminal-Set-Enhanced Community Detection in Social Networks
- Minimum Cut Problem
- Randomized Algorithms Part Three