1. Параллельный вероятностный алгоритм Луби
Н.Н. Кузюрин С.А. Фомин
10 октября 2008 г.
Параллельный алгоритм нахождения
максимального по включению независимого
множества в графе. Полилогарифмическое время
алгоритма «в среднем».
1 / 20
3. Модели параллельных вычислений PRAM
В зависимости от типа, разные процессоры могут одновременно:
EREW PRAM: exclusive read/exclusive write — читать и изменять
только разные ячейки памяти.
CREW PRAM: concurrent read/exclusive write — читать из одной
ячейки, но изменять только разные.
CRCW PRAM: concurrent read/concurrent write — параллельно читать
и изменять любую ячейку.
3 / 20
4. Типы CRCW PRAM
WEAK CRCW PRAM — несколько процессоров могут записывать
в одну ячейку только число 0.
COMMON CRCW PRAM — несколько процессоров могут записывать
в одну ячейку только одинаковое число.
ARBITRARY CRCW PRAM — несколько процессоров могут
записывать в одну ячейку разные числа, а содержимое
ячейки становится одним из этих чисел, но не известно
каким.
PRIORITY CRCW PRAM — результатом записи в ячейку является
значение, поступившее от процессора с большим
номером.
STRONG CRCW PRAM — результатом записи в ячейку является
максимальное значение, поступившее от процессоров.
4 / 20
5. Типы PRAM: примеры алгоритмов
Рассмотрим поясняющий пример: вычислить x1 ∨ . . . ∨ xn .
WEAK CRCW PRAM: n процессоров могут записывать в одну ячейку
число 0.
Алгоритм с константным числом параллельных шагов.
1. y := 1.
2. write parallel x1 , . . . , xn into y .
EREW PRAM: требуется O(log n) параллельных шагов.
Метод сдваивания: 1) вычислить
y1 = x1 ∨ x2 , y2 = x3 ∨ x4 , . . . , yn/2 = xn−1 ∨ xn ,
2) вычислить
t1 = y1 ∨ y2 , t2 = y3 ∨ y4 , . . . , tn/4 = yn/2−1 ∨ yn/2 ,
и т.д.
5 / 20
6. Типы PRAM: примеры алгоритмов
Задача: для матрицы n × n и вектора x вычислить Ax.
EREW PRAM с n2 процессорами: требуется O(log n) параллельных
шагов.
Задача: для чисел x1 , . . . , xn вычислить все префиксные суммы
y1 = x1 , y2 = x1 + x2 , y3 = x1 + x2 + x3 , . . . , yn = x1 + x2 + . . . + xn .
EREW PRAM с n процессорами: требуется O(log n) параллельных
шагов.
6 / 20
7. Максимальное по включению независимое множество
Определение
Пусть G = (V , E ) — неориентированный граф с n вершинами и m
ребрами.
Подмножество вершин I ⊆ V называется независимым в G , если
никакое ребро из E не содержит обе своих конечных вершины в I .
Определение
Независимое множество I называется максимальным по
включению, если оно не содержится в качестве собственного
подмножества в другом независимом подмножестве в G .
7 / 20
8. Последовательный алгоритм сложности O(m)
Γ(v ) — вершины-соседи для v .
Алгоритм Greedy MIS:
Вход: Граф G = (V , E ), |V | = n, |E | = m.
Выход: Максимальное по включению множество I ⊆ V .
1 I := ∅.
2 for v = v1 to vn do
3 if I ∩ Γ(v ) = ∅ then I := I ∪ {v }.
Лемма
Алгоритм Greedy MIS завершает работу после O(n) шагов и выдает
максимальное по включению независимое множество при условии, что
граф на вход подается в виде списка смежности.
8 / 20
9. Идея параллельного алгоритма
Идея — на каждой итерации находится независимое множество S,
которое добавляется к уже построенному I , а S ∪ Γ(S) удаляется из
графа.
Чтобы число итераций было небольшим, независимое множество S
должно быть таким, чтобы S ∪ Γ(S) было большим.
Для реализации этой идеи мы выбираем большое случайное
множество вершин R ⊆ V . Маловероятно, что R будет независимым,
но, с другой стороны, имеется немного ребер, оба конца которых
принадлежат R.
Для получения независимого множества из R мы рассмотрим такие
ребра и удалим концевые вершины с меньшей степенью.
9 / 20
10. Параллельный алгоритм Parallel MIS:
Вход: Граф G = (V , E ).
I ←∅
while V = ∅ do
for all v ∈ V (параллельно) do
if d(v ) = 0 then
V ← V {v }, I ← I ∪ {v }
else
1
marked(v ) ← 1 с вероятностью 2d(v ) Упражнение
end if
end for Покажите, что каждая
for all (u, v ) ∈ E (параллельно) do итерация алгоритма может
if marked(v ) ∧ marked(u) then
marked(v ) ← 0 (d(v ) ≤ d(u)) быть реализована за время
end if O(log n) на модели EREW
end for
for all v ∈ V (параллельно) do
PRAM с (n + m)
if marked(v ) then процессорами.
S ← S ∪ {v }
end if
end for
V ← V S {и все инцидентные ребра из E }
I ←I ∪S
end while
Выход: Максимальное-независимое I ⊆ V .
10 / 20
11. Параллельный алгоритм Parallel MIS:
Вход: Граф G = (V , E ).
I ←∅
while V = ∅ do
for all v ∈ V (параллельно) do
if d(v ) = 0 then
V ← V {v }, I ← I ∪ {v }
else
1
marked(v ) ← 1 с вероятностью 2d(v ) Упражнение
end if
end for Покажите, что каждая
for all (u, v ) ∈ E (параллельно) do итерация алгоритма может
if marked(v ) ∧ marked(u) then
marked(v ) ← 0 (d(v ) ≤ d(u)) быть реализована за время
end if O(log n) на модели EREW
end for
for all v ∈ V (параллельно) do
PRAM с (n + m)
if marked(v ) then процессорами.
S ← S ∪ {v }
end if
end for
V ← V S {и все инцидентные ребра из E }
I ←I ∪S
end while
Выход: Максимальное-независимое I ⊆ V .
11 / 20
12. Определение
Γ∗ (v ) = {w ∈ Γ(v ) : d(w ) ≤ d(v )}
v ∈ V — хорошая ⇔ |Γ∗ (v )| ≥ d(v ) .3 Иначе — плохая.
Лемма
Пусть v ∈ V — хорошая, d(v ) > 0. Тогда
1
P{∃w ∈ Γ(v ) : marked(w ) = 1} ≥ 1 − exp −
6
Доказательство.
Pbad = P{ w ∈ Γ(v ) : marked(w ) = 1} ≤
d(v )/3
1 1
≤ 1− ≤ 1− ≤ e −1/6 .
2d(w ) 2d(v )
w ∈Γ∗ (v )
12 / 20
13. Определение
Γ∗ (v ) = {w ∈ Γ(v ) : d(w ) ≤ d(v )}
v ∈ V — хорошая ⇔ |Γ∗ (v )| ≥ d(v ) .3 Иначе — плохая.
Лемма
Пусть v ∈ V — хорошая, d(v ) > 0. Тогда
1
P{∃w ∈ Γ(v ) : marked(w ) = 1} ≥ 1 − exp −
6
Доказательство.
Pbad = P{ w ∈ Γ(v ) : marked(w ) = 1} ≤
d(v )/3
1 1
≤ 1− ≤ 1− ≤ e −1/6 .
2d(w ) 2d(v )
w ∈Γ∗ (v )
13 / 20
14. Определение
Γ∗ (v ) = {w ∈ Γ(v ) : d(w ) ≤ d(v )}
v ∈ V — хорошая ⇔ |Γ∗ (v )| ≥ d(v ) .3 Иначе — плохая.
Лемма
Пусть v ∈ V — хорошая, d(v ) > 0. Тогда
1
P{∃w ∈ Γ(v ) : marked(w ) = 1} ≥ 1 − exp −
6
Доказательство.
Pbad = P{ w ∈ Γ(v ) : marked(w ) = 1} ≤
d(v )/3
1 1
≤ 1− ≤ 1− ≤ e −1/6 .
2d(w ) 2d(v )
w ∈Γ∗ (v )
14 / 20
15. Построение независимых множеств
Лемма
На каждой итерации помеченная вершина выбирается в S
с вероятностью не менее 1/2.
Доказательство.
Pbad = P {∃v ∈ Γ(w ) : d(v ) ≥ d(w ) ∧ marked(v )} ≤
1
≤ |{v ∈ Γ(w ) | d(v ) ≥ d(w )}| × ≤
2d(w )
1 1 1
≤ = d(w ) × = .
2d(w ) 2d(w ) 2
v ∈Γ(w )
15 / 20
16. Комбинируя две предыдущие леммы получаем
Лемма
Вероятность того, что хорошая вершина принадлежит множеству
S ∪ Γ(S) не меньше, чем (1 − e −1/6 )/2.
Определение
Ребро называется хорошим, если хотя бы одна из его концевых
вершин является хорошей, иначе — плохим (∈ Ebad ).
Финальный шаг заключается в оценке числа хороших ребер.
Лемма
В графе G = (V , E ) число хороших ребер, не меньше, чем |E |/2.
16 / 20
17. Комбинируя две предыдущие леммы получаем
Лемма
Вероятность того, что хорошая вершина принадлежит множеству
S ∪ Γ(S) не меньше, чем (1 − e −1/6 )/2.
Определение
Ребро называется хорошим, если хотя бы одна из его концевых
вершин является хорошей, иначе — плохим (∈ Ebad ).
Финальный шаг заключается в оценке числа хороших ребер.
Лемма
В графе G = (V , E ) число хороших ребер, не меньше, чем |E |/2.
17 / 20
18. Доказательство
E
2 — множество всех неупорядоченных пар из E .
Определим f : Ebad → E так, чтобы:
2
∀e1 = e2 ∈ Ebad : f (e1 ) ∩ f (e2 ) = ∅.
Ориентируем каждое ребро графа E от вершины меньшей степени
в сторону вершины большей степени (в случае
равенства — произвольно).
w
u v
z
Пусть (u → v ) ∈ Ebad .
Поскольку v плохая, число выходящих из нее ребер, по крайней мере,
вдвое превосходит число входящих в нее ребер.
Отсюда следует, что |Ebad | ≤ |E |/2.
18 / 20
19. Анализ
Поскольку константная доля ребер инцидентна хорошим вершинам,
а хорошие вершины удаляются с константной вероятностью, то
математическое ожидание числа ребер, удаленных на итерации,
составляет константную долю от текущего числа ребер.
Отсюда легко следует, что математическое ожидание числа итераций
алгоритма Parallel MIS есть O(log n)
докажите это в качестве упражнения
19 / 20