MAX-CUT: вероятностное округление/Задачи/merge-vertices — различия между версиями

Материал из DISCOPAL
Перейти к: навигация, поиск
(Created page with "Минимальный разрез в графе (стягивание вершин) Рассмотрим рандомизированный алгоритм Каргера-...")
 
(Массовая правка: замена :Нерешенные задачи]] на :Решенные задачи]])
 
(не показано 20 промежуточных версий этого же участника)
Строка 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>
+
Доказать, что вероятностный алгоритм вычисляет минимальный разрез с вероятностью <m>P \ge \frac{2}{n(n-1)}</m>
  
[[Category:Предложенные студентами задачи]]
+
[[Категория:Решенные задачи]]

Текущая версия на 18:49, 20 мая 2020

Минимальный разрез в графе (стягивание вершин)

Рассмотрим рандомизированный алгоритм Каргера-Штейна для неориентированных графов с кратными ребрами. Пусть дан мультиграф c вершинами и ребрами.

Алгоритм основан на операции стягивания ребра между двумя вершинами. После стягивания ребра получим новый граф без вершины в котором каждое ребро вида заменено ребром (петли также удаляются). Алгоритм следующий

for i=0 to n-2:
   выбрать случайное ребро e
   стянуть ребро e

[svg] [svg] [svg] [svg]

В конце, «восстанавливаем разрез» — каждая его часть соответствует вершинам, содержащимся в одной из метавершин.

[svg]



Доказать, что вероятностный алгоритм вычисляет минимальный разрез с вероятностью