# конспект · шаг 9 из 9
Конспект: Монте-Карло, Лас-Вегас и рандомизированный quicksort
Понятия
Алгоритм Лас-Вегас - ответ всегда верен, случайно время. Алгоритм Монте-Карло - время ограничено, ответ верен с заданной вероятностью; ошибка односторонняя, если один из ответов достоверен.
Метод Монте-Карло - оценка величины как доли случайных проб, попавших в цель.
Зерно - начальное состояние генератора псевдослучайных чисел; период - длина цикла генератора.
Разрез графа - разбиение вершин на две части; размер - число рёбер между ними. Стягивание ребра - склейка его концов в одну вершину с сохранением параллельных рёбер.
Вероятностный метод - доказательство существования объекта через ожидание по случайному выбору.
Что унести
ЛАС-ВЕГАС МОНТЕ-КАРЛО
случайно время правильность
гарантия ожидаемое время на любом входе вероятность ошибки на любом входе
примеры quicksort, быстрый выбор, Миллер-Рабин, Фрейвалдс, Каргер,
декартово дерево, список с Рабин-Карп без перепроверки,
пропусками, Рабин-Карп с проверкой оценка по выборке
Лас-Вегас → Монте-Карло: оборвать на 2T отказ ≤ 1/2; k попыток - ≤ 1/2ᵏ
Монте-Карло → Лас-Вегас: повторять до проверки (запуск + проверка) / p; нужна дешёвая проверка
ОЦЕНКА ВЫБОРКОЙ: ошибка ~ 1/√n π по 40 000 точек: 3,1403, гарантия ±0,027 с надёжностью 95%
редкая цель: доля p с точностью 10% требует порядка 100/p проб
ГЕНЕРАТОР x = (a·x + c) mod m
одно зерно - одна последовательность 5, 3, 16: период 16; 4, 2, 16: застревает на 10
random - вихрь Мерсенна, период 2¹⁹⁹³⁷ − 1 для ключей и токенов - secrets
остаток от деления перекашивает 8 значений mod 3: 3, 3, 2
честно - отбор: взять биты, лишнее выбросить randrange и randint так и делают
ТАСОВАНИЕ ФИШЕРА-ЙЕТСА НАИВНОЕ (j из всех n)
для i от n − 1 вниз до 1: путей nⁿ, перестановок n!, не делится
j = случайное от 0 до i n = 3: 27 путей, порядки получают 4, 5, 5, 5, 4, 4
поменять a[i] и a[j]
путей n!, каждой перестановке - один j от 0 до i − 1: только циклы, (n − 1)! штук
32-битное зерно: не больше 2³² раскладов из 52! ≈ 8·10⁶⁷
БЫСТРАЯ СОРТИРОВКА, СЛУЧАЙНЫЙ ОПОРНЫЙ, РАЗНЫЕ ЭЛЕМЕНТЫ
zᵢ и zⱼ сравниваются ⇔ первым опорным из zᵢ … zⱼ стал zᵢ или zⱼ P = 2 / (j − i + 1)
E[сравнений] = 2(n + 1)Hₙ − 4n ≈ 1,39 · n · log₂ n σ ≈ 0,65 · n
n = 500: формула 4806, пять запусков 4574 … 5091; нижняя граница log₂ 500! = 3767
без монетки на отсортированных 250: 31 125 = n(n − 1)/2, с монеткой ≈ 2063
одинаковые элементы: квадрат и с монеткой → разбиение на три части
ПРОВЕРИТЬ, НЕ ВЫЧИСЛЯЯ ЦЕНА ОШИБКА «РАВНО»
A·B = C ? сравнить A·(B·r) и C·r, r из 0/1 3n² ≤ 1/2 за проверку, ≤ 1/2ᵏ за k
F = G ? сравнить в случайной точке mod p d ≤ d / p, p простое
ответ «не равно» достоверен всегда; точка и вектор выбираются ПОСЛЕ того, как дан ответ
испорченный элемент c[3][7]: 22 пропуска из 40; ошибка x³ − x не видна в 0, 1 и −1
АЛГОРИТМ КАРГЕРА
пока вершин больше двух: стянуть равновероятно выбранное ребро
P(данный минимальный разрез уцелел) ≥ (1 − 2/n)(1 − 2/(n−1)) … (1 − 2/3) = 2 / (n(n − 1))
n(n − 1) · ln n прогонов, взять наименьший: промах ≤ 1/n²
два клубка по 4 вершины: один прогон прав в 16% случаев, чаще всего выдаёт 3 вместо 2
следствие: минимальных разрезов не больше n(n − 1)/2 Каргер-Штайн: O(n² log³ n)
СРЕДНЕЕ КАК ДОВОД
вероятностный метод E[X] = μ ⇒ есть объект с X ≥ μ разрез ≥ m/2 в любом графе
условные ожидания ставь вершину напротив большинства тот же m/2 без монеток; 66 из 100
принцип Яо плохое распределение входов для всех одна единица из n: (n + 1)/2 проб
детерминированных ⇒ предел для всех и с монетками
рандомизированных
Ловушки джокера
Принял ответ Монте-Карло за истину. «Простое» после двух раундов - это до 6% ошибки.
Поставил цикл «пока не повезёт» на путь с пределом времени. Среднее время не ограничивает один вызов.
Перезапустил с тем же зерном. Повторы обязаны бросать новые монетки.
Взял остаток от деления. При n в три миллиарда нижние 1,3 миллиарда значений выпадают вдвое чаще.
Перемешал сортировкой со случайным сравнением. Распределение зависит от алгоритма сортировки.
Засеял генератор временем. 86,4 миллиона миллисекунд в сутках перебираются за секунды.
Забыл про одинаковые ключи. Столбец с пятью значениями сортируется за квадрат и с монеткой.
Проверил в «удобной» точке. Ошибку можно спрятать в любой точке, известной заранее.
Склеил случайную пару вершин или убрал параллельные рёбра. Оценка 2/n получена для
равновероятного выбора ребра с учётом кратности.
Сделал вывод «почти любой объект подойдёт». Ожидание даёт существование, а не типичность.
Проверь себя
Чем платит алгоритм Лас-Вегас и чем - Монте-Карло? Почему наивное тасование не может быть равномерным?
Когда два элемента сравниваются в быстрой сортировке? Откуда 1/2 в проверке Фрейвалдса? Почему
минимальный разрез трудно задеть случайным ребром? Что доказывает вероятностный метод и чего он не даёт?
Комментарии
Пока нет комментариев. Будь первым!
Оставить комментарий