WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте
Алгоритм Каргера

Граф и два его разреза. Красный разрез пересекает три ребра, а зеленый два. Последний является одним из минимальных разрезов данного графа.
Предназначение поиск минимального (англ.) разреза графа
Структура данных граф
Среднее время
Затраты памяти -

Алгори́тм Ка́ргера (англ. Karger's algorithm) — в информатике и теории графов является вероятностным алгоритмом, позволяющим найти минимальный разрез связного графа. Алгоритм изобретен Девидом Каргером (англ.) и опубликован в 1993 году[1].

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

Описание

Примеры

Основной задачей является поиск узких мест в различных сетях. Примеры:

Алгоритм

Операция стягивания ребра алгоритма Каргера.

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

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

Пример успешной работы алгоритма для графа с 10 вершинами. Минимальный разрез равен трём.

Псевдокод

Алгоритм Каргера
повторить n − 2 раза
  выбрать случайно ребро e
  стянуть ребро e
результат число рёбер между двумя последними вершинами

Примечания

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.ru - проект по пересортировке и дополнению контента Википедии