Доказательство. Нам необходимо показать что F можно вычислить в полиномиальное время и можно эффективно
выбирать случайный элемент (равномерно) из U.
Для вычисления F ((v, i)) мы проверяем, верно ли, что набор значений переменных v является выполняющим для
C
i
, но не для C
j
, j < i.
Выбор случайного элемента (v, i) равномерно из U осуществляется в два этапа.
На первом этапе выберем i, 1 ≤ i ≤ m и
Pr[i] =
|H
i
|
|U|
=
|H
i
|
P
m
i=1
|H
i
|
.
На втором этапе элемент v ∈ H
i
выбирается случайно и равномерно. Нетрудно проверить, что справедливо следующее
Утверждение 1. Получаемая пара (v, i) равномерно распределена в U .
Для доказательства достаточно перемножить соответствующие вероятности.
Далее воспользуемся классическим методом Монте-Карло. Из полученных ранее оценок имеем:
N >
1
p
3
ε
2
ln
2
δ
.
Из леммы 1 следует, что 1/p ≤ m, откуда получаем, что достаточно провести N испытаний, где
N > m
3
ε
2
ln
2
δ
.
Это и завершает доказательство теоремы.
Для исходной задачи перечисления выполняющих наборов для данной ДНФ имеем: базовое множество V состоит
из всех двоичных наборов длины n, H
i
состоит из всех наборов, на которых скобка C
i
равна 1 (выполнена). Ясно, что
|H
i
| = 2
n−r
i
, где r
i
– число литералов в скобке C
i
. Нетрудно также организовать случайную выборку элемента из H
i
:
для этого достаточно зафиксировать значения переменных, входящих в конъюнкцию а остальные выбрать случайны-
ми. Проверка, что некоторое v ∈ V принадлежит H
i
, эквивалентно проверке выполнимости скобки (конъюнкции) на
данном наборе. Таким образом, все условия на H
i
выполнены и описанный метод аппроксимации дает (ε, δ)-FPRAS
для оценки числа выполняющих наборов для любой ДНФ.
Упражнения.
1. Докажите упражнение 1.
2. Докажите факт 2: U = ∪
v ∈H
cov(v).
3. Докажите, что для G = {(v, j) ∈ U| f((v, i)) = 1} верно равенство |G| = |H|.
3.2.3 Вероятностный алгоритм Луби нахождения максимального по включению независи-
мого множества в графе
Пусть G = (V, E) – неориентированный граф с n вершинами и m ребрами. Подмножество вершин I ⊆ V называется
независимым в G, если никакое ребро из E не содержит обе своих конечных вершины в I.
Определение: Независимое множество I называется максимальным по включению, если оно не содержится в
качестве собственного подмножества в другом независимом множестве в G.
Напомним, что задача нахождения максимального по мощности независимого множества NP-трудна. Однако, для
нахождения максимального по включению независимого множества существует тривиальный последовательный алго-
ритм с временной сложностью O(m).
Алгоритм Greedy MIS:
Вход: Граф G = (V, E) с V = {1, 2, . . . , n}.
Выход: Максимальное по включению множество I ⊆ V .
1. I := ∅.
2. для v = 1 до n выполнить
если I ∩ Γ(v) = ∅ то I := I ∪ {v}.
Лемма. Алгоритм Greedy MIS завершает работу после O(m) шагов и выдает максимальное по включению неза-
висимое множество, при условии, что граф на вход подается в виде списка смежности.
Проблема заключается в том, чтобы построить эффективный параллельный алгоритм для этой задачи. Мы будем
рассматривать модель PRAM (Parallel RAM), которая состоит из p процессоров с общим набором регистров (ячеек
памяти). Процессоры могут писать в память и читать из памяти независимо друг от друга. Ограничением является лишь
возможность писать или читать из одной ячейки для нескольких процессоров. Мы будем рассматривать самую слабую
модель — EREW PRAM (Exclusive Reed Exclusive Write PRAM), в которой процессоры могут читать одновременно
только из разных ячеек и писать в разные ячейки.
100