MAX-CUT: вероятностное округление/Задачи/merge-vertices — различия между версиями
Материал из DISCOPAL
(Created page with "Минимальный разрез в графе (стягивание вершин) Рассмотрим рандомизированный алгоритм Каргера-...") |
StasFomin (обсуждение | вклад) (Массовая правка: добавление Категория:Теоретические задачи) |
||
(не показана одна промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
Минимальный разрез в графе (стягивание вершин) | Минимальный разрез в графе (стягивание вершин) | ||
− | Рассмотрим рандомизированный алгоритм Каргера-Штейна для неориентированных графов с кратными ребрами. Пусть дан мультиграф <m>G=(V, E)</m> c <m>n</m> вершинами и <m>m</m> ребрами. Алгоритм основан на операции стягивания ребра между двумя вершинами. После стягивания ребра <m>(u, v)</m> получим новый граф без вершины <m>v</m> в котором каждое ребро вида <m>(v, x)</m> заменено ребром <m>(u, x)</m>(петли также удаляются). | + | Рассмотрим рандомизированный алгоритм Каргера-Штейна для неориентированных графов с кратными ребрами. Пусть дан мультиграф <m>G=(V, E)</m> c <m>n</m> вершинами и <m>m</m> ребрами. |
+ | |||
+ | Алгоритм основан на операции стягивания ребра между двумя вершинами. После стягивания ребра <m>(u, v)</m> получим новый граф без вершины <m>v</m> в котором каждое ребро вида <m>(v, x)</m> заменено ребром <m>(u, x)</m>(петли также удаляются). | ||
Алгоритм следующий | Алгоритм следующий | ||
+ | |||
<code-python> | <code-python> | ||
− | for i = 0 to n - 2 | + | for i=0 to n-2: |
− | выбрать случайное ребро e | + | выбрать случайное ребро e |
− | стянуть ребро e | + | стянуть ребро e |
</code-python> | </code-python> | ||
+ | <neato> | ||
+ | graph G{ | ||
+ | 1--2 | ||
+ | 2--3 | ||
+ | 3--4 | ||
+ | 4--1 | ||
+ | 3--1 | ||
+ | 4--2 | ||
+ | 2--5 | ||
+ | 3--5 | ||
+ | } | ||
+ | </neato> | ||
+ | <neato> | ||
+ | graph G{ | ||
+ | 12--3 | ||
+ | 3--4 | ||
+ | 4--12 | ||
+ | 12--5 | ||
+ | 3--5 | ||
+ | } | ||
+ | </neato> | ||
+ | <neato> | ||
+ | graph G{ | ||
+ | 12--34 | ||
+ | 12--5 | ||
+ | 34--5 | ||
+ | } | ||
+ | </neato> | ||
+ | <neato> | ||
+ | graph G{ | ||
+ | 1234--5 | ||
+ | } | ||
+ | </neato> | ||
+ | |||
+ | В конце, «восстанавливаем разрез» — каждая его часть соответствует вершинам, содержащимся в одной из метавершин. | ||
+ | |||
+ | <neato> | ||
+ | graph G{ | ||
+ | 1--2 | ||
+ | 2--3 | ||
+ | 3--4 | ||
+ | 4--1 | ||
+ | 3--1 | ||
+ | 4--2 | ||
+ | |||
+ | edge [color=blue] | ||
+ | 2--5 | ||
+ | 3--5 | ||
+ | } | ||
+ | </neato> | ||
+ | |||
+ | ---- | ||
− | |||
− | Доказать, что вероятностный алгоритм вычисляет | + | Доказать, что вероятностный алгоритм вычисляет минимальный разрез с вероятностью <m>P \ge \frac{2}{n(n-1)}</m> |
− | [[ | + | [[Категория:Решенные задачи]] |
+ | [[Категория:Теоретические задачи]] |
Текущая версия на 06:50, 4 мая 2023
Минимальный разрез в графе (стягивание вершин)
Рассмотрим рандомизированный алгоритм Каргера-Штейна для неориентированных графов с кратными ребрами. Пусть дан мультиграф c вершинами и ребрами.
Алгоритм основан на операции стягивания ребра между двумя вершинами. После стягивания ребра получим новый граф без вершины в котором каждое ребро вида заменено ребром (петли также удаляются). Алгоритм следующий
for i=0 to n-2: выбрать случайное ребро e стянуть ребро e
В конце, «восстанавливаем разрез» — каждая его часть соответствует вершинам, содержащимся в одной из метавершин.
Доказать, что вероятностный алгоритм вычисляет минимальный разрез с вероятностью