Content uploaded by René van Bevern
Author content
All content in this area was uploaded by René van Bevern on Jul 01, 2021
Content may be subject to copyright.
Лекции по рандомизированным
алгоритмам
Рене Андреасович ван Беверн
rvb@nsu.ru
Computer Science Center,
Новосибирск, Санкт-Петербург,
Новосибирский государственный университет,
Новосибирск
1 июля 2021 г.
Предисловие
Содержание данного учебного пособия соответствует содержанию курса
“Рандомизированные алгоритмы”, читавшегося весной 2021 г.
—
как открытый курс в Computer Science Center в Санкт-Петербурге и
Новосибирске,
—
как спецкурс для студентов Кафедры теоретической кибернетики
Механико-математического факультета Новосибирского государствен-
ного университета.
Курс проходил одновременно в контактном и дистанционном формате:
студенты НГУ имели возможность слушать лекции в аудитории, одновре-
менно шла трансляция лекций в интернете. Большая часть материала курса
основана на книгах
— Миценмахера и Упфаля [MU05] и
— Мотвани и Рагхавана [MR95],
но курс местами сильно отличается от них. Для понимания курса необя-
зательны но очень полезны базовые знания теории вероятностей, которые
приводятся в приложении A.
За ценные замечания благодарю Сергея Евгеньевича Зинченко, студента
ММФ НГУ, и Павла Геннадьевича Емельянова, зам. декана ММФ НГУ.
ii
Оглавление
1. Введение 1
1.1. Наименьший разрез в графе .................... 2
1.2. Снижение вероятности ошибки .................. 5
1.3. Виды рандомизированных алгоритмов .............. 6
2. Базовые средства анализа вероятностей 9
2.1. Неравенство Буля и линейность математического ожидания . 9
2.2. Отложенное принятие решения .................. 10
2.3. Границы Чернова .......................... 12
2.3.1. Пример: Средняя степень в графе ............ 13
2.3.2. Пример: Маршрутизация в гиперкубе .......... 13
3. Урны и шары 19
3.1. Рандомизированные структуры данных ............. 19
3.1.1. Хэш-таблицы с цепочками ................. 20
3.1.2. Множества с лжеэлементами ............... 21
3.1.3. Фильтры Блюма ....................... 22
3.2. Приближение Пуассона ....................... 25
3.2.1. Ошибка в результате приближения ............ 26
3.2.2. Пример: Анализ фильтра Блюма ............. 29
4. Вероятностный метод 31
4.1. Теорема Адельмана ......................... 31
4.2. Аргументы, основанные на математическом ожидании . . . . 33
4.2.1. Пример: Максимальная выполнимость .......... 34
4.2.2. Пример: Двоичное разбиение пространства ....... 34
4.2.3. Дерандомизация ....................... 37
4.3. Случайный выбор и модификация ................ 39
4.4. Локальная лемма Ловаса ...................... 40
4.4.1. Пример: k-SAT ........................ 42
4.4.2. Пример: Непересекающиеся пути ............. 42
iii
Оглавление
4.4.3. Доказательство симметричной версии .......... 43
5. Алгебраические подходы 47
5.1. Полиномиальные хэш-функции .................. 47
5.1.1. Пример: Алгоритм Карпа-Рабина ............. 47
5.1.2. Скользящие хэш-функции ................. 49
5.1.3. Кольца вычетов и полиномов ............... 49
5.1.4. Вероятность коллизий ................... 50
5.1.5. Применение к алгоритму Карпа-Рабина ......... 52
5.2. Сравнение полиномов ........................ 53
5.2.1. Матрицы Эдмондса, Тутте, и паросочетания ...... 54
5.2.2. Лемма Шварца-Зиппеля .................. 55
5.2.3.
Пример: Параллельная проверка существования со-
вершенного паросочетания ................. 57
6. Изоляционная лемма 59
6.1. Гарантия единственности решения ................ 60
6.2. Пример: Теорема Валианта-Вазирани .............. 61
6.3. Пример: Параллельное построение паросочетания ....... 63
6.4. Единственность решения наименьшего веса ........... 66
7. Нижние оценки с помощью принципа Яо 67
7.1. Семейства детерминированных алгоритмов ........... 67
7.2. Теорема фон Неймана ....................... 68
7.3. Принцип Яо ............................. 69
7.4. Пример: Сортировка сравнениями ................ 71
8. Список литературы 73
A. Теория вероятностей 77
A.1. Формула включений-исключений ................. 77
A.2. Условная вероятность и независимость .............. 78
A.3. Случайные величины и математическое ожидание ....... 78
A.4. Распределения случайных величин ................ 79
A.5. Границы Чернова .......................... 80
B. Упражнения 83
B.1. Упражнения к глав. 1 ........................ 83
B.2. Упражнения к глав. 2 ........................ 84
iv
1. Введение
В алгоритмике вероятностные подходы встречаются в разных видах. Из
них, в этом курсе мы будем говорить о
— подходах к построению рандомизированных алгоритмов,
— подходах к анализу рандомизированных алгоритмов,
— вероятностном методе доказательства,
— теории сложности рандомизированных алгоритмов,
— дерандомизации.
Мы не будем говорить об
— алгоритмах для генерации случайных чисел,
— анализе средней сложности алгоритмов на случайных входах.
Не покрывать анализ алгоритмов на случайных входах — осознанное реше-
ние автора курса, так как для анализа алгоритмов на случайных входах
нужно определиться с распределением входов, которое может быть не
связано с распределением входов в приложениях или сильно зависит от
приложения. Наши же оценки будут верны в худшем случае: каким бы ни
был вход, средняя трудоёмкость наших алгоритмов и вероятность ошибки
останутся в заранее доказанных пределах. Если такой алгоритм (с опреде-
лённой вероятностью) выдаёт неправильный ответ, то его можно запустить
повторно для снижения вероятности ошибки. Это, например, невозможно
с алгоритмами, работающими хорошо на “средних входах”, когда они на
конкретном входе плохо работают.
1
1. Введение
1.1. Наименьший разрез в графе
Рандомизированные алгоритмы часто очень простые, порой такие простые,
что до них сложно додуматься, так как применяют шаги, на первый взгляд
не связанные с решением задачи вообще. Пример этому послужит алгоритм
Каргера [Kar93] для нахождения наименьшего разреза в графе: на его
примере также увидим, как даже высокую вероятность неправильного
ответа эффективно снизить до величины, которой можно пренебрегать.
Определение 1.1. Пусть
G
= (
V, E
)— граф и
∅(U(V
. Множество всех
рёбер с одной конечной вершиной в
U
и одной конечной вершиной в
U\V
называется разрезом.
Задача 1.2 (о минимальном разрезе).Дан граф
G
= (
V, E
), возможно
рёберно-взвешенный, требуется найти разрез наименьшей мощности или
наименьшего суммарного веса в графе G.
Можем ли мы эту задачу решить рандомизированным алгоритмом, который
просто случайно выбирает разрез? У пути с
n
вершинами и
n−
1рёбрами
есть 2
n−1−
1разрезов (так как из
n−
1рёбер можно составить 2
n−1
подмножеств, из которых запрещено пустое). Однако только
n−
1разрезов
имеют наименьшую мощность — один. То есть, вероятность таким образом
найти хотя бы один наименьший разрез не превосходит
n−1
2n−1−1.
По возрастанию
n
эта величина экспоненциально быстро стремится к нулю.
Мы ещё увидим, почему такая вероятность успеха не может считаться
приемлемой на практике.
Алгоритм Каргера [Kar93] случайно выбирает не разрез, а случайно
стягивает рёбра: для графа
G
= (
V, E
)и ребра
{u, v} ∈ E
через
G/{u, v}
обозначаем граф, который получается как результат стягивания ребра
{u, v}
,
то есть, как результат отождествления вершин
u
и
v
и удаления петли
{u, v}
.
Результат может быть мультиграфом с кратными рёбрами:
v
u
u,v
2
1.1. Наименьший разрез в графе
Стягивание ребра не уменьшает мощность наименьших разрезов в
G
, так
как любой разрез мощности
k
в графе после стягивания порождает раз-
рез мощности
k
в графе до стягивания. Этот факт использует алгоритм
Каргера [Kar93].
Алгоритм 1.3 (мин-разрез).
Дано: Мультиграф G= (V, E).
Результат: Разрез C⊆E.
1. Если |V|= 2,то возврат E.
2. Иначе:
3.
Выбор случайного ребра
{u, v} ∈ E
с равномерным распределением.
4. Возврат мин-разрез(G/{u, v}).
Хотя мы сейчас докажем, что вероятность успеха этого алгоритма стре-
мится к нулю по возрастанию размера графе
G
, она это делает только
полиномиально быстро. Как мы увидим в разд. 1.2, такая вероятность
успеха вполне может привести к приемлемому на практике алгоритму.
Теорема 1.4. Алг. 1.3 работает за время
O
(
n2
), и для любого наименьшего
разреза Cв графе G, алг. 1.3 возвращает Cс вероятностью хотя бы
2
n·(n−1).
Доказательство.
Поскольку каждая итерация снижает число вершин
n
на
единицу и алгоритм останавливается при
n
= 2, алгоритм останавливается
после
n−
2итераций. Каждая итерация работает за время
O
(
n
): если о каж-
дом кратном ребре графа вести только одну запись (в которой указывается
кратность ребра), то при стягивании вершин
u
и
v
достаточно проходить по
O
(
n
)записям о рёбрах, инцидентных вершине
u
, по
O
(
n
)записям о рёбрах,
инцидентных вершине v, и складывать их кратности.
Осталось оценить вероятность того, что алгоритм не стягивает ни одного
ребра из
C
, ведь тогда после
n−
2итераций остаются именно рёбра из
C
,
которые и возвращает алгоритм. Для
i∈ {
1
, . . . , n −
2
}
рассмотрим события
Ei:= на i-той итерации не стягивается ни одно ребро из C,
Fi:=
i
\
j=1
Ei.
3
1. Введение
Для
n >
3мы хотим найти вероятность
Pr
[
Fn−2
]. Применением опр. A.2 её
можно привести к виду
Pr[Fn−2] = Pr[En−2∩Fn−3] = Pr[En−2|Fn−3]·Pr[Fn−3]
= Pr[En−2|Fn−3]·Pr[En−3|Fn−4]·. . . ·Pr[E2|F1]·Pr[F1].
Поэтому достаточно найти
Pr
[
F1
] =
Pr
[
E1
]и
Pr
[
Ei|Fi−1
]для каждого
i∈
{
2
, . . . , n −
2
}
. Пусть
k
:=
|C|
. Каждая вершина в графе имеет степень хотя
бы k. То есть, изначально в графе nвершин и хотя бы nk/2рёбер, ведь
nk ≤X
v∈V
deg(v)=2|E|.
Следовательно,
Pr[E1]≥1−k
nk/2= 1 −2k
nk = 1 −2
n.
Теперь оценим Pr[Ei|Fi−1]. После i−1итераций в графе остаётся n−i+
1вершин и после стягивания рёбер наименьший разрез в графе всё ещё
имеет мощность хотя бы
k
. Следовательно, все вершины всё ещё имеют
степень хотя бы
k
, из-за чего в графе есть хотя бы
k·
(
n−i
+ 1)
/
2рёбер.
Следовательно,
Pr[Ei|Fi−1]≥1−2k
k·(n−i+ 1) = 1 −2
n−i+ 1.
Теперь получается
Pr[Fn−2]≥
n−2
Y
i=1 1−2
n−i+ 1=
n−2
Y
i=1 n−i−1
n−i+ 1
=n−2
n·n−3
n−1·n−4
n−2·. . . ·4
6·3
5·2
4·1
3=2
n(n−1).
Мы видим, вероятность действительно получить разрез
C
— довольно мала,
даже стремится к нулю по возрастанию числу вершин
n
. Однако она это
делает полиномиально быстро, что позволяет нам в следующем разделе
превратить алг. 1.3 в алгоритм с любой константной вероятностью ошибки
и трудоёмкостью O(n4).
4
1.2. Снижение вероятности ошибки
С трудоёмкостью
O
(
n4
)алг. 1.3 является далеко не самым быстрым
алгоритм для поиска минимальных разрезов. В самом деле, более быст-
рые алгоритмы реализованы во многих библиотеках графовых алгоритмов.
Справедливости ради нужно сказать, что его можно легко ускорить до
O
(
n2log3n
)[KS96], что почти оптимально с учётом того, что в плотных
графах нужно посмотреть хотя бы каждое из Θ(
n2
)рёбер. Также у ал-
горитма есть два преимущества: во-первых, он хорошо параллелится, а
именно он работает за время
O
(
log2n
)на
O
(
mn2log n
)процессорах. Во-
вторых, он любой минимальный разрез находит с высокой вероятностью.
То есть, его можно применить для поиска наименьшего разреза с любыми
дополнительными свойствами.
1.2. Снижение вероятности ошибки
Перед тем, как заняться снижением вероятности ошибки рандомизирован-
ных алгоритмов, стоит задуматься над тем, до какого уровня её целесооб-
разно снижать.
В 1996 г. в компании IBM оценили, что космическая радиация каждый
месяц меняет состояние одного бита в оперативной памяти объёма 256 MiB.
Следовательно, алгоритм, работающий в течение одной минуты в области
памяти размера 5 MiB, получает неправильное значение какого-нибудь бита
с вероятностью примерно 6
·
10
−7
. Соответственно, если снизить вероятность
ошибки алг. 1.3 до 10
−8
, то ею можно пренебрегать на фоне, например,
космической радиации.
Предположим, алгоритм находит существующее решение с вероятностью
хотя бы
p
. Для заданного числа
ε >
0требуется найти число
t
(
ε
)повто-
рений алгоритма такое, чтобы вероятность ошибки алгоритма, то есть,
вероятность на каждой из t(ε)итераций не находить решение, была
(1 −p)t(ε)≤ε.
Поскольку 1+
x≤ex
для любого
x∈R
, достаточно, чтобы число повторений
t(ε)удовлетворяло
e−pt(ε)≤ε
⇐⇒ −pt(ε)≤ln ε
⇐⇒ t(ε)≥ln ε
−p=1
pln 1
ε.
5
1. Введение
То есть, для снижения вероятности ошибки до
ε
достаточно повторять
алгоритм 1
pln 1
εраз.
Множитель
ln
1
/ε
значит, что удвоив время работы алгоритма, его вероят-
ность ошибки можно снизить, например, с 10
−4
до 10
−8
. Вполне приемле-
мыми усилиями можно снизить вероятность ошибки до такого уровня, что
вероятнее сбои из-за космической радиации.
Множитель 1
/p
говорит о том, что алг. 1.3 с его очень маленькой ве-
роятностью успеха
p≥
2
/n
(
n−
1) достаточно повторять
O
(
n2
)раз для
достижения любой константной вероятности ошибки, что приведёт к общей
трудоёмкости алгоритма O(n4).
Получается, что даже алгоритм, который по видимому выполняет не
связанные с решением задачи шаги и выдаёт правильный ответ с крайне
малой вероятностью, можно превратить в приемлемый алгоритм посред-
ством повторения. Однако когда вероятность успеха стремится к нулю
экспоненциально быстро, как 2
−n
, то требуемое число повторений может
оказаться практически неприемлемым.
1.3. Виды рандомизированных алгоритмов
Рандомизированные алгоритмы можно грубо разделить на два вида.
Алгоритм Лас Вегас
всегда выдают правильный ответ, но время работы
является случайной величиной.
Алгоритм Монте Карло
может выдать ложный ответ, но время работы
в худшем случае ограничено сверху функцией от объёма входных
данных. Например алг. 1.3 является алгоритмом Монте Карло.
В контексте задач распознавания, ответ на которые либо “да” либо “нет”,
имеет смысл различать два подвида алгоритмов Монте Карло.
Алгоритм с ложно-положительными ответами
может выдать ответ
“да”, когда правильный ответ – “нет”.
Алгоритм с ложно-отрицательными ответами
может выдать ответ
“нет”, когда правильный ответ – “да”.
6
1.3. Виды рандомизированных алгоритмов
В контексте задач поиска (решения) мы часто умеем эффективно проверять,
является ли выданный алгоритмом ответ решением задачи. Поэтому часто
встречаются алгоритмы следующего типа:
—
если решение существует, то алгоритм находит его с вероятностью
хотя бы p,
— если решения не существует, то алгоритм ничего и не возвращает.
Алгоритмы Монте Карло и алгоритмы Лас Вегас превращаются друг в
друга следующим образом.
Утверждение 1.5. Любой алгоритм Лас Вегас с ожидаемым временем
работы
t
(
n
)можно превратить в алгоритм Монте Карло со временем рабо-
ты O(t(n)) и вероятностью ошибки не более 1/2.
Доказательство.
Алгоритм Монте Карло даёт алгоритму Лас Вегас ра-
ботать 2
t
(
n
)шагов (например, на машине Тьюринга). Если алгоритм Лас
Вегас за это время выдаёт ответ, то алгоритм Монте Карло выдаёт его
же. Иначе алгоритм Монте Карло выдаёт ответ “не знаю”. Время работы
алгоритма Монте Карло ограничено сверху
O
(
t
(
n
)), так как он всего лишь
выполняет 2t(n)шагов алгоритма Лас Вегас, ведя счётчик шагов.
Алгоритм Монте Карло выдаёт неправильный ответ только в том случае,
что алгоритм Лас Вегас работает в два раза больше ожидаемого. Веро-
ятность для этого не превосходит 1
/
2согласно следующему неравенству
Маркова.
Лемма 1.6 (Неравенство Маркова).Для любой неотрицательной случайной
величины Xи любого k > 0,
Pr[X≥k]≤E[X]
k.
Доказательство (для дискретных случайных величин).
По определению ма-
тематического ожидания (см. опр. A.5),
E[X] = X
i
i·Pr[X=i] = X
i<k
i·Pr[X=i] + X
i≥k
i·Pr[X=i]
≥k·X
i≥k
Pr[X=i] = k·Pr[X≥k].
Лемма следует путём деления обеих сторон неравенства на k > 0.
7
1. Введение
Заметим, что лемма верна независимо от распределения случайной вели-
чины
X
. Поэтому она очень общая, но как мы ещё увидим, даёт довольно
слабые оценки.
Утверждение 1.7. Из алгоритма Монте Карло с вероятностью успеха
p
и временем работы
t
(
n
)и алгоритма проверки решения со временем ра-
боты
v
(
n
)можно построить алгоритм Лас Вегас с ожидаемым временем
работы (t(n) + v(n))/p.
Доказательство.
Алгоритм Лас Вегас повторяет алгоритм Монте Карло
пока алгоритм проверки не подтверждает корректности решения. Каждая
итерация работает за время
t
(
n
) +
v
(
n
). Осталось оценить число итера-
ций
X
. Тогда
Pr
[
X
=
i
] = (1
−p
)
i−1p
. Это геометрическое распределение с
параметром pпоэтому E[X] = 1/p (см. опр. A.8).
Заметим, что если решение существует и алгоритм Монте Карло находит
его с вероятностью хотя бы 1/2, то достаточно повторить его в среднем
два раза, чтобы найти решение. Однако время работы этого алгоритма Лас
Вегас не ограничено в худшем случае.
Следующим образом и его можно ограничить сверху. Если задача вообще
разрешима, то существует детерминированный алгоритм её решения. У него
время работы на входах длины
n
ограничено сверху какой-то функцией
t
(
n
).
Его можно запускать “параллельно” с алгоритмом Лас Вегас, выполняя
поочерёдно по шагу алгоритма Лас Вегас и детерминированного алгоритма,
и выдать ответ как только один из алгоритмов выдаст ответ. В результате
получается алгоритм Лас Вегас, время работы которого в худшем случае
ограничено O(t(n)).
8
2. Базовые средства анализа
вероятностей
В этой главе познакомимся с базовыми подходами к анализу вероятности
ошибки и ожидаемой трудоёмкости алгоритмов.
2.1. Неравенство Буля и линейность
математического ожидания
Неравенство Буля
(A.1)
является одним из простейших и наиболее гибких
подходов к оценке вероятностей сверху: вероятность того, что наступит хотя
бы одно из нескольких событий, можно оценить сверху суммой вероятностей
этих событий.
Для примера допустим, в каждой упаковке мюсли с равной вероятностью
находится одна из
n
возможных фишек. Сколько упаковок мюсли нужно
съесть (или хотя бы купить), чтобы собрать nразных фишек? Пусть
X:= число упаковок, которые мы покупаем до тех пор,
пока не получим nразных фишек,
Xi:= число упаковок, которые мы покупаем,
пока у нас есть ровно i−1разных фишек.
Тогда
X=
n
X
i=1
Xi
и вероятность получить новую фишку, когда уже есть i−1фишек, равна
pi:= n−i+ 1
n.
9
2. Базовые средства анализа вероятностей
Случайная величина
Xi
имеет геометрическое распределение
Pr
[
Xi
=
k
] =
(1 −pi)kpi. Поэтому для анализа E[X]можно воспользоваться тем, что из-
вестны
E
[
Xi
]и что математическое ожидание является линейной функцией:
E[X] =
n
X
i=1
E[Xi] =
n
X
i=1
1
pi
=
n
X
i=1
n
n−i+ 1 =n
n
X
i=1
1
i=n·Hn,
где
Hn∈ln n
+ Θ(1) —
n
-ое гармоническое число. Согласно неравенству
Маркова (лем. 1.6),
Pr
[
X≥
2
n·Hn
]
≤
1
/
2. Однако можно найти намного
более хорошую оценку с помощью неравенства Буля
(A.1)
. Пусть
Ei
—
событие не получить i-ую фишку после nln n+cn покупок. Тогда
Pr[Ei] = 1−1
nn(ln n+c)< e−(ln n+c)=1
ecn.
так как
1 + k
nn< ek.
Теперь вероятность не получить хотя бы одну фишку, согласно неравенству
Буля,
Prhn
[
i=1
Eii≤
n
X
i=1
Pr[Ei]≤1
ec.
Поставив
c
:=
ln n
, увидим, что вероятность купить больше 2
nln n
упаковок
мюсли для получения всех фишек не превосходит 1/n.
2.2. Отложенное принятие решения
Принцип отложенного принятия решения заключается в том, что когда слу-
чайно и независимо друг от друга выбираются значения переменных
x1,...,
xn
, то последовательность выбора значений не играет роли. Это может
существенно облегчить вероятностный анализ.
Для примера рассматриваем задачу проверки ортогональности матри-
цы
A
. То есть, нужно проверить, верно ли
AT
=
A−1
, или, что равнозначно,
верно ли
AAT
=
I
. Ортогональностью матрицы можно воспользоваться в
алгоритмах линейной алгебры. Например, умножение на ортогональную
матрицу не увеличивает ошибки, обратная матрица легко вычисляется, и
все симметричные матрицы разлагаются на диагональную и ортогональ-
ную матрицы. Но для того, чтобы воспользоваться её свойствами, нужно
10
2.2. Отложенное принятие решения
проверить, является ли матрица ортогональной. На самом деле, мы будем
решать следующую, более общую, задачу.
Задача 2.1 (Проверка произведения матриц).Даны матрицы
A, B, C ∈
Zn×n, требуется проверить, верно ли AB =C.
Для решения задачи достаточно вычислить произведение
AB
и сравнить его
с матрицей
C
. Произведение
AB
можно найти за время
O
(
n2.38
)[CW90], и
постоянно находят всё более быстрые алгоритмы для перемножения матриц,
но они все ещё далеки от трудоёмкости
O
(
n2
), то есть, от линейного времени.
На этом фоне может быть удивительно, что весьма простой рандомизи-
рованный алгоритм Фрейвальдса [Fre77] решает зад. 2.1 за время
O
(
n2
),
то есть, за линейное время. Он пользуется тем, что если
AB
=
C
, то для
любого r∈ {0,1}n,
(AB)r=Cr ⇐⇒ A(Br) = C r.
При этом
Cr
и
Br
— это умножение матрицы на вектор и выполняется
за время
O
(
n2
). В свою очередь,
Br
— это вектор, так что
A
(
Br
)— опять
умножение матрицы на вектор.
Алгоритм 2.2 (Фрейвальдс [Fre77]).
Дано: Матрицы A, B, C ∈Zn×n.
Результат: “AB =C” либо “AB 6=C”.
1.
Выбор случайного вектора
r∈ {
0
,
1
}n
с равномерным распределением.
2. Если A(Br) = Cr,то возврат “AB =C”.
3. Иначе возврат “AB 6=C”.
Теорема 2.3. Алг. 2.2 работает за время
O
(
n2
)и возвращает ложный ответ
с вероятностью не более 1/2.
Доказательство. Алгоритм не лжёт, когда утверждает AB 6=C. Поэтому
допустим, что он утверждает “
AB
=
C
”, когда на самом деле
AB 6
=
C
.
Тогда ABr =Cr. Оценим вероятность этого.
Пусть
D
:=
AB −C6
= 0 и пусть
d
— ненулевая строка матрицы
D
.
Поскольку
Dr
= 0 влечёт
dr
= 0, мы знаем
Pr
[
ABr
=
Cr
] =
Pr
[(
ABr−Cr
) =
0] = Pr[Dr = 0] ≤Pr[dr = 0]. Осталось доказать Pr[dr = 0] ≤1/2. Заметим
dr =
n
X
i=1
diri= 0.
11
2. Базовые средства анализа вероятностей
Существует j∈ {1, . . . , n}такое, что dj6= 0 и
rj=−Pi∈{1,...,n}\{j}diri
dj
.(2.1)
Применяем принцип отложенного принятия решения: предположим, что
из всех компонент вектора
r
,
rj
случайно выбирается последней. Тогда
правая сторона
(2.1)
имеет некоторое значение
v
, а
rj
выбирается случайно
из {0,1}. Следовательно, Pr[dr = 0] = Pr[r1=v]≤1/2.
2.3. Границы Чернова
Границы Чернова позволяют оценить вероятность существенного отклоне-
ния от математического ожидания случайной величины, являющейся суммы
независимых случайных величин с распределением Бернулли. Вероятность
убывает экспоненциально по расстоянию от среднего и по числе слагаемых
в сумме. Схема применения границ Чернова к случайной величине
X
, как
правило, следующая.
1. Находим независимые случайные величины Xi∈ {0,1}такие, что
X=
n
X
i=1
Xi.
2. Находим математическое ожидание
µ:= E[X] = E
n
X
i=1
Xi=
n
X
i=1
E[Xi] =
n
X
i=1
Pr[Xi= 1].
3. Применяем границу Чернова, например
∀δ > 0 : Pr[X≥(1 + δ)µ]<eδ
(1 + δ)(1+δ)µ
.
Заметим, что мы предполагаем лишь независимость случайных величин и
не требуем, чтобы у них было одинаковое распределение. Больше вариантов
границ Чернова можно найти в прилож. A.5.
12
2.3. Границы Чернова
2.3.1. Пример: Средняя степень в графе
Для примера рассматриваем неориентированные графы с
n
вершинами и
возможными петлями. Каждое из
n
(
n
+ 1)
/
2рёбер присутствует с веро-
ятностью
p
. Пусть
X
— максимальная степень в графе и
Xv
— степень
вершины v. Возьмём
Xvu =(1если ребро {v, u}присутствует и
0иначе.
Величины Xvu независимы и
Xv=
n
X
u=1
Xvu.
Следовательно, E[Xv] = np, а
Pr[Xv≥(1 + 2)np]<e2np
33np <3−np.
Используя неравенство Буля, получим Pr[X≥3np]< n ·3−np.
2.3.2. Пример: Маршрутизация в гиперкубе
Для более практичного примера рассматриваем следующую задачу на
избежание пробок. В её разборе мы столкнёмся с проблемой, что не всегда
случайная величина, которую мы анализируем, является суммой случайных
величин с распределением Бернулли. Иногда приходится анализировать
вместо неё другую случайную величину, которая её ограничивает сверху
или снизу и обладает необходимыми нам свойствами.
Задача 2.4. Дана коммуникационная сеть из
N
узлов, каждый из кото-
рых является отправителем и получателем ровно одного из
N
сообщений.
Требуется доставить каждое сообщение по назначению как можно быстрее.
Предполагается, что у каждого узла есть уникальный адрес и что сеть
работает синхронно, шагами. На каждом шаге
— каждое сообщение двигается не более чем по одному ребру,
— каждое ребро носит не более одного сообщения.
13
2. Базовые средства анализа вероятностей
В узлах сообщения ждут в очередях: кто первый пришёл, тот первый и
вышел. Если сеть — полный граф, то каждое сообщение можно доставить
по назначению за один шаг. Но на практике такие коммуникационные
сети нереализуемы, на практике они разрежены, например с топологией
гиперкуба.
Топология гиперкуба. Сеть с топологией гиперкуба состоит из
N
:= 2
n
узлов, у каждого узла есть адрес из
n
битов, ребро между двумя узлами
существует тогда и только тогда, когда их адреса отличаются друг от друга
ровно одним битом.
Схема исправления битов. В гиперкубе применима схема маршру-
тизации “исправление битов”. На каждом шаге сообщение с целевым ад-
ресом
aia2. . . an
, находясь в узле с адресом
b1b2. . . bn
, отправляется по
ребру, соответствующему наименьшему
k
такому, что
ak6
=
bk
. Например
сообщение из 0101 в0010 идет по маршруту 0101 →0001 →0011 →0010.
Нижняя оценка числа шагов. Поскольку диаметр гиперкуба —
n
, есть
примеры задачи, в которых доставка всех сообщений по назначению требу-
ет хотя бы
n
шагов. Более сильную нижнюю оценку можно доказать для
забывчивых схем маршрутизации, как для схемы исправления битов: в них
маршрут сообщений зависит только от адресов отправителя и получателя.
Известно, что поскольку у каждого узла степень равна
n
, доставка сообще-
ний любым детерминированным забывчивым алгоритмом занимает хотя
бы Ω(
p2n/n
)шагов [BH85;KKT91], то есть, экспоненциально долго по
сравнению с диаметром гиперкуба.
Рандомизированный алгоритм. Алгоритм Валианта доставляет все
2
n
сообщений по назначению за
O
(
n
)шагов в среднем [Val82;VB81]. То
есть, он экспоненциально быстрее любого забывчивого детерминированного
алгоритма. Ускорить его практически нельзя, так как диаметр гиперкуба
равен
n
. Ключевым подходом алгоритма является распределение нагрузки
на сеть для избежания пробок.
Алгоритм 2.5 (Валиант [Val82;VB81]).
1. Используя схему исправления битов:
2. Отправить каждое сообщение iпо случайному адресу r(i).
14
2.3. Границы Чернова
3. Отправить каждое сообщение iиз r(i)по назначению.
Для оценки среднего числа шагов доставки сообщения
i
до случайного
адреса
r
(
i
)заметим, что число шагов для доставки сообщения равна сумме
числа шагов сообщения
i
в пути и числа шагов сообщения
i
, проводимых в
очередях. Число шагов в пути не превышает
n
, так как в худшем случае
нужно исправить все nбитов. Осталось оценить число шагов в очередях.
Определение 2.6. Для любого сообщения
i
рассматриваем последователь-
ность рёбер
ρi:= (e1, e2, . . . , ek),
посещаемых сообщением iна пути до случайного адреса r(i). Для сообще-
ний iиj,
Hij := (1, ρiиρjимеют общие рёбра,
0,иначе.
Для любого сообщения iтакже будем обозначать через
Si:= {j6=i|Hij = 1}
множество сообщений, использующих рёбра на пути ρi.
Лемма 2.7. Число шагов, проводимых сообщением
i
в очередях, не превы-
шает |Si|.
Доказательство.
Докажем, что каждый раз, когда некоторое сообщение
i
ждёт вместо того, чтобы двигаться, мы в этом можем “обвинить” некоторое
сообщение в
Si
. При этом мы будем винить каждое сообщение в
Si
не более
одного раза и число возможных “виновников” ограничено сверху
|Si|
, из
чего следует лемма.
Сначала заметим, что каждое сообщение
j
, использующее некоторое
ребро
e
на пути
ρi
и покидающее
ρi
по некоторому ребру
e0
, не вернётся на
путь
ρi
никогда: сообщения
i
и
j
будут находиться в частях гиперкуба, у
узлов которых бит, исправленный ребром
e0
, принимает противоположные
значения. Поэтому каждое сообщение покидает ρiне более одного раза.
Теперь допустим, что число шагов сообщения
i
в очередях увеличивается
на единицу с
`
до
`
+ 1. Тогда на некотором шаге
t
сообщение
i
готов
использовать некоторое ребро
ej
. При этом
t−j
=
`
, так как сообщение
i
уже провело
`
шагов в очередях. Раз сообщение
i
не может использовать
15
2. Базовые средства анализа вероятностей
ребро
ej
, ребро
ej
используется другим сообщением в тот момент
t
. Пусть
t0
— это последний шаг, на котором какое-нибудь сообщение
q∈Si
использует
какое-либо ребро
ej0
такое, что
t0−j0
=
`
. Если
q
не покидает
ρi
после
e0
j
,
то какое-нибудь сообщение (
q
или другое) воспользуется ребром
ej0+1
на
шаге t0+ 1, что противоречит максимальности t0.
Теперь для оценки шагов, проводимых сообщением
i
в очередях, доста-
точно сверху оценить
|Si|
. Для применения границы Чернова сначала оце-
ним E[|Si|].
Лемма 2.8. E[|Si|]≤n.
Доказательство.
Пусть
T
(
e
)— число сообщений, использующих ребро
e
гиперкуба. Тогда
E[|Si|] = EhN
X
j=1
Hij i≤Ehk
X
i=1
T(ei)i=
k
X
i=1
E[T(ei)] ≤
n
X
i=1
E[T(ei)].
Осталось доказать
E
[
T
(
e
)] = 1 для каждого ребра
e
. Пусть
e
=
{u, v}
с
адресами узлов такими, что
u=b1b2. . . bkbk+1 . . . bn,
v=b1b2. . . b0
kbk+1 . . . bn,и
b0
k= 1 −bk.
Сообщение iпереходит по ребру {u, v}только если
—
адрес отправителя заканчивается на
bk+1 . . . bn
(точнее, на
bkbk+1 . . . bn
или
bk0bk+1 . . . bn
), так как схема исправления битов могла поменять
только первые k−1битов до перехода по ребру {u, v}, и
—
случайный адрес доставки
r
(
i
)начинается с
b1b2. . . b0
k
, так как схема
исправления битов не может поменять остальные биты после перехода
по ребру {u, v}.
Значит, есть 2
k
сообщений с подходящим адресом отправителя. Каждое
такое сообщение
i
имеет подходящий адрес
r
(
i
)с вероятностью 2
−k
. Следо-
вательно, E[T(e)] = 2k·2−k= 1.
Теорема 2.9 ([Val82;VB81]).С вероятностью хотя бы 1
−
1
/N
, алг. 2.5
доставит все сообщения по назначению за 14nшагов.
16
2.3. Границы Чернова
Доказательство.
Число шагов, проводимых сообщением
i
в очередях, не
превосходит
|Si|
=
PN
j=1 Hij
. Мы хотим применить границы Чернова, но мы
точного значения
E
[
|Si|
]не знаем. Мы знаем точное значение
E
[
Pk
i=1 T
(
ei
)],
но
T
(
ei
)не являются независимыми случайными величинами и даже не
величинами из {0,1}, так что к ним границы Чернова неприменимы.
Однако есть
(A.18)
и для отдельно взятого сообщения
i
, величины
Hij
для
разных jнезависимые, так как случайные адреса r(j)берутся независимо
друг от друга. Мы уже в лем. 2.8 доказали
E
[
|Si|
]
≤n
. Воспользуемся
границей Чернова (A.18) и получим
Pr[|Si|>6n]≤2−6n.
Следовательно, сообщение
i
в очереди проводит больше 6
n
шагов с вероят-
ностью не более 2
−6n
. В общей сложности сообщений —
N
= 2
n
. Согласно
неравенству Буля, вероятность того, что хотя бы одно сообщение прове-
дёт больше 6
n
шагов в очередях, не превосходит 2
n·
2
−6n
= 2
−5n
. Итого,
доставка сообщений по случайному адресу занимает больше 7
n
шагов с
вероятностью не более 2
−5n
. Отправка со случайного адреса по адресу
получателя — то же самое, только наоборот. Итого, вероятность, что хотя
бы одно сообщение не достигнет адресата за 14
n
шагов, не превосходит
2·2−5n≤2−n= 1/N (если фазы доставки не пересекаются).
Следствие 2.10. Ожидаемое число шагов для доставки всех сообщений
алг. 2.5 не превосходит 15n.
Доказательство.
Пусть
X
— число шагов доставки сообщений алгорит-
мом 2.5. Мы доказали
Pr
[
X≤
14
n
]
≥
1
−
1
/N
. Мы точно знаем
X≤N·n
, так
как каждое из
N
сообщений можно доставить по
n
рёбрам не параллельно,
а последовательно. Эта верхняя оценка величины
X
позволяет нам усилить
неравенство Маркова.
E[X] = X
i∈N
i·Pr[X=i] = X
i≤14n
i·Pr[X=i] + X
i>14n
i·Pr[X=i]
≤14nX
i≤14n
Pr[X=i] + Nn X
i>14n
Pr[X=i]
≤14n·Pr[X≤14n] + Nn ·Pr[X > 14n]
≤14n·(1 −1/N) + N n ·1/N
≤15n.
17
3. Урны и шары
В этой главе рассматриваем следующий случайный процесс:
m
шаров кида-
ем в
n
урны, где урны выбираются с равномерным распределением. Такая
модель встречается, например
—
в рандомизированных структурах данных (делаем
m
записей в хэш-
таблице размера n),
—
при распределении нагрузки (распределяем
m
работ по
n
процессо-
рам).
Мы делаем акцент на рандомизированных структурах данных.
3.1. Рандомизированные структуры данных
В этом разделе рассматриваются структуры данных, которые хранят под-
множество
S
=
{s1, s2, . . . , sm} ⊆ U
некоторого большого множества
U
,
используют как можно меньше памяти, и как можно быстрее отвечают на
вопрос “x∈S?”.
Например, можно хранить
S
как отсортированный массив размера
|S|
или
сбалансированное дерево. Такая структура данных требует
O
(
|S|
)памяти и
на вопрос “
x∈S
?” может ответить за время
O
(
log |S|
). Однако наша цель —
поиск элемента за время
O
(1). Для этого будем использовать хэш-функции.
Хэш-функции. В контексте этой главы, хэш-функции
h
:
U→ {
0
, . . . , n−
1}удовлетворяют некоторым идеализированным требованиям:
— Для всех x∈Uиj∈ {0, . . . , n −1}выполняется Pr[h(x) = j] = 1/n;
— Все h(x)для x∈Uнезависимые в совокупности.
При этом
h
(
x
)для каждого
x∈U
имеет вполне определённое зафиксиро-
ванное значение, то есть не выбирается случайно каждый раз снова.
19
3. Урны и шары
В наших примерах,
n
будет намного меньше, чем
U
, скорее
n∈O
(
|S|
).
Поэтому хэш-функции в общем необратимы, то есть, могут быть
x, y ∈U
такие, что
h
(
x
) =
h
(
y
). Построение хэш-функций, близких описанному
идеалу, нетривиально и выходит за рамки курса.
Иногда можно довольствоваться более слабыми требованиями, например,
чтобы коллизии были достаточно невероятными но необязательно равнове-
роятны для каждый пары
x, y ∈U
. Конструкцию таких хэш-функций мы
увидим в глав. 5об алгебраических подходах.
3.1.1. Хэш-таблицы с цепочками
Эта структура данных всегда правильно отвечает на вопросы “x∈S?”, но
время обработки запроса является случайной величиной (то есть, алгоритм
поиска в ней является алгоритмом Лас Вегас).
Ингредиенты: Массив
A
размера
n
, в каждой ячейке хранится указатель
на связный список.
Инициализация и обработка запроса: Каждый элемент
si∈S
добав-
ляем в список в ячейке A[h(si)].
Хэш-таблицы с цепочками естественным образом соответствуют модели
шаров и урн: урны — это списки, а шары — это элементы
x
множества
S
,
которые мы кидаем в случайную урну A[h(x)].
Время обработки вопроса “
x∈S
?” складывается из времени для вы-
числения значения
h
(
x
)и времени для поиска элемента
x
в списке
A
[
h
(
x
)]. В
худшем случае все элементы из
S
оказались в одном и том же списке
A
[
h
(
x
)].
Тогда время поиска —
O
(
|S|
). Для оценки времени поиска в среднем пусть
Xij =(1если шар iпопал в урну j,
0иначе.
Если раскидать
m
шаров по
n
урнам, то среднее наполнение
Xj
урны
j
можно оценить как
E[Xj] = Ehm
X
i=1
Xij i=
m
X
i=1
Pr[Xij = 1] = n·1
m=m
n.
20
3.1. Рандомизированные структуры данных
Значит, если
|S|
=
n
, то среднее время поиска — константа. Можно доказать,
что с вероятностью хотя бы 1
−
1
/n
в каждой ячейке не более
3 ln n/ln ln n
эле-
ментов, что приводит к более быстрому поиску, чем в сбалансированном
дереве.
Недостатки. У хэш-таблиц с цепочками высокая волатильность времени
поиска:
O
(1) в среднем против
O
(
|S|
)в худшем случае. Также они много
памяти тратят на пустые ячейки. Третьим недостатком является их размер
— для доступа за время
O
(1) в среднем нужен массив с
n
=
m
ячейками, в
каждой хранится указатель или сам элемент — обычно 64 бита. Поэтому
хэш-таблица с цепочками может легко занять 64
m
битов для хранения
m
элементов, и потом ещё хранит сами элементы. Ниже мы увидим, как
хранить
m
элементов в структуре данных размера 8
m
битов, которая даёт
ложно-положительный ответ с вероятностью менее 0
.
02. При этом самих
элементов структура данных даже не хранит.
3.1.2. Множества с лжеэлементами
Чтобы гарантировать время поиска
O
(1) в худшем случае, можно попытать-
ся отказаться от цепочек в ячейках хэш-таблицы, зато на вопрос “
x∈S
?”
разрешить ложно-положительные ответы.
Такие структуры данных могут пригодиться как фильтр перед обраще-
нием к более медленному хранилищу данных: только если фильтр отвечает
x∈S
, то за истинным ответом обращаемся в базу данных на диске, в
облаке, в или интернете, в то время как фильтр хранится в быстрой памяти.
Например, базы данных Google Bigtable, Apache HBase, Apache Cassandra, и
PostgreSQL используют фильтры во избежание лишних обращений к диску:
запись ищется только в файлах, в которых вероятно есть запись.
Ингредиенты: Для хранения подмножества
S
=
{s1, s2, . . . , sm} ⊆ U
используем массив Aразмера nи хэш-функцию h:U→ {0, . . . , n −1}.
Инициализация: Для каждого
si∈S
ставим
A
[
h
(
si
)]
←
1. Сами элемен-
ты множества Sнигде не хранятся, так что структура данных использует
ровно nбитов.
Обработка вопроса“
x∈S
?”: Ответ “да” если
A
[
h
(
x
) = 1], а “нет” иначе.
21
3. Урны и шары
Вероятность ошибки: Если
x∈S
, то алгоритм на вопрос “
x∈S
?” точно
отвечает “да”. Если ответ “нет”, то алгоритм может ответить “да”. То есть,
существует вероятность ложно-положительного ответа. Для её оценки пред-
ставим, что мы раскидали
m
шаров по
n
урнам (выбрали
m
значений
h
(
si
)
для всех si∈S). Тогда, для x /∈S,h(x)— это просто случайная величина,
независимая от всех
h
(
si
). Поэтому вероятность ложно-положительного
ответа для
x /∈S
равна вероятности, что случайная урна
h
(
x
)непуста, то
есть
Pr[A[h(x)] = 1] = 1 −1−1
nm.
Если мы закладываем константное число
c
битов на каждый элемент мно-
жества S(то есть, берём n=cm), то для x /∈S,
Pr[A[h(x)] = 1] = 1 −1−1
cmm= 1 −1 + −1/c
mm≈1−e−1
c.
Этот результат не впечатляет: для
c
= 8 вероятность ложно-положительного
ответа около 0
.
12. Только для
c
= 100 она приближается к 0
.
01, в то время
как хэш-таблица с цепочками этого же размера даёт точные ответы.
3.1.3. Фильтры Блюма
Как прежде, мы хотим хранить множество
S
=
{s1, . . . , sm} ⊆ U
и отвечать
на вопросы “
x∈S
?” быстро и используя мало памяти. При этом, как и
раньше, мы разрешаем ложно-положительные ответы. Фильтры Блюма
позволяют находить плавные компромиссы между вероятностью ложно-
положительного ответа и размером потребляемой памятью [Blo70].
Ингредиенты: Массив
A
размера
n
, изначально все ячейки нулевые,
хэш-функции h1, . . . , hk:U→ {0, . . . , n −1}.
Инициализация: Для каждого
s∈S
и
i∈ {
1
, . . . , k}
ставим
A
[
hi
(
s
)]
←
1.
Обработка вопроса “
x∈S
?”: если
A
[
hi
(
x
)] = 1 для всех
i∈ {
1
, . . . , k}
,
то ответ “да”, иначе ответ “нет”.
22
3.1. Рандомизированные структуры данных
Вероятность ложно-положительного ответа: Допустим, мы добавили
множество
S
=
{s1, . . . , sm}
в фильтр Блюма с
k
хэш-функциями, то есть,
раскидали
km
шаров по
n
урнам. После этого вероятность, что
i
-ая урна
пуста,
Pr[A[i] = 0] = p:= 1−1
nk·m=1−1
nn·k·m
n
≈˜p:= exp−km
nдля больших n.
Оценка вероятности ложно-положительного ответа для
x /∈S
с подвохом.
Для
x /∈S
, разумеется,
hi
(
x
)— случайные величины, независимые ни
друг от друга, ни от
hi
(
sj
). Поэтому вероятность ложного ответа равна
вероятности, что во все случайно выбранные урны
h1
(
x
)
, h2
(
x
)
, . . . , hk
(
x
)
непустые. Но
Pr[ответ “x∈S”] = Prhk
\
i=1
(A[hi(x)] = 1)i6= (1 −p)k,
ведь события
A
[
i
]=1и
A
[
j
]=1в общем зависят друг от друга. Однако
мы знаем, что ожидаемое число нулевых ячеек в массиве
A
—
pn ≈˜pn
.
Временно делаем упрощающее допущение, что после добавления множе-
ства
S
в фильтр Блюма хотя бы
˜pn
из
n
ячеек нулевые (мы его обоснуем
в следующем разд. 3.2). Тогда вероятность, что случайно выбранная урна
непуста, не превышает n−˜pn
n= 1 −˜p
и вероятность ложно-положительного ответа, то есть вероятность, что для
x /∈S
все случайно и независимо выбранные урны
h1
(
x
)
, h2
(
x
)
, . . . , hk
(
x
)
непустые, действительно
Pr[ответ “x∈S”]≤(1 −˜p)k.
Подбор числа
k
хэш-функций. Как подобрать
k
, чтобы вероятность
ошибки была минимальной?
—
Если увеличиваем
k
, то увеличивается вероятность найти нулевую
ячейку для x6∈ S, если она существует.
— Если уменьшаем k, то возрастает число нулевых ячеек.
23
3. Урны и шары
И увеличение и уменьшение числа
k
может уменьшить вероятность ошибки.
Минимизируем
f(k) := (1 −˜p)k= 1−exp−km
n!k
.
Для этого рассматриваем
g(k) = kln1−exp−km
n.
Тогда
f
(
k
) =
exp
(
g
(
k
)) является монотонно возрастающей функцией от
g
(
k
)
и достаточно минимизировать
g
(
k
). Для этого рассматриваем производную
dg
dk= ln1−exp−km
n+km
n·exp(−km/n)
1−exp(−km/n).
Если вставить k= ln 2 ·n
m, то получится
ln(1 −e−ln 2) + ln 2 ·e−ln 2
1−e−ln 2 = ln 1
2+ ln 2 ·1/2
1−1/2
= ln 1
2+ ln 2 = ln1
2·2= ln 1 = 0.
Можно проверить, что
k
в самом деле является глобальным минимумом
и что f(k)≈0.6185 n
m. Как мы видим, вероятность ложно-положительного
ответа убывает экспоненциально быстро по числу
n/m
битов на каждый
элемент в S.
Например, если взять
n
= 8
m
, то есть, 8 битов на каждый элемент из
S
,
и
k
= 5, то вероятность ложно-положительного ответа не превосходит 0
.
02
и на вопросы “
x∈S
?” мы отвечаем за константное время. Вспомним, что в
случае
k
= 1 хэш-функции нам понадобилось
n≈
50
m
для такой низкой
вероятности ошибки.
Интересные свойства фильтров Блюма. Фильтр Блюма зафиксиро-
ванного размера может хранить сколько угодно элементов. Только вероят-
ность ошибки возрастает по увеличению числа элементов.
Объединение и пересечение множеств с помощью фильтров Блюма можно
вычислить, взяв побитовое “и” или “или” массивов.
24
3.2. Приближение Пуассона
3.2. Приближение Пуассона
В анализе фильтров Блюма мы сделали упрощающее допущение о числе
нулевых ячеек массива. В дальнейшем мы будем обосновывать это до-
пущение, доказывая, что число нулевых ячеек с высокой вероятностью
сконцентрировано вокруг среднего значения.
Переведя на язык шаров и урн, допустим, что мы раскидали
m
шаров по
n
урнам. Сколько урн останутся пустыми, в среднем? С какой вероятностью
число пустых урн существенно выше или меньше среднего? Эти вопросы
явно наводят на ум применение границ Чернова к случайным величинам
Ei:= (1если урна iпустая,
0иначе.
Однако применить границы Чернова к их сумме мы не сможем, так как
Ei
зависимы друг от друга. Если мы знаем
E1
=
E2
=
···
=
En−1
= 1,
то точно
En
= 0. Вообще оценить число шаров
Xi
в урне
i
в силу зависи-
мости случайных величин друг от друга довольно сложно. Мы обойдём
эту проблему, найдя приближение случайных величин
Xi
независимыми
величинами Yiи оценив ошибку. Для любой урны i,
pr:= Pr[Xi=r] = m
r1
nr1−1
nm−r
=1
r!
m(m−1) . . . (m−r+ 1)
nr1−1
nm−r
.
То есть, величины
Xi
имеют биномиальное распределение с параметром
m
и1
/n
. Следовательно,
E
[
Xi
] =
m/n
. Если
m
и
n
очень большие по сравнению
с
r
, то второй множитель близок к (
m/n
)
r
, а третий множитель близок к
(1 −1/n)n·m/n и поэтому к e−m/n. Следовательно, в этом случае
pr≈e−m/n(m/n)r
r!,
что называется распределением Пуассона с параметром
m/n
. Мы заменим
все
Xi
на независимые величины с распределением Пуассона. При этом мы,
разумеется, оценим, какую ошибку мы при этом совершим.
25
3. Урны и шары
Определение 3.1. Случайная величина
X
с распределением Пуассона с
параметром µудовлетворяет
Pr[X=j] = e−µµj
j!для j= 0,1,2,....
Случайная величина
X
с распределением Пуассона с параметром
µ
удовле-
творяет
E
[
X
] =
µ
. То есть, параметр
µ
задаёт математическое ожидание.
Поэтому, если мы хотим моделировать процесс раскидывания
m
шаров по
n
урнам, то мы моделируем наполнение каждой урной случайной величи-
ной с распределением Пуассона с параметром
µ
=
m/n
, что совпадает со
средним числом шаров в каждой урне.
В самом деле распределение Пуассона получается из биномиального
распределения, когда мы раскидываем очень много
m
шаров по очень
многим n=cm урнам:
Утверждение 3.2. Пусть
µ
— константа,
p:N→N
,
limm→∞ mp
(
m
) =
µ
,
и
Xm
— случайная величина с биномиальным распределением с параметра-
ми mиp(m), то есть,
Pr[Xm=j] = m
jp(m)j(1 −p(m))m−j.
Тогда
lim
m→∞ Pr[Xm=j] = e−µµj
j!.
То есть, если число шаров
m
стремится к бесконечности и число урн —
n
=
cm
, то
p
(
m
) = 1
/cm
, ожидаемое число шаров в урне константа
µ
=
1
/c
, и уровень заполненности урн вполне имеет распределение Пуассона с
параметром µ.
Мы часто будем пользоваться свойством, для случайных величин
X1
и
X2
с распределением Пуассона с параметрами
µ1
и
µ2
, соответственно,
X1
+
X2
имеет распределение Пуассона с параметром µ1+µ2.
3.2.1. Ошибка в результате приближения
В следующем различаем два сценария.
Точный сценарий:
случайно раскидываем
m
шаров по
n
урнам, обозна-
чаем через Xm
iчисло шаров в урне i, и через Xm:= Pn
i=1 Xm
i.
26
3.2. Приближение Пуассона
Сценарий Пуассона:
Пусть
Ym
i
— случайная величина с распределением
Пуассона с параметром µ=m/n иYm:= Pn
i=1 Ym
i.
Мы хотим использовать
Xm
i≈Ym
i
. Однако в точном сценарии мы знаем
Xm=m, в то время как мы в сценарии Пуассона знаем только, что
E[Ym] =
n
X
i=1
E[Ym
i] = n·m
n=m,
а точного значения
Ym
мы не знаем. Интуитивно говоря, в сценарии Пуас-
сона мы могли раскидать по урнам слишком много или слишком мало
шаров. Однако под условием
Ym
=
m
распределения
Xm
i
и
Ym
i
совпадают
полностью.
Теорема 3.3. Для k1+k2+· ·· +kn=k,
Pr[(Ym
1, . . . , Y m
n) = (k1, . . . , kn)|Ym=k]
= Pr[(Xk
1, . . . , Xk
n) = (k1, . . . , kn)].
Доказательство.
Если мы раскидываем
k
шаров по
n
урнам, то есть
k1
+
k2+. . . +kn=k, то
Pr[(Xk
1, . . . , Xk
n)=(k1, . . . , kn)]
=k
kn·k−kn
kn−1·k−kn−kn−1
kn−2·. . . ·k1
k1
nk
=1
nk·k!
kn!(k−kn)! ·(k−kn)!
kn−1!(k−kn−kn−1)! ·(k−kn−kn−1)!
kn−2!(k−kn−kn−1)! ·. . . ·1
=1
nk·k!
k1!k2!···kn!.
Теперь воспользуемся тем, что
Ym
— сумма
n
независимых случайных
величин
Ym
i
с распределением Пуассона с параметром
m/n
. Значит
Ym
—
это случайная величина с распределением Пуассона с параметром
n·m/n
=
m. Поэтому
Pr[(Ym
1, . . . , Y m
n)=(k1, . . . , kn)|Ym=k]
=Pr[(Ym
1=k1)∩ · ·· ∩ (Ym
n=kn)]
Pr[Ym=k]=k!
e−mmk·
n
Y
i=1
e−m
n(m
n)ki
ki!
=k!
e−mmk·e−m(m
n)k
k1!k2!···kn!=1
nk·k!
k1!k2!···kn!.
27
3. Урны и шары
С помощью этой теоремы мы можем оценить ошибку, которую мы соверша-
ем, заменяя Xm
iна Ym
i.
Теорема 3.4. Пусть
f
(
x1, . . . , xn
)— любая неотрицательная функция,
тогда E[f(Xm
1, . . . , Xm
n)] ≤e√m·E[f(Ym
1, . . . , Y m
n)].
Доказательство.
E[f(Ym
1, . . . , Y m
n)] =
∞
X
i=0
i·Pr[f(Ym
1, . . . , Y m
n) = i]
=
∞
X
i=0
i·
∞
X
k=0
Pr[(f(Ym
1, . . . , Y m
n) = i)∩(Ym=k)]
=
∞
X
i=0
i·
∞
X
k=0
Pr[f(Ym
1, . . . , Y m
n) = i|Ym=k]·Pr[Ym=k]
=
∞
X
k=0
E[f(Ym
1, . . . , Y m
n)|Ym=k]·Pr[Ym=k]
≥E[f(Ym
1, . . . , Y m
n)|Ym=m]·Pr[Ym=m]
=E[f(Xm
1, . . . , Xm
n)] ·Pr[Ym=m]
Теперь используем, что
Ym
— сумма
n
величин с распределением Пуассона,
каждая с параметром
m/n
. То есть,
Ym
имеет распределение Пуассона с
параметром n·m/n =m. Поэтому
E[f(Ym
1, . . . , Y m
n)] ≥E[f(Xm
1, . . . , Xm
n|Ym=m)] ·mme−m
m!.
Теперь теорема следует из формулы Стирлинга, согласно которой
m
!
<
e·√m·(m/e)m.
Теорема верна для любой функции на величинах
Xm
i
, у которой конечное
математическое ожидание. Значит, если взять любое событие
E
, связанное
с величинами Xm
1, . . . , Xm
n, то она верна для функции
fE(x1, . . . , xn) = (1если Eимеет место,
0иначе.
Поскольку E[fE(x1, . . . , xn)] = Pr[fE(x1, . . . , xn)], также следует:
28
3.2. Приближение Пуассона
Следствие 3.5. Если событие
E
имеет место с вероятностью
p
в сценарии
Пуассона, то оно имеет место с вероятностью не более
p·e√m
в точном
сценарии.
Это сильный результат, так как мы теперь можем спокойно заменить
Xi
на
их приближение Yi:
—
В алгоритмах, как правило, мы хотим экспоненциально малую веро-
ятность ошибки, например 2−m.
—
Если она будет экспоненциально мала в сценарии Пуассона, то она
также будет экспоненциально мала в точном случае.
Можно также доказать более сильную оценку:
Следствие 3.6. Пусть
Pr
[
E
]монотонно возрастает или убывает по числу
m
шаров. Если событие
E
имеет вероятность
p
в случае Пуассона, то
E
имеет
вероятность не более 2·pв точном случае.
3.2.2. Пример: Анализ фильтра Блюма
При оценке вероятности ложно-положительного ответа фильтра Блюма,
мы сделали упрощающее допущение, что
˜pn
ячеек массива размера
n
—
нулевые после добавления всех
m
элементов из множества
S
к фильтру
Блюма с kхэш-функциями, где
˜p= exp(−km/n)≈1−1
nk·m=p= Pr[A[i] = 0].
Значит, в точном сценарий мы раскидываем
km
шаров по
n
урнам и в
i
-ой
урне будет Xkm
iшаров. Нужно оценить число Xпустых урн, то есть
X:=
n
X
i=1
Xi, где Xi= 1 если Xkm
i= 0 иXi= 0 иначе.
Мы знаем
E
[
X
] = (1
−
1
/n
)
km ≈˜pn
. Хотелось бы применить границы Чер-
нова для оценки вероятности существенных отклонений значения
X
от
среднего. Но этого сделать нельзя, так как
Xkm
i
зависимые. Поэтому перей-
дём к случаю Пуассона, возьмём
n
независимых случайных величин
Ykm
i
с
распределением Пуассона с параметром km/n и оценим
Y:=
n
X
i=1
Yi, где Yi= 1 если Ykm
i= 0 иYi= 0 иначе.
29
3. Урны и шары
Тогда E[Y] = n·e−mn/k =n˜p. Теперь применим (A.21),
Pr[|Y−˜pn| ≥ εn] = Pr[|Y−E[Y]| ≥ ε/˜p·E[Y]]
≤2 exp−n˜p·ε2/˜p2
3= 2 exp−nε2
3˜p.
Итого, в точном случае, мы из след. 3.5 получаем
Pr[|X−n˜p| ≥ εn]≤2˜pe√mk exp−nε2
3˜p.
Тем более, поскольку вероятность
Pr
[
Yi
= 1] убывает монотонно по возрас-
танию числа шаров, можно применить даже след. 3.6 и получить
Pr[|X−n˜p| ≥ εn]≤4 exp−nε2
3˜p.
Вероятность
˜p
в общем тоже зависит от
m
,
n
и
k
, но по любому
˜p∈
[0
,
1]
и оно только растёт по увеличению
n
. Поэтому мы можем сделать вывод,
что при достаточно больших
n
, число нулевых ячеек в фильтре Блюма с
высокой вероятностью близко к n˜p.
30
4. Вероятностный метод
Главная идея вероятностного метода заключается в том, что если случайно
выбранный объект обладает каким-то свойством с вероятностью больше
нуля, то объект с таким свойством обязан существовать.
4.1. Теорема Адельмана
Как пример применения вероятностного метода докажем одну важную
теорему из теории сложности вычислений. Она говорит о том, что в прин-
ципе любой полиномиальный рандомизированный алгоритм с константной
вероятностью ошибки можно превратить в семейство детерминированных
алгоритмов — по одному алгоритму
An
для всех входов длины
n∈N
.
В теории сложности вычислений её формулируют как BPP ⊆P/poly.
P:
класс всех задач распознавания
L⊆ {
0
,
1
}∗
, для которых ответ на
вопрос x∈Lможет быть найден за время poly(|x|).
BPP:
класс всех задач распознавания
L⊆ {
0
,
1
}∗
, для которых ответ на
вопрос
x∈L
может быть найден за время
poly
(
|x|
)с вероятностью
ошибки не более 1/3.
P/poly:
класс всех задач распознавания
L⊆ {
0
,
1
}∗
, для которых ответ
на вопрос
x∈L
может быть найден за время
poly
(
|x|
), если на входе
дополнительно даётся подсказка длины
poly
(
|x|
), зависящая только
от |x|.
По сути, BPP — это задачи, которые решаются эффективными алгоритмами
Монте Карло. В упр. B.6 мы уже видели, как сделать вероятность ошибки
экспоненциально малой.
А что касается класса P/poly, то мы можем заметить, что если бы подсказ-
ка могла зависеть от самого
x
, то было бы достаточно подсказки длины 1
для того, чтобы через неё передавать правильный ответ на вопрос
x∈L
. Но
31
4. Вероятностный метод
подсказка зависит не от самого
x
, она одна для всех входов длины
|x|
. Через
подсказку мы будем передавать такую последовательность результатов
подбрасывания монетки, которая позволяет алгоритму отвечать верно для
всех входов длины |x|.
Следующая теорема говорит о том, что вряд ли NP
⊆
BPP, так как в
таком случае NP
⊆
BPP
⊆
P/poly: тогда бы NP-трудные задачи решались
за полиномиальное время с правильной подсказкой, что влечёт схлопывание
полиномиальной иерархии.1
Теорема 4.1. BPP ⊆P/poly.
Доказательство.
Пусть
L∈
BPP. Тогда есть алгоритм Монте Карло
A
с
полиномиальной трудоёмкостью, который решает Lс константной вероят-
ностью ошибки менее не более 1
/
3. Мы докажем, что для каждого
n∈N
существует последовательность результатов подбрасывания монетки
yn
такая, что
A
, используя результаты
yn
, правильно отвечает для всех входов
длины
n
. Строка
yn
послужит подсказкой для входов длины
n
, чем и будет
доказано L∈P/poly.
Как мы показали в упр. B.6, мы без ограничения общности можем пред-
положить, что
A
на входах длины
n
работает за время
p
(
n
)для некоторого
полинома pи ошибочно отвечает с вероятностью не более 2−2n.
Через
A
(
x, y
)обозначаем результат применения алгоритма
A
к входу
x
,
когда результаты подбрасывания монеты он берёт из
y
. Тут
|y| ≤ p
(
n
), так
как больше битов алгоритм всё равно не успеет прочесть.
Итак, пусть
Xn
— событие, что
A
(
x, y
)для случайной строки
y∈ {
0
,
1
}p(n)
ошибается на хотя бы одном входе
x∈ {
0
,
1
}n
и
Yx
— событие, что он
ошибается именно на входе x. Тогда
Pr[Xn]≤X
x∈{0,1}n
Pr[Yx]≤2n·2−2n≤1/2.
То есть, существует такая строка
y∈ {
0
,
1
}p(n)
, при которой
Xn
не возникает,
то есть ответ A(x, y)правильный для всех x∈ {0,1}n.
В принципе эта теорема позволяет превратить любой полиномиальный
алгоритм Монте Карло в детерминированный алгоритм для всех вдохов,
чья длина не превышает некоторой константой. Нужно просто заложить в
1
Кто о ней слышал, хорошо. Кто не слышал, то это не критично в этом месте, просто
её схлопывание считается весьма невероятным.
32
4.2. Аргументы, основанные на математическом ожидании
алгоритм подходящие строки
yn
для входов длины
n
. При этом трудоём-
кость алгоритма не пострадает. С сожалению, мы не знаем, как построить
необходимые строки ynэффективно.
Построение искомых объектов. Мы доказали, что случайный выбран-
ный
y
подходит с вероятностью хотя бы 1
/
2. Сколько
y
мы должны случайно
перебирать, чтобы попался подходящий? Если случайный объект удовле-
творяет искомым требованиям с вероятностью
p
, то число повторений
X
удовлетворяет
Pr
[
X
=
i
] = (1
−p
)
i−1p
. Это геометрическое распределение,
то есть, E[X]=1/p. Тут две возможные проблемы.
1.
Вероятность
p
может быть экспоненциально мала, например
p
= 2
−n
.
Тогда число повторений тоже экспоненциальное.
2.
В случае теоремы Адельмана повезло, что
p
= 1
/
2. То есть, в среднем
достаточно взять два случайных
yn
. Но как мы проверим, что для
выбранного
yn
все ответы
A
(
x, yn
)на входах
x∈ {
0
,
1
}n
правильны?
Ведь перебор всех x∈ {0,1}nуже занимает 2nшагов.
Значит, доказательства, выполненные с помощью вероятностного метода,
можно превратить в эффективные (рандомизированные) алгоритмы отыска-
ния желаемых объектов, когда вероятность
p
успешного исхода достаточно
высока (убывает не быстрее полиномиального) и когда желаемое свойство
объектов эффективно проверяется.
4.2. Аргументы, основанные на
математическом ожидании
В дискретных вероятностных пространствах любая случайная величина
выполняет
Pr
[
X≥E
[
X
]]
>
0и
Pr
[
X≤E
[
X
]]
>
0. Иначе, например,
Pr
[
X≥
E[X]] = 0 влечёт
E[X] = X
i
i·Pr[X=i] = X
i<E[X]
iPr[X=i] + X
i≥E[X]
iPr[X=i]
<E[X]X
i<E[X]
Pr[X=i] = E[X].
Это значит, что любая случайная величина в самом деле может достичь
своего математического ожидания.
33
4. Вероятностный метод
4.2.1. Пример: Максимальная выполнимость
Как первый пример рассмотрим NP-трудную задачу о максимальной выпол-
нимости булевых формул в конъюнктивной нормальной форме (MaxSAT).
Вход: Булева формула в конъюнктивной нормальной форме (КНФ).
Цель: Выполнить как можно больше дизъюнктов.
При этом предположим, что нет дизъюнктов, содержащих одновременно
положительный и отрицательный литерал одной и той же переменной.
Такие дизъюнкты выполнены всегда и поэтому можно их удалить.
Задача NP-трудна для
k≥
3, но как мы сейчас увидим, всегда можно
выполнить большую часть дизъюнктов.
Теорема 4.2. Пусть
F
— формула в КНФ с
m
дизъюнктами,
ki
— чис-
ло литералов в
i
-том дизъюнкте, и
k
:=
min1≤i≤mki
. Тогда существует
означивание переменных, выполняющее хотя бы
m
X
i=1
(1 −2−ki)≥m(1 −2−k)дизъюнктов.
Доказательство. Возьмём случайное означивание переменных. Тогда
Pr[i-ый дизъюнкт выполнен] = (1 −2−ki)и
E[выполненные дизъюнкты] =
m
X
i=1
(1 −2−ki)≥m(1 −2−k).
4.2.2. Пример: Двоичное разбиение пространства
Деревья двоичного разбиения пространства (BSP-деревья) были разработа-
ны в 1969 г. учёными ВВС США [SBGS69] для применения при прорисовке
сцен в авиатренажёрах. Они приобрели большую известность только в 90-е
годы в связи с их применением в компьютерных играх Doom и Quake, но
также используются для рисовки теней, для обнаружения столкновений
и для определения видимости [BCKO08]. BSP-дерево — двоичное дерево,
в каждом узле которого хранится плоскость, все полигоны, лежащие в ней,
одно BSP-поддерево для полигонов с одной стороны плоскости, и второе
BSP-поддерево для полигонов с другой стороны (если есть).
34
4.2. Аргументы, основанные на математическом ожидании
Прорисовка сцен с помощью BSP-деревьев: достаточно взять плос-
кость в корне дерева, сначала нарисовать все полигоны с дальней стороны
плоскости от наблюдателя, потом полигоны в плоскости, потом уже все
полигоны с ближней стороны. Тогда ближние объекты будут закрывать
дальние объекты, как требуется для корректного изображения. Для быстрой
прорисовки сцены желательно, чтобы дерево было маленьким. BSP-дерево
для хранения
n
полигонов, лежащих в попарно разных плоскостях, имеет
хотя бы
n
узлов, но может понадобиться больше: может не быть разбие-
ния пространства такого, чтобы каждый полигон лежал в своей ячейке.
Тогда приходится резать полигоны на части, что увеличивает размер BSP-
дерева. Для построения маленького дерева желательно выбирать режущие
плоскости так, чтобы резать как можно меньше полигонов. Однако если
жадно искать такую прямую на каждом шаге, то это может быть дорого и
привести к разбиениям с Ω(
n2
)листьями.
2
В самом деле можно выбрать
n
полигонов так, что любое BSP-дерево для них имеет Ω(
n2
)узлов, но это
очень искусственные, далёкие от практики, примеры.
Двухмерный случай: В дальнейшем мы ограничиваемся двухмерным
пространством, как в игре Doom 1994 г.: в ней все стены стоят перпен-
дикулярно на полу. Если смотреть на такую карту “сверху”, то вместо
полигонов в пространстве мы видим отрезки на плоскости, которую нужно
разбить прямыми. Известно, что можно задать
n
отрезков так, что любое
BSP-дерево имеет Ω(
nlog n/ log log n
)листьев [T´ot03]. Мы сейчас докажем:
Теорема 4.3 ([PY90]).Для любых
n
отрезков на плоскости существует
BSP-дерево размера не более
n
+2
nln n
и дерево размера не более
n
+4
nln n
можно построить за ожидаемое время O(n2log n).
Верхняя оценка размера дерева почти совпадает с нижней оценкой. Есть
детерминированный алгоритм для построения дерева размера
O
(
nlog n
),
но на практике его деревья получаются больше, чем у рандомизированного
алгоритма [BCKO08].
На самом деле мы не будем прямо доказывать существование BSP-дерева
размера не более
n
+ 2
nln n
. Этот результат будет следовать из анализа
алгоритма с помощью вероятностного метода.
Определение 4.4. Для отрезка
s
обозначаем через
`
(
s
)прямую, содер-
жащую
s
, то есть
s⊆`
(
s
) :=
{x∈R2| ha, xi
=
c}
для некоторого векто-
2В Doom и Quake использовались разные эвристики для построения BSP-деревьев.
35
4. Вероятностный метод
ра
a∈R2
и
c∈R
(если
kak2
= 1, то
|c|
— расстояние плоскости от начала
координат). Обозначаем через
`(s)+:= {x∈R2| ha, xi> c}и
`(s)−:= {x∈R2| ha, xi< c}
точки с одной и с другой стороны прямой
`
(
s
)(дальше или ближе к началу
координат).
Для доказательства теор. 4.3 используем следующий алгоритм, по сути
двухмерный вариант алгоритма QuickSort.
Алгоритм 4.5 (2dBSP(S)).
Дано: Отрезки S={s1, . . . , sn}.
Результат: BSP-дерево для отрезков в S.
1. если n= 1 то вернуть BSP-дерево с одним листом s1.
2. иначе выбрать случайный s∗∈Sи разбить отрезки по `(s∗):
3. S+← {s∩`+(s∗)|s∈S}(куски отрезков с одной стороны)
4. S−← {s∩`−(s∗)|s∈S}(куски отрезков с другой стороны)
5. S=← {s∈S|s⊆`(s∗)}
6. вернуть BSP-дерево с корнем S=,
левым поддеревом 2dBSP(S+), и
правым поддеревом 2dBSP(S−).
Доказательство теор. 4.3.
Так как каждый узел дерева содержит хотя бы
один эксклюзивный кусок входных отрезков, размер дерева не превышает
числа порождаемых алгоритмом кусков отрезков. Когда алгоритм делит
какой-нибудь кусок, деля плоскость по какой-нибудь прямой
`
(
s∗
), число
кусков растёт на единицу. Итак, достаточно оценить ожидаемое число
делений отрезков. Для i6=j, пусть
Xij := (1,если алгоритм делит отрезок sj, деля по прямой `(si),
0,иначе.
Тогда ожидаемый размер дерева не превышает
Ehn+
n
X
i=1 X
i6=j
Xij i=n+
n
X
i=1 X
i6=j
E[Xij ] = n+
n
X
i=1 X
i6=j
Pr[Xij = 1].
36
4.2. Аргументы, основанные на математическом ожидании
Осталось оценить
Pr
[
Xij
= 1]. Допустим
Xij
= 1. Тогда в рекурсивном
вызове, в котором алгоритм выбирает
`
(
si
)для деления пространства, вход
S
содержит в том числе куски всех отрезков
Yij
:=
{si, sj1, sj2, . . . , sjk, sj}
,
пересекающихся с
`
(
si
)между
si
и
sj
. Значит, алгоритм выбирает
s∗
из
хотя бы |Yij|отрезков. Поэтому
Pr[Xij = 1] ≤1
|Yij |.
Для каждого iможет быть два j, j 0таких что |Yij |=|Yij0|, поэтому
X
i6=j
Pr[Xij = 1] ≤X
i6=j
1
|Yij |≤2
n
X
k=2
1
k≤2 ln n.
Итого, для любого входа, алг. 4.5 строит дерево ожидаемого размера
n
+ 2
nln n
. Это значит, что для любого входа такое дерево существу-
ет. Согласно неравенству Маркова (лем. 1.6), алгоритм возвращает дерево
размера хотя бы
n
+ 4
nln n
с вероятностью не более 1
/
2. Итого, согласно
утв. 1.7, мы можем просто повторять алг. 4.5 пока он не вернёт дерево
размера n+ 4nln n. Ожидаемое число повторений — два.
Осталось оценить трудоёмкость алг. 4.5. Дерево рекурсивных вызовов
изоморфно возвращаемому BSP-дереву, то есть размера
O
(
nlog n
). Так как
каждый узел обрабатывается за время
O
(
n
), общее время работы алг. 4.5
не превышает O(n2log n).
4.2.3. Дерандомизация
Аргументы, основанные на математическом ожидании, часто можно деран-
домизировать. В разд. 1.1 мы рассматривали задачу на построение мини-
мального разреза в графе. Теперь для примера рассмотрим NP-трудную
задачу о нахождения наибольшего разреза.
Теорема 4.6. Пусть
G
— граф с
m
рёбрами. Тогда
G
содержит разрез с
хотя бы m/2рёбрами.
Доказательство.
Каждую вершину
v
кладём во множество
U
или
V\U
с равной вероятностью. Для каждого ребра
e
введём событие
Xe
— что
ровно одна конечная вершина ребра
e
лежит в
U
. Тогда
Pr
[
Xe
] = 2
/
4 = 1
/
2.
37
4. Вероятностный метод
Поэтому ожидаемое число рёбер в разрезе равно
X
e∈E
Pr[Xe] = |E|
2.
Теперь выведем простой детерминированный алгоритм для нахождения
такого разреза. Для этого через
E
[
X|x1, . . . , xk
]обозначаем ожидаемый
размер разреза под условием, что вершины
x1, . . . , xk
уже разбиты по
U
и
V\U
как-нибудь. Тогда достаточно положить
xk+1
в
U
или
V\U
так, чтобы
E[X|x1, . . . , xk]≤E[X|x1, . . . , xk+1].
Ведь тогда получится
E[X] = E[X|x1]≤E[X|x1, . . . , xn],
где на последнем шаге полностью определён разрез. Введём событие
Yk+1
— что xk+1 ∈U. Заметим E[X|x1] = E[X]и
E[X|x1, . . . , xk]
=
m
X
i=0
iPr[X=i|x1, . . . , xk]
=
m
X
i=0
i(Pr[X=i∩Yk+1 |x1, . . . , xk] + Pr[X=i∩¯
Yk+1 |x1, . . . , xk])
=
m
X
i=0
i(Pr[X=i|x1, . . . , xk, Yk+1]·Pr[Yk+1 ] + Pr[X=i|x1, . . . , xk,¯
Yk+1]
·Pr[ ¯
Yk+1])
= 1/2·E[X|x1, . . . , xk, Yk+1]+1/2·E[X|x1, . . . , xk,¯
Yk+1]
≤max{E[X|x1, . . . , xk, Yk+1],E[X|x1, . . . , xk,¯
Yk+1]}.
Достаточно вычислить оба варианта и взять больший, что нас приводит
38
4.3. Случайный выбор и модификация
к главной проблеме: как вычислить E[X|x1, . . . , xk, Yk+1]?
E[X|x1, . . . , xk, Yk+1]
=X
e∈E
Pr[Xe|x1, . . . , xk, Yk+1]
=X
e∈E
1если e={xi, xj},1≤i, j ≤k+ 1,xi∈U,xj/∈U
0если e={xi, xj},1≤i, j ≤k+ 1,xi, xj∈U, или xi, xj/∈U
1/2иначе
=число разрезанных рёбер между x1, . . . , xk+1 +1
2остальных рёбер.
Аналогично вычислим
E
[
X|x1, . . . , xk,¯
Yk+1
]. Какое из значений больше —
зависит только от того, куда идёт больше рёбер из
xk+1
: в
U∩ {x1, . . . , xk}
или в
{x1, . . . , xk} \ U
? Итого, мы получили простой жадный алгоритм:
проходим по всем вершинам
x1, . . . , xn
и каждую вершину кладём в одно
из множеств
U
или
V\U
так, чтобы как можно больше её инцидентных
рёбер оказалось в разрезе. Этот алгоритм гарантированно находит разрез
мощности хотя бы |E|/2.
4.3. Случайный выбор и модификация
При применении вероятностного метода мы до сих пор случайно брали объ-
екты и надеялись, что они удовлетворяют желаемому свойству с ненулевой
вероятностью. Иногда бывает целесообразно брать случайный объект и до-
пиливать его, чтобы с ненулевой вероятностью получить желаемый объект.
Для примера рассмотрим очередную NP-трудную задачу. Требуется найти
наибольшее независимое множество в графе, то есть наибольшее множество
попарно несмежных вершин. Но мы легко можем дать нетривиальную
оценку снизу.
Теорема 4.7. Пусть
G
— граф с
n
вершинами и
m≥n/
4рёбрами. Тогда
Gсодержит независимое множество размера n2/4m.
Пример 4.8. В графе с максимальной степенью
d
выполняется
m≤nd/
2
и поэтому в нём есть независимое множество размера хотя бы
n2
4m≥n2
2nd =n
2d.
39
4. Вероятностный метод
Доказательство теор. 4.7 случайно удаляет вершины из графа, которые не
будут в итоговом независимом множестве. Проблема в том, что остаток
может не быть независимым множеством, а может содержать рёбра. Они
удаляются отдельным шагом.
Доказательство теор. 4.7.
Пусть
d
:= 2
m/n
— средняя степень в графе.
Рассматриваем следующий рандомизированный алгоритм.
1.
Каждую вершину и её инцидентные рёбра удалить с вероятностью 1
−
1
/d
.
2.
Из всех остальных рёбер, с равной вероятностью, удалить одну из конеч-
ных вершин.
Очевидно, оставшиеся вершины образуют независимое множество, так как
между ними уже нет рёбер. Оценим их количество. Пусть
X
— число
вершин, оставшихся после первого шага, и
Y
— число рёбер, оставшихся
после первого шага. Тогда E[X] = n/d и
E[Y] = m·1
d2=nd
2·1
d2=n
2d.
В конце остаётся хотя бы X−Yвершин, где
E[X−Y] = n
d−n
2d=n
2d=n2
4m.
4.4. Локальная лемма Ловаса
Рассматриваем множество нежелательных событий
E1, . . . , En
. Можно ли
их всех избежать? Разумеется, если
Prhn
[
i=1
Eii≤
n
X
i=1
Pr[Ei]<1,
то можно. Но даже если можно, то сумма может быть существенно больше
единицы, так что это очень грубое средство оценки.
Точное средство оценки получается, если
E1, . . . , En
независимы в сово-
купности, то есть,
∀I⊆ {1, . . . , n}: Prh\
i∈I
Eii=Y
i∈I
Pr[Ei].
40
4.4. Локальная лемма Ловаса
Ведь тогда ¯
Eiтоже независимы в совокупности, то есть,
∀I⊆ {1, . . . , n}: Prh\
i∈I
¯
Eii=Y
i∈I
Pr[ ¯
Ei].
Поэтому, используя правило де Моргана, мы можем избежать всех событий
тогда и только тогда, когда
Prhn
[
i=1
Eii= 1 −Prhn
\
i=1
¯
Eii<1⇐⇒ Prhn
\
i=1
¯
Eii=Y
i∈I
Pr[ ¯
Ei]>0
⇐⇒ Pr[ ¯
Ei]>0для всех i∈ {1, . . . , n}.
Локальная лемма Ловаса позволяет делать такие выводы в условиях ограни-
ченной зависимости событий друг от друга. Эта ограниченная зависимость
отражается в графе зависимостей.
Определение 4.9. Событие Eнезависимо от событий E1...,Enесли
∀I⊆ {1, . . . , n}: PrhE\
i∈I
Eii= Pr[E].
Графом зависимостей называется граф
G
= (
V, F
)на вершинах
V
:=
{
1
, . . . , n}
такой, что для каждого
i∈ {
1
, . . . , n}
, событие
Ei
независимо от
событий {Ej| {i, j}/∈F}.
Граф зависимостей неоднозначен. Например, если события независимы в
совокупности, то любой граф на этих событиях является графом зависи-
мостей. Ребро в графе позволяет событиям зависеть друг от друга, но не
обязывает их это делать. С помощью графа зависимостей можно сформули-
ровать так называемую симметричную алгоритмическую версию локальной
леммы Ловаса:
Теорема 4.10 ([MT10]).Пусть d≥1и события E1, . . . , Enтакие, что
1. для всех i∈ {1, . . . , n}: Pr[Ei]≤p,
2. граф зависимостей для E1, . . . , Enимеет максимальную степень d,
3. 4dp ≤1.
Тогда,
Pr
[
Tn
i=1 Ei
]
>
0. Тем более, если события
E1, . . . , En
определяются
конечным набором независящих друг от друга случайных величин, то
алгоритм Лас Вегас находит означивание случайных величин, избегающее
всех событий Ei, рассматривая в среднем n/d означиваний.
41
4. Вероятностный метод
4.4.1. Пример: k-SAT
Как первый пример рассматриваем следующую задачу.
Задача 4.11 (
k
-SAT).Дана формула в конъюнктивной нормальной форме,
где число литералов в каждом дизъюнкте равно
k
, требуется определить,
существует ли выполняющее означивание переменных.
Теорема 4.12. Если каждая переменная возникает в не более чем
T
:=
2k/4k
дизъюнктах, то выполняющее означивание переменных можно найти
за ожидаемо полиномиальное время.
В том числе из теоремы следует, что маленькие формулы всегда выполнимы.
Доказательство.
Рассматриваем событие
Ei
:= случайное означивание
переменных не выполняет
i
-ый дизъюнкт. Тогда
p
:=
Pr
[
Ei
] = 2
−k
. События
Ei
и
Ej
зависимы только если
i
-ый и
j
-ый дизъюнкты содержат общие
переменные. Следовательно, максимальная степень в графе зависимостей
d≤k·T=k·2k
4k= 2k−2.
Итого, 4
dp ≤
4
·
2
k−2·
2
−k
= 1. Согласно локальной лемме Ловаса, получается
Prhm
\
i=1
¯
Ei]>0
и формула выполнима.
4.4.2. Пример: Непересекающиеся пути
Как второй пример рассматриваем следующую задачу. Требуется найти
попарно непересекающиеся пути для коммуникации
n
пар узлов. Ведь
как мы видели в разд. 2.3.2, если пути в рёбрах пересекаются, это может
привезти к задержкам во время доставки сообщений по целевому адресу.
Задача 4.13. Даны
n
множеств путей
F1, F2, . . . , Fn
, такие что
|Fi|
=
m
для всех
i∈ {
1
, . . . , n}
, требуется выбрать из каждого
Fi
по одному пути
так, чтобы пути попарно не пересекались в рёбрах.
42
4.4. Локальная лемма Ловаса
Теорема 4.14. Если есть
k
такое, что для каждого
i6
=
j
, каждый путь из
Fi
пересекается не более чем с
k
путями из
Fj
, и 8
nk/m ≤
1, то за ожидаемо
полиномиальное время можно найти
n
попарно непересекающихся путей,
по одному пути из каждого Fi.
Доказательство.
Выбираем по случайному пути из каждого
Fi
. Для
i6
=
j
рассматриваем нежелательное событие
Eij
— выбранные пути из
Fi
и
Fj
пересекаются. Тогда
p:= Pr[Eij ]≤k
m.
Пусть
d
— максимальная степень графа зависимостей событий
Eij
. Так как
Eij
и
Ei0j0
независимы для
i0, j0/∈ {i, j }
, получается
d≤
2