20071118 efficientalgorithms kulikov_lecture07
TRANSCRIPT
![Page 1: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/1.jpg)
с/к “Эффективные алгоритмы”Лекция 7: Вероятностные алгоритмы
А. Куликов
Computer Science клуб при ПОМИhttp://logic.pdmi.ras.ru/∼infclub/
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 1 / 30
![Page 2: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/2.jpg)
План лекции
1 Минимальный разрез
2 Проверка простоты числа
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 2 / 30
![Page 3: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/3.jpg)
План лекции
1 Минимальный разрез
2 Проверка простоты числа
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 2 / 30
![Page 4: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/4.jpg)
План лекции
1 Минимальный разрез
2 Проверка простоты числа
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 3 / 30
![Page 5: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/5.jpg)
Минимальный разрез
ОпределениеЗадача о минимальном разрезе (min-cut problem) заключается внахождении по данному связному мультиграфу такого минимальногоколичества ребер, удаление которых делает граф несвязным.
АлгоритмRand-Min-Cut(G )
повторять, пока в G более двух вершин:I выбрать случайное ребро (u, v)I удалить все ребра между u и vI стянуть u и v в одну
вернуть количество ребер между двумя оставшимися вершинами
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 4 / 30
![Page 6: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/6.jpg)
Минимальный разрез
ОпределениеЗадача о минимальном разрезе (min-cut problem) заключается внахождении по данному связному мультиграфу такого минимальногоколичества ребер, удаление которых делает граф несвязным.
АлгоритмRand-Min-Cut(G )
повторять, пока в G более двух вершин:I выбрать случайное ребро (u, v)I удалить все ребра между u и vI стянуть u и v в одну
вернуть количество ребер между двумя оставшимися вершинами
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 4 / 30
![Page 7: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/7.jpg)
Минимальный разрез
ОпределениеЗадача о минимальном разрезе (min-cut problem) заключается внахождении по данному связному мультиграфу такого минимальногоколичества ребер, удаление которых делает граф несвязным.
АлгоритмRand-Min-Cut(G )
повторять, пока в G более двух вершин:
I выбрать случайное ребро (u, v)I удалить все ребра между u и vI стянуть u и v в одну
вернуть количество ребер между двумя оставшимися вершинами
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 4 / 30
![Page 8: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/8.jpg)
Минимальный разрез
ОпределениеЗадача о минимальном разрезе (min-cut problem) заключается внахождении по данному связному мультиграфу такого минимальногоколичества ребер, удаление которых делает граф несвязным.
АлгоритмRand-Min-Cut(G )
повторять, пока в G более двух вершин:I выбрать случайное ребро (u, v)
I удалить все ребра между u и vI стянуть u и v в одну
вернуть количество ребер между двумя оставшимися вершинами
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 4 / 30
![Page 9: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/9.jpg)
Минимальный разрез
ОпределениеЗадача о минимальном разрезе (min-cut problem) заключается внахождении по данному связному мультиграфу такого минимальногоколичества ребер, удаление которых делает граф несвязным.
АлгоритмRand-Min-Cut(G )
повторять, пока в G более двух вершин:I выбрать случайное ребро (u, v)I удалить все ребра между u и v
I стянуть u и v в одну
вернуть количество ребер между двумя оставшимися вершинами
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 4 / 30
![Page 10: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/10.jpg)
Минимальный разрез
ОпределениеЗадача о минимальном разрезе (min-cut problem) заключается внахождении по данному связному мультиграфу такого минимальногоколичества ребер, удаление которых делает граф несвязным.
АлгоритмRand-Min-Cut(G )
повторять, пока в G более двух вершин:I выбрать случайное ребро (u, v)I удалить все ребра между u и vI стянуть u и v в одну
вернуть количество ребер между двумя оставшимися вершинами
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 4 / 30
![Page 11: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/11.jpg)
Минимальный разрез
ОпределениеЗадача о минимальном разрезе (min-cut problem) заключается внахождении по данному связному мультиграфу такого минимальногоколичества ребер, удаление которых делает граф несвязным.
АлгоритмRand-Min-Cut(G )
повторять, пока в G более двух вершин:I выбрать случайное ребро (u, v)I удалить все ребра между u и vI стянуть u и v в одну
вернуть количество ребер между двумя оставшимися вершинами
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 4 / 30
![Page 12: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/12.jpg)
Пример стягивания
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 5 / 30
![Page 13: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/13.jpg)
Анализ алгоритма
Анализ алгоритма
Заметим, что стягивание не уменьшает размера минимальногоразреза: любой разрез в графе со стянутыми вершинами являетсяразрезом и в исходном графе.Если минимальный размер разреза графа G равен k , то в графеG хотя бы kn/2 ребер: степень каждой вершины хотя бы k .Пусть C — минимальный разрез графа размера k .Обозначим событие “ребро из C не было выбрано на шаге i”через Ai .Тогда Prob (алгоритм выдаст C ) = Prob (A1 ∩ A2 ∩ · · · ∩ An−2) .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 6 / 30
![Page 14: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/14.jpg)
Анализ алгоритма
Анализ алгоритмаЗаметим, что стягивание не уменьшает размера минимальногоразреза: любой разрез в графе со стянутыми вершинами являетсяразрезом и в исходном графе.
Если минимальный размер разреза графа G равен k , то в графеG хотя бы kn/2 ребер: степень каждой вершины хотя бы k .Пусть C — минимальный разрез графа размера k .Обозначим событие “ребро из C не было выбрано на шаге i”через Ai .Тогда Prob (алгоритм выдаст C ) = Prob (A1 ∩ A2 ∩ · · · ∩ An−2) .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 6 / 30
![Page 15: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/15.jpg)
Анализ алгоритма
Анализ алгоритмаЗаметим, что стягивание не уменьшает размера минимальногоразреза: любой разрез в графе со стянутыми вершинами являетсяразрезом и в исходном графе.Если минимальный размер разреза графа G равен k , то в графеG хотя бы kn/2 ребер: степень каждой вершины хотя бы k .
Пусть C — минимальный разрез графа размера k .Обозначим событие “ребро из C не было выбрано на шаге i”через Ai .Тогда Prob (алгоритм выдаст C ) = Prob (A1 ∩ A2 ∩ · · · ∩ An−2) .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 6 / 30
![Page 16: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/16.jpg)
Анализ алгоритма
Анализ алгоритмаЗаметим, что стягивание не уменьшает размера минимальногоразреза: любой разрез в графе со стянутыми вершинами являетсяразрезом и в исходном графе.Если минимальный размер разреза графа G равен k , то в графеG хотя бы kn/2 ребер: степень каждой вершины хотя бы k .Пусть C — минимальный разрез графа размера k .
Обозначим событие “ребро из C не было выбрано на шаге i”через Ai .Тогда Prob (алгоритм выдаст C ) = Prob (A1 ∩ A2 ∩ · · · ∩ An−2) .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 6 / 30
![Page 17: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/17.jpg)
Анализ алгоритма
Анализ алгоритмаЗаметим, что стягивание не уменьшает размера минимальногоразреза: любой разрез в графе со стянутыми вершинами являетсяразрезом и в исходном графе.Если минимальный размер разреза графа G равен k , то в графеG хотя бы kn/2 ребер: степень каждой вершины хотя бы k .Пусть C — минимальный разрез графа размера k .Обозначим событие “ребро из C не было выбрано на шаге i”через Ai .
Тогда Prob (алгоритм выдаст C ) = Prob (A1 ∩ A2 ∩ · · · ∩ An−2) .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 6 / 30
![Page 18: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/18.jpg)
Анализ алгоритма
Анализ алгоритмаЗаметим, что стягивание не уменьшает размера минимальногоразреза: любой разрез в графе со стянутыми вершинами являетсяразрезом и в исходном графе.Если минимальный размер разреза графа G равен k , то в графеG хотя бы kn/2 ребер: степень каждой вершины хотя бы k .Пусть C — минимальный разрез графа размера k .Обозначим событие “ребро из C не было выбрано на шаге i”через Ai .Тогда Prob (алгоритм выдаст C ) = Prob (A1 ∩ A2 ∩ · · · ∩ An−2) .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 6 / 30
![Page 19: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/19.jpg)
Анализ алгоритма (продолжение)
Анализ алгоритма
Prob (A1) ≥ 1− |C ||E | ≥ 1− k
kn/2 = 1− 2n
После первого шага остается n − 1 вершин и хотя бы k(n − 1)/2ребер.Prob (A2|A1) ≥ 1− 2
n−1
На i-ом шаге в графе есть n − (i − 1) вершин, размерминимального разреза хотя бы k , поэтому ребер в графе хотя быk(n − i + 1)/2.
Prob
⎛⎝Ai
i−1⋂j=1
Aj
⎞⎠ ≥ 1− 2n − i + 1
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 7 / 30
![Page 20: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/20.jpg)
Анализ алгоритма (продолжение)
Анализ алгоритма
Prob (A1) ≥ 1− |C ||E | ≥ 1− k
kn/2 = 1− 2n
После первого шага остается n − 1 вершин и хотя бы k(n − 1)/2ребер.Prob (A2|A1) ≥ 1− 2
n−1
На i-ом шаге в графе есть n − (i − 1) вершин, размерминимального разреза хотя бы k , поэтому ребер в графе хотя быk(n − i + 1)/2.
Prob
⎛⎝Ai
i−1⋂j=1
Aj
⎞⎠ ≥ 1− 2n − i + 1
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 7 / 30
![Page 21: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/21.jpg)
Анализ алгоритма (продолжение)
Анализ алгоритма
Prob (A1) ≥ 1− |C ||E | ≥ 1− k
kn/2 = 1− 2n
После первого шага остается n − 1 вершин и хотя бы k(n − 1)/2ребер.
Prob (A2|A1) ≥ 1− 2n−1
На i-ом шаге в графе есть n − (i − 1) вершин, размерминимального разреза хотя бы k , поэтому ребер в графе хотя быk(n − i + 1)/2.
Prob
⎛⎝Ai
i−1⋂j=1
Aj
⎞⎠ ≥ 1− 2n − i + 1
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 7 / 30
![Page 22: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/22.jpg)
Анализ алгоритма (продолжение)
Анализ алгоритма
Prob (A1) ≥ 1− |C ||E | ≥ 1− k
kn/2 = 1− 2n
После первого шага остается n − 1 вершин и хотя бы k(n − 1)/2ребер.Prob (A2|A1) ≥ 1− 2
n−1
На i-ом шаге в графе есть n − (i − 1) вершин, размерминимального разреза хотя бы k , поэтому ребер в графе хотя быk(n − i + 1)/2.
Prob
⎛⎝Ai
i−1⋂j=1
Aj
⎞⎠ ≥ 1− 2n − i + 1
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 7 / 30
![Page 23: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/23.jpg)
Анализ алгоритма (продолжение)
Анализ алгоритма
Prob (A1) ≥ 1− |C ||E | ≥ 1− k
kn/2 = 1− 2n
После первого шага остается n − 1 вершин и хотя бы k(n − 1)/2ребер.Prob (A2|A1) ≥ 1− 2
n−1
На i-ом шаге в графе есть n − (i − 1) вершин, размерминимального разреза хотя бы k , поэтому ребер в графе хотя быk(n − i + 1)/2.
Prob
⎛⎝Ai
i−1⋂j=1
Aj
⎞⎠ ≥ 1− 2n − i + 1
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 7 / 30
![Page 24: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/24.jpg)
Анализ алгоритма (продолжение)
Анализ алгоритма
Prob (A1) ≥ 1− |C ||E | ≥ 1− k
kn/2 = 1− 2n
После первого шага остается n − 1 вершин и хотя бы k(n − 1)/2ребер.Prob (A2|A1) ≥ 1− 2
n−1
На i-ом шаге в графе есть n − (i − 1) вершин, размерминимального разреза хотя бы k , поэтому ребер в графе хотя быk(n − i + 1)/2.
Prob
⎛⎝Ai
i−1⋂j=1
Aj
⎞⎠ ≥ 1− 2n − i + 1
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 7 / 30
![Page 25: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/25.jpg)
Анализ алгоритма (продолжение)
Анализ алгоритма
Prob
⎛⎝n−2⋂j=1
Aj
⎞⎠ = Prob (A1)·Prob (A2|A1)·. . .·Prob
⎛⎝An−2|n−3⋂j=1
Aj
⎞⎠Итак, алгоритм выдает разрез C с вероятностью хотя бы
n−2∏i=1
(1− 2
n − i + 1
)=
2n(n − 1)
.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 8 / 30
![Page 26: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/26.jpg)
Анализ алгоритма (продолжение)
Анализ алгоритма
Prob
⎛⎝n−2⋂j=1
Aj
⎞⎠ = Prob (A1)·Prob (A2|A1)·. . .·Prob
⎛⎝An−2|n−3⋂j=1
Aj
⎞⎠
Итак, алгоритм выдает разрез C с вероятностью хотя бы
n−2∏i=1
(1− 2
n − i + 1
)=
2n(n − 1)
.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 8 / 30
![Page 27: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/27.jpg)
Анализ алгоритма (продолжение)
Анализ алгоритма
Prob
⎛⎝n−2⋂j=1
Aj
⎞⎠ = Prob (A1)·Prob (A2|A1)·. . .·Prob
⎛⎝An−2|n−3⋂j=1
Aj
⎞⎠Итак, алгоритм выдает разрез C с вероятностью хотя бы
n−2∏i=1
(1− 2
n − i + 1
)=
2n(n − 1)
.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 8 / 30
![Page 28: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/28.jpg)
Анализ алгоритма (продолжение)
ЛеммаАлгоритм Rand-Min-Cut выдает каждое минимальное сечениеграфа с вероятностью хотя бы 2
n(n−1) . Время работы алгоритма —O(n2).
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 9 / 30
![Page 29: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/29.jpg)
Улучшение алгоритма
Улучшение алгоритма
Таким образом, чтобы получить константную вероятностьошибки, придется запустить этот алгоритм O(n2) раз, чтоприведет ко времени работы O(n4).Как можно улучшить алгоритм?Как мы уже видели, на i-ом шаге алгоритм не выбирает ребро иззафиксированного покрытия с вероятностью 1− 2
n−i+1 .С увеличением i данная вероятность убывает.Идея: будем стягивать вершины, только пока соответствующаявероятность достаточно хороша.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 10 / 30
![Page 30: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/30.jpg)
Улучшение алгоритма
Улучшение алгоритмаТаким образом, чтобы получить константную вероятностьошибки, придется запустить этот алгоритм O(n2) раз, чтоприведет ко времени работы O(n4).
Как можно улучшить алгоритм?Как мы уже видели, на i-ом шаге алгоритм не выбирает ребро иззафиксированного покрытия с вероятностью 1− 2
n−i+1 .С увеличением i данная вероятность убывает.Идея: будем стягивать вершины, только пока соответствующаявероятность достаточно хороша.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 10 / 30
![Page 31: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/31.jpg)
Улучшение алгоритма
Улучшение алгоритмаТаким образом, чтобы получить константную вероятностьошибки, придется запустить этот алгоритм O(n2) раз, чтоприведет ко времени работы O(n4).Как можно улучшить алгоритм?
Как мы уже видели, на i-ом шаге алгоритм не выбирает ребро иззафиксированного покрытия с вероятностью 1− 2
n−i+1 .С увеличением i данная вероятность убывает.Идея: будем стягивать вершины, только пока соответствующаявероятность достаточно хороша.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 10 / 30
![Page 32: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/32.jpg)
Улучшение алгоритма
Улучшение алгоритмаТаким образом, чтобы получить константную вероятностьошибки, придется запустить этот алгоритм O(n2) раз, чтоприведет ко времени работы O(n4).Как можно улучшить алгоритм?Как мы уже видели, на i-ом шаге алгоритм не выбирает ребро иззафиксированного покрытия с вероятностью 1− 2
n−i+1 .
С увеличением i данная вероятность убывает.Идея: будем стягивать вершины, только пока соответствующаявероятность достаточно хороша.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 10 / 30
![Page 33: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/33.jpg)
Улучшение алгоритма
Улучшение алгоритмаТаким образом, чтобы получить константную вероятностьошибки, придется запустить этот алгоритм O(n2) раз, чтоприведет ко времени работы O(n4).Как можно улучшить алгоритм?Как мы уже видели, на i-ом шаге алгоритм не выбирает ребро иззафиксированного покрытия с вероятностью 1− 2
n−i+1 .С увеличением i данная вероятность убывает.
Идея: будем стягивать вершины, только пока соответствующаявероятность достаточно хороша.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 10 / 30
![Page 34: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/34.jpg)
Улучшение алгоритма
Улучшение алгоритмаТаким образом, чтобы получить константную вероятностьошибки, придется запустить этот алгоритм O(n2) раз, чтоприведет ко времени работы O(n4).Как можно улучшить алгоритм?Как мы уже видели, на i-ом шаге алгоритм не выбирает ребро иззафиксированного покрытия с вероятностью 1− 2
n−i+1 .С увеличением i данная вероятность убывает.Идея: будем стягивать вершины, только пока соответствующаявероятность достаточно хороша.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 10 / 30
![Page 35: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/35.jpg)
Улучшенный алгоритм
АлгоритмImproved-Rand-Min-Cut(G )
t = n/√
2стягиванием случайных ребер получить два графа H1 и H2 на tвершинахk1 = Improved-Rand-Min-Cut(H1)
k2 = Improved-Rand-Min-Cut(H2)
вернуть min{k1, k2}
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 11 / 30
![Page 36: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/36.jpg)
Улучшенный алгоритм
АлгоритмImproved-Rand-Min-Cut(G )
t = n/√
2
стягиванием случайных ребер получить два графа H1 и H2 на tвершинахk1 = Improved-Rand-Min-Cut(H1)
k2 = Improved-Rand-Min-Cut(H2)
вернуть min{k1, k2}
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 11 / 30
![Page 37: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/37.jpg)
Улучшенный алгоритм
АлгоритмImproved-Rand-Min-Cut(G )
t = n/√
2стягиванием случайных ребер получить два графа H1 и H2 на tвершинах
k1 = Improved-Rand-Min-Cut(H1)
k2 = Improved-Rand-Min-Cut(H2)
вернуть min{k1, k2}
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 11 / 30
![Page 38: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/38.jpg)
Улучшенный алгоритм
АлгоритмImproved-Rand-Min-Cut(G )
t = n/√
2стягиванием случайных ребер получить два графа H1 и H2 на tвершинахk1 = Improved-Rand-Min-Cut(H1)
k2 = Improved-Rand-Min-Cut(H2)
вернуть min{k1, k2}
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 11 / 30
![Page 39: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/39.jpg)
Улучшенный алгоритм
АлгоритмImproved-Rand-Min-Cut(G )
t = n/√
2стягиванием случайных ребер получить два графа H1 и H2 на tвершинахk1 = Improved-Rand-Min-Cut(H1)
k2 = Improved-Rand-Min-Cut(H2)
вернуть min{k1, k2}
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 11 / 30
![Page 40: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/40.jpg)
Улучшенный алгоритм
АлгоритмImproved-Rand-Min-Cut(G )
t = n/√
2стягиванием случайных ребер получить два графа H1 и H2 на tвершинахk1 = Improved-Rand-Min-Cut(H1)
k2 = Improved-Rand-Min-Cut(H2)
вернуть min{k1, k2}
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 11 / 30
![Page 41: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/41.jpg)
Анализ времени работы
ЛеммаВремя работы алгоритма Improved-Rand-Min-Cut — O(n2 log n).
Доказательство
T (n) = 2T(
n√2
)+ O(n2)
T (n) = O(n2 log n)
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 12 / 30
![Page 42: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/42.jpg)
Анализ времени работы
ЛеммаВремя работы алгоритма Improved-Rand-Min-Cut — O(n2 log n).
Доказательство
T (n) = 2T(
n√2
)+ O(n2)
T (n) = O(n2 log n)
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 12 / 30
![Page 43: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/43.jpg)
Анализ времени работы
ЛеммаВремя работы алгоритма Improved-Rand-Min-Cut — O(n2 log n).
Доказательство
T (n) = 2T(
n√2
)+ O(n2)
T (n) = O(n2 log n)
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 12 / 30
![Page 44: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/44.jpg)
Анализ времени работы
ЛеммаВремя работы алгоритма Improved-Rand-Min-Cut — O(n2 log n).
Доказательство
T (n) = 2T(
n√2
)+ O(n2)
T (n) = O(n2 log n)
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 12 / 30
![Page 45: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/45.jpg)
Оценка вероятности ошибкиЛеммаАлгоритм Improved-Rand-Min-Cut выдает минимальный разрезграфа с вероятностью Ω(1/ log n).
ДоказательствоДопустим, разрез размера k все еще существует в графе H на tвершинах.Алгоритм вернет этот разрез, если для какого-то из двух графовH1 и H2 ни одно ребро этого разреза не будет стянуто исоответствующий рекурсивный вызов вернет именно этот разрез.При стягивании t вершин в t/
√2 вероятность того, что ни одно
ребро разреза стянуто не будет, хотя бы
t/√
2(t/√
2− 1)t(t − 1)
≥ 12.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 13 / 30
![Page 46: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/46.jpg)
Оценка вероятности ошибкиЛеммаАлгоритм Improved-Rand-Min-Cut выдает минимальный разрезграфа с вероятностью Ω(1/ log n).
Доказательство
Допустим, разрез размера k все еще существует в графе H на tвершинах.Алгоритм вернет этот разрез, если для какого-то из двух графовH1 и H2 ни одно ребро этого разреза не будет стянуто исоответствующий рекурсивный вызов вернет именно этот разрез.При стягивании t вершин в t/
√2 вероятность того, что ни одно
ребро разреза стянуто не будет, хотя бы
t/√
2(t/√
2− 1)t(t − 1)
≥ 12.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 13 / 30
![Page 47: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/47.jpg)
Оценка вероятности ошибкиЛеммаАлгоритм Improved-Rand-Min-Cut выдает минимальный разрезграфа с вероятностью Ω(1/ log n).
ДоказательствоДопустим, разрез размера k все еще существует в графе H на tвершинах.
Алгоритм вернет этот разрез, если для какого-то из двух графовH1 и H2 ни одно ребро этого разреза не будет стянуто исоответствующий рекурсивный вызов вернет именно этот разрез.При стягивании t вершин в t/
√2 вероятность того, что ни одно
ребро разреза стянуто не будет, хотя бы
t/√
2(t/√
2− 1)t(t − 1)
≥ 12.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 13 / 30
![Page 48: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/48.jpg)
Оценка вероятности ошибкиЛеммаАлгоритм Improved-Rand-Min-Cut выдает минимальный разрезграфа с вероятностью Ω(1/ log n).
ДоказательствоДопустим, разрез размера k все еще существует в графе H на tвершинах.Алгоритм вернет этот разрез, если для какого-то из двух графовH1 и H2 ни одно ребро этого разреза не будет стянуто исоответствующий рекурсивный вызов вернет именно этот разрез.
При стягивании t вершин в t/√
2 вероятность того, что ни одноребро разреза стянуто не будет, хотя бы
t/√
2(t/√
2− 1)t(t − 1)
≥ 12.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 13 / 30
![Page 49: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/49.jpg)
Оценка вероятности ошибкиЛеммаАлгоритм Improved-Rand-Min-Cut выдает минимальный разрезграфа с вероятностью Ω(1/ log n).
ДоказательствоДопустим, разрез размера k все еще существует в графе H на tвершинах.Алгоритм вернет этот разрез, если для какого-то из двух графовH1 и H2 ни одно ребро этого разреза не будет стянуто исоответствующий рекурсивный вызов вернет именно этот разрез.При стягивании t вершин в t/
√2 вероятность того, что ни одно
ребро разреза стянуто не будет, хотя бы
t/√
2(t/√
2− 1)t(t − 1)
≥ 12.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 13 / 30
![Page 50: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/50.jpg)
Доказательство (продолжение)
Доказательство
Обозначим через P(t) вероятность того, что алгоритм находитминимальный разрез графа на t вершинах.
P(t) ≥ 1−(
1− 12P
(t√2
))2
Нетрудно проверить, что P(t) = Θ(1t ) является решением.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 14 / 30
![Page 51: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/51.jpg)
Доказательство (продолжение)
ДоказательствоОбозначим через P(t) вероятность того, что алгоритм находитминимальный разрез графа на t вершинах.
P(t) ≥ 1−(
1− 12P
(t√2
))2
Нетрудно проверить, что P(t) = Θ(1t ) является решением.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 14 / 30
![Page 52: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/52.jpg)
Доказательство (продолжение)
ДоказательствоОбозначим через P(t) вероятность того, что алгоритм находитминимальный разрез графа на t вершинах.
P(t) ≥ 1−(
1− 12P
(t√2
))2
Нетрудно проверить, что P(t) = Θ(1t ) является решением.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 14 / 30
![Page 53: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/53.jpg)
Доказательство (продолжение)
ДоказательствоОбозначим через P(t) вероятность того, что алгоритм находитминимальный разрез графа на t вершинах.
P(t) ≥ 1−(
1− 12P
(t√2
))2
Нетрудно проверить, что P(t) = Θ(1t ) является решением.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 14 / 30
![Page 54: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/54.jpg)
План лекции
1 Минимальный разрез
2 Проверка простоты числа
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 15 / 30
![Page 55: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/55.jpg)
Проверка простоты числа
Проверка простоты числа
Как найти большое простое число?Можно, например, выбрать случайное число n и проверить,является ли оно простым.Но как эффективно проверять?Можно перебрать все возможные делители от 2 до
√n, но это
займет экспоненицальное время от размера входа:√
n = 2log2 n/2.Мы предъявим полиномиальный вероятностный алгоритм.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 16 / 30
![Page 56: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/56.jpg)
Проверка простоты числа
Проверка простоты числаКак найти большое простое число?
Можно, например, выбрать случайное число n и проверить,является ли оно простым.Но как эффективно проверять?Можно перебрать все возможные делители от 2 до
√n, но это
займет экспоненицальное время от размера входа:√
n = 2log2 n/2.Мы предъявим полиномиальный вероятностный алгоритм.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 16 / 30
![Page 57: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/57.jpg)
Проверка простоты числа
Проверка простоты числаКак найти большое простое число?Можно, например, выбрать случайное число n и проверить,является ли оно простым.
Но как эффективно проверять?Можно перебрать все возможные делители от 2 до
√n, но это
займет экспоненицальное время от размера входа:√
n = 2log2 n/2.Мы предъявим полиномиальный вероятностный алгоритм.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 16 / 30
![Page 58: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/58.jpg)
Проверка простоты числа
Проверка простоты числаКак найти большое простое число?Можно, например, выбрать случайное число n и проверить,является ли оно простым.Но как эффективно проверять?
Можно перебрать все возможные делители от 2 до√
n, но этозаймет экспоненицальное время от размера входа:
√n = 2log2 n/2.
Мы предъявим полиномиальный вероятностный алгоритм.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 16 / 30
![Page 59: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/59.jpg)
Проверка простоты числа
Проверка простоты числаКак найти большое простое число?Можно, например, выбрать случайное число n и проверить,является ли оно простым.Но как эффективно проверять?Можно перебрать все возможные делители от 2 до
√n, но это
займет экспоненицальное время от размера входа:√
n = 2log2 n/2.
Мы предъявим полиномиальный вероятностный алгоритм.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 16 / 30
![Page 60: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/60.jpg)
Проверка простоты числа
Проверка простоты числаКак найти большое простое число?Можно, например, выбрать случайное число n и проверить,является ли оно простым.Но как эффективно проверять?Можно перебрать все возможные делители от 2 до
√n, но это
займет экспоненицальное время от размера входа:√
n = 2log2 n/2.Мы предъявим полиномиальный вероятностный алгоритм.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 16 / 30
![Page 61: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/61.jpg)
Факты
Факты
Известен детерминированный полиномиальный алгоритмпроверки числа на простоту.Однако нет ни одного известного полиномиального алгоритмаразложения числа на множители.Самое больше известное (на данный момент) простое число:
33 661 · 27 031 232 + 1.
В его десятичной записи 2 116 617 цифр.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 17 / 30
![Page 62: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/62.jpg)
Факты
ФактыИзвестен детерминированный полиномиальный алгоритмпроверки числа на простоту.
Однако нет ни одного известного полиномиального алгоритмаразложения числа на множители.Самое больше известное (на данный момент) простое число:
33 661 · 27 031 232 + 1.
В его десятичной записи 2 116 617 цифр.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 17 / 30
![Page 63: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/63.jpg)
Факты
ФактыИзвестен детерминированный полиномиальный алгоритмпроверки числа на простоту.Однако нет ни одного известного полиномиального алгоритмаразложения числа на множители.
Самое больше известное (на данный момент) простое число:
33 661 · 27 031 232 + 1.
В его десятичной записи 2 116 617 цифр.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 17 / 30
![Page 64: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/64.jpg)
Факты
ФактыИзвестен детерминированный полиномиальный алгоритмпроверки числа на простоту.Однако нет ни одного известного полиномиального алгоритмаразложения числа на множители.Самое больше известное (на данный момент) простое число:
33 661 · 27 031 232 + 1.
В его десятичной записи 2 116 617 цифр.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 17 / 30
![Page 65: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/65.jpg)
Факты
ФактыИзвестен детерминированный полиномиальный алгоритмпроверки числа на простоту.Однако нет ни одного известного полиномиального алгоритмаразложения числа на множители.Самое больше известное (на данный момент) простое число:
33 661 · 27 031 232 + 1.
В его десятичной записи 2 116 617 цифр.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 17 / 30
![Page 66: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/66.jpg)
Малая теорема ФермаОпределение
Z+n = {1, 2, . . . , n − 1} — множество всех ненулевых вычетов
(остатков) по модулю n.Z*n — множество остатков, взаимно простых с n (для простого nZ+
n = Z*n).
ТеоремаЕсли p ∈ P и (a, p) = 1, то
ap−1 ≡ 1 mod .
ОпределениеЧисло n называется псевдопростым по основанию a (base-apseudoprime), если an−1 ≡ 1 mod n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 18 / 30
![Page 67: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/67.jpg)
Малая теорема ФермаОпределение
Z+n = {1, 2, . . . , n − 1} — множество всех ненулевых вычетов
(остатков) по модулю n.
Z*n — множество остатков, взаимно простых с n (для простого nZ+
n = Z*n).
ТеоремаЕсли p ∈ P и (a, p) = 1, то
ap−1 ≡ 1 mod .
ОпределениеЧисло n называется псевдопростым по основанию a (base-apseudoprime), если an−1 ≡ 1 mod n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 18 / 30
![Page 68: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/68.jpg)
Малая теорема ФермаОпределение
Z+n = {1, 2, . . . , n − 1} — множество всех ненулевых вычетов
(остатков) по модулю n.Z*n — множество остатков, взаимно простых с n (для простого nZ+
n = Z*n).
ТеоремаЕсли p ∈ P и (a, p) = 1, то
ap−1 ≡ 1 mod .
ОпределениеЧисло n называется псевдопростым по основанию a (base-apseudoprime), если an−1 ≡ 1 mod n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 18 / 30
![Page 69: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/69.jpg)
Малая теорема ФермаОпределение
Z+n = {1, 2, . . . , n − 1} — множество всех ненулевых вычетов
(остатков) по модулю n.Z*n — множество остатков, взаимно простых с n (для простого nZ+
n = Z*n).
ТеоремаЕсли p ∈ P и (a, p) = 1, то
ap−1 ≡ 1 mod .
ОпределениеЧисло n называется псевдопростым по основанию a (base-apseudoprime), если an−1 ≡ 1 mod n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 18 / 30
![Page 70: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/70.jpg)
Малая теорема ФермаОпределение
Z+n = {1, 2, . . . , n − 1} — множество всех ненулевых вычетов
(остатков) по модулю n.Z*n — множество остатков, взаимно простых с n (для простого nZ+
n = Z*n).
ТеоремаЕсли p ∈ P и (a, p) = 1, то
ap−1 ≡ 1 mod .
ОпределениеЧисло n называется псевдопростым по основанию a (base-apseudoprime), если an−1 ≡ 1 mod n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 18 / 30
![Page 71: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/71.jpg)
Простой тест
Простой тестPseudoprime(n)
если 2n−1 ≡ 1 mod n, вернуть “составное”вернуть “простое”
АнализСуществуют составные числа, которые данный тест не распознает.Таких чисел довольно мало, но все же.Можно проверять другие основания, но и это не поможет:существуют числа n, псевдопростые по любому основанию a ∈ Z*n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 19 / 30
![Page 72: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/72.jpg)
Простой тест
Простой тестPseudoprime(n)
если 2n−1 ≡ 1 mod n, вернуть “составное”
вернуть “простое”
АнализСуществуют составные числа, которые данный тест не распознает.Таких чисел довольно мало, но все же.Можно проверять другие основания, но и это не поможет:существуют числа n, псевдопростые по любому основанию a ∈ Z*n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 19 / 30
![Page 73: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/73.jpg)
Простой тест
Простой тестPseudoprime(n)
если 2n−1 ≡ 1 mod n, вернуть “составное”вернуть “простое”
АнализСуществуют составные числа, которые данный тест не распознает.Таких чисел довольно мало, но все же.Можно проверять другие основания, но и это не поможет:существуют числа n, псевдопростые по любому основанию a ∈ Z*n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 19 / 30
![Page 74: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/74.jpg)
Простой тест
Простой тестPseudoprime(n)
если 2n−1 ≡ 1 mod n, вернуть “составное”вернуть “простое”
Анализ
Существуют составные числа, которые данный тест не распознает.Таких чисел довольно мало, но все же.Можно проверять другие основания, но и это не поможет:существуют числа n, псевдопростые по любому основанию a ∈ Z*n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 19 / 30
![Page 75: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/75.jpg)
Простой тест
Простой тестPseudoprime(n)
если 2n−1 ≡ 1 mod n, вернуть “составное”вернуть “простое”
АнализСуществуют составные числа, которые данный тест не распознает.
Таких чисел довольно мало, но все же.Можно проверять другие основания, но и это не поможет:существуют числа n, псевдопростые по любому основанию a ∈ Z*n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 19 / 30
![Page 76: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/76.jpg)
Простой тест
Простой тестPseudoprime(n)
если 2n−1 ≡ 1 mod n, вернуть “составное”вернуть “простое”
АнализСуществуют составные числа, которые данный тест не распознает.Таких чисел довольно мало, но все же.
Можно проверять другие основания, но и это не поможет:существуют числа n, псевдопростые по любому основанию a ∈ Z*n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 19 / 30
![Page 77: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/77.jpg)
Простой тест
Простой тестPseudoprime(n)
если 2n−1 ≡ 1 mod n, вернуть “составное”вернуть “простое”
АнализСуществуют составные числа, которые данный тест не распознает.Таких чисел довольно мало, но все же.Можно проверять другие основания, но и это не поможет:существуют числа n, псевдопростые по любому основанию a ∈ Z*n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 19 / 30
![Page 78: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/78.jpg)
Улучшение теста
Улучшение теста
Будем проверять несколько оснований.Вычисляя an−1, будем проверять, не нашлось ли такого x ≤ n, чтоx2 ≡ 1 mod n:
I если x2 ≡ 1 mod n, то (x − 1)(x + 1)...n, тогда если n ∈ P, то x
равен 1 или n − 1.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 20 / 30
![Page 79: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/79.jpg)
Улучшение теста
Улучшение тестаБудем проверять несколько оснований.
Вычисляя an−1, будем проверять, не нашлось ли такого x ≤ n, чтоx2 ≡ 1 mod n:
I если x2 ≡ 1 mod n, то (x − 1)(x + 1)...n, тогда если n ∈ P, то x
равен 1 или n − 1.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 20 / 30
![Page 80: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/80.jpg)
Улучшение теста
Улучшение тестаБудем проверять несколько оснований.Вычисляя an−1, будем проверять, не нашлось ли такого x ≤ n, чтоx2 ≡ 1 mod n:
I если x2 ≡ 1 mod n, то (x − 1)(x + 1)...n, тогда если n ∈ P, то x
равен 1 или n − 1.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 20 / 30
![Page 81: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/81.jpg)
Улучшение теста
Улучшение тестаБудем проверять несколько оснований.Вычисляя an−1, будем проверять, не нашлось ли такого x ≤ n, чтоx2 ≡ 1 mod n:
I если x2 ≡ 1 mod n, то (x − 1)(x + 1)...n, тогда если n ∈ P, то x
равен 1 или n − 1.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 20 / 30
![Page 82: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/82.jpg)
Возведение в степень с прокеркой
Возведение в степень с проверкойWitness(a, n)
пусть ⟨bk , bk−1, . . . , b0⟩ — двоичная запись n − 1d = 1для i от k до 0 повторять:
I x = dI d = d2 mod nI если d = 1 и x = 1 и x = n − 1, вернуть “составное”I если bi = 1, d = (d · a) mod n
если d = 1, вернуть “составное”вернуть “простое”
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 21 / 30
![Page 83: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/83.jpg)
Возведение в степень с прокеркой
Возведение в степень с проверкойWitness(a, n)
пусть ⟨bk , bk−1, . . . , b0⟩ — двоичная запись n − 1
d = 1для i от k до 0 повторять:
I x = dI d = d2 mod nI если d = 1 и x = 1 и x = n − 1, вернуть “составное”I если bi = 1, d = (d · a) mod n
если d = 1, вернуть “составное”вернуть “простое”
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 21 / 30
![Page 84: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/84.jpg)
Возведение в степень с прокеркой
Возведение в степень с проверкойWitness(a, n)
пусть ⟨bk , bk−1, . . . , b0⟩ — двоичная запись n − 1d = 1
для i от k до 0 повторять:I x = dI d = d2 mod nI если d = 1 и x = 1 и x = n − 1, вернуть “составное”I если bi = 1, d = (d · a) mod n
если d = 1, вернуть “составное”вернуть “простое”
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 21 / 30
![Page 85: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/85.jpg)
Возведение в степень с прокеркой
Возведение в степень с проверкойWitness(a, n)
пусть ⟨bk , bk−1, . . . , b0⟩ — двоичная запись n − 1d = 1для i от k до 0 повторять:
I x = dI d = d2 mod nI если d = 1 и x = 1 и x = n − 1, вернуть “составное”I если bi = 1, d = (d · a) mod n
если d = 1, вернуть “составное”вернуть “простое”
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 21 / 30
![Page 86: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/86.jpg)
Возведение в степень с прокеркой
Возведение в степень с проверкойWitness(a, n)
пусть ⟨bk , bk−1, . . . , b0⟩ — двоичная запись n − 1d = 1для i от k до 0 повторять:
I x = d
I d = d2 mod nI если d = 1 и x = 1 и x = n − 1, вернуть “составное”I если bi = 1, d = (d · a) mod n
если d = 1, вернуть “составное”вернуть “простое”
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 21 / 30
![Page 87: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/87.jpg)
Возведение в степень с прокеркой
Возведение в степень с проверкойWitness(a, n)
пусть ⟨bk , bk−1, . . . , b0⟩ — двоичная запись n − 1d = 1для i от k до 0 повторять:
I x = dI d = d2 mod n
I если d = 1 и x = 1 и x = n − 1, вернуть “составное”I если bi = 1, d = (d · a) mod n
если d = 1, вернуть “составное”вернуть “простое”
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 21 / 30
![Page 88: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/88.jpg)
Возведение в степень с прокеркой
Возведение в степень с проверкойWitness(a, n)
пусть ⟨bk , bk−1, . . . , b0⟩ — двоичная запись n − 1d = 1для i от k до 0 повторять:
I x = dI d = d2 mod nI если d = 1 и x = 1 и x = n − 1, вернуть “составное”
I если bi = 1, d = (d · a) mod n
если d = 1, вернуть “составное”вернуть “простое”
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 21 / 30
![Page 89: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/89.jpg)
Возведение в степень с прокеркой
Возведение в степень с проверкойWitness(a, n)
пусть ⟨bk , bk−1, . . . , b0⟩ — двоичная запись n − 1d = 1для i от k до 0 повторять:
I x = dI d = d2 mod nI если d = 1 и x = 1 и x = n − 1, вернуть “составное”I если bi = 1, d = (d · a) mod n
если d = 1, вернуть “составное”вернуть “простое”
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 21 / 30
![Page 90: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/90.jpg)
Возведение в степень с прокеркой
Возведение в степень с проверкойWitness(a, n)
пусть ⟨bk , bk−1, . . . , b0⟩ — двоичная запись n − 1d = 1для i от k до 0 повторять:
I x = dI d = d2 mod nI если d = 1 и x = 1 и x = n − 1, вернуть “составное”I если bi = 1, d = (d · a) mod n
если d = 1, вернуть “составное”
вернуть “простое”
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 21 / 30
![Page 91: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/91.jpg)
Возведение в степень с прокеркой
Возведение в степень с проверкойWitness(a, n)
пусть ⟨bk , bk−1, . . . , b0⟩ — двоичная запись n − 1d = 1для i от k до 0 повторять:
I x = dI d = d2 mod nI если d = 1 и x = 1 и x = n − 1, вернуть “составное”I если bi = 1, d = (d · a) mod n
если d = 1, вернуть “составное”вернуть “простое”
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 21 / 30
![Page 92: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/92.jpg)
Алгоритм
АлгоритмPrime(n, s)
повторить s разI выбрать случайное основание a от 1 до n − 1I если Witness(a, n) вернул “составное”, вернуть “составное”
вернуть “простое”
Время работы алгоритмаВозведение в степень требует log n операций.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 22 / 30
![Page 93: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/93.jpg)
Алгоритм
АлгоритмPrime(n, s)
повторить s раз
I выбрать случайное основание a от 1 до n − 1I если Witness(a, n) вернул “составное”, вернуть “составное”
вернуть “простое”
Время работы алгоритмаВозведение в степень требует log n операций.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 22 / 30
![Page 94: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/94.jpg)
Алгоритм
АлгоритмPrime(n, s)
повторить s разI выбрать случайное основание a от 1 до n − 1
I если Witness(a, n) вернул “составное”, вернуть “составное”
вернуть “простое”
Время работы алгоритмаВозведение в степень требует log n операций.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 22 / 30
![Page 95: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/95.jpg)
Алгоритм
АлгоритмPrime(n, s)
повторить s разI выбрать случайное основание a от 1 до n − 1I если Witness(a, n) вернул “составное”, вернуть “составное”
вернуть “простое”
Время работы алгоритмаВозведение в степень требует log n операций.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 22 / 30
![Page 96: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/96.jpg)
Алгоритм
АлгоритмPrime(n, s)
повторить s разI выбрать случайное основание a от 1 до n − 1I если Witness(a, n) вернул “составное”, вернуть “составное”
вернуть “простое”
Время работы алгоритмаВозведение в степень требует log n операций.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 22 / 30
![Page 97: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/97.jpg)
Алгоритм
АлгоритмPrime(n, s)
повторить s разI выбрать случайное основание a от 1 до n − 1I если Witness(a, n) вернул “составное”, вернуть “составное”
вернуть “простое”
Время работы алгоритмаВозведение в степень требует log n операций.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 22 / 30
![Page 98: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/98.jpg)
Основная теорема
ТеоремаДля нечетного составного числа n
|{a ∈ Z+n : Witness(a, n) = “составное”}| ≥ n − 1
2.
Идея доказательства
Назовем основание a ∈ Z+n плохим, если
Witness(a, n) = “простое”.Поскольку для плохого a выполнено an−1 ≡ 1 mod n, все плохиеэлементы лежат в Z*n.Мы хотим показать, что плохих оснований меньше половины.Для этого покажем, что все плохие элементы образуютсобственную подгруппу Z*n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 23 / 30
![Page 99: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/99.jpg)
Основная теорема
ТеоремаДля нечетного составного числа n
|{a ∈ Z+n : Witness(a, n) = “составное”}| ≥ n − 1
2.
Идея доказательстваНазовем основание a ∈ Z+
n плохим, еслиWitness(a, n) = “простое”.
Поскольку для плохого a выполнено an−1 ≡ 1 mod n, все плохиеэлементы лежат в Z*n.Мы хотим показать, что плохих оснований меньше половины.Для этого покажем, что все плохие элементы образуютсобственную подгруппу Z*n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 23 / 30
![Page 100: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/100.jpg)
Основная теорема
ТеоремаДля нечетного составного числа n
|{a ∈ Z+n : Witness(a, n) = “составное”}| ≥ n − 1
2.
Идея доказательстваНазовем основание a ∈ Z+
n плохим, еслиWitness(a, n) = “простое”.Поскольку для плохого a выполнено an−1 ≡ 1 mod n, все плохиеэлементы лежат в Z*n.
Мы хотим показать, что плохих оснований меньше половины.Для этого покажем, что все плохие элементы образуютсобственную подгруппу Z*n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 23 / 30
![Page 101: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/101.jpg)
Основная теорема
ТеоремаДля нечетного составного числа n
|{a ∈ Z+n : Witness(a, n) = “составное”}| ≥ n − 1
2.
Идея доказательстваНазовем основание a ∈ Z+
n плохим, еслиWitness(a, n) = “простое”.Поскольку для плохого a выполнено an−1 ≡ 1 mod n, все плохиеэлементы лежат в Z*n.Мы хотим показать, что плохих оснований меньше половины.
Для этого покажем, что все плохие элементы образуютсобственную подгруппу Z*n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 23 / 30
![Page 102: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/102.jpg)
Основная теорема
ТеоремаДля нечетного составного числа n
|{a ∈ Z+n : Witness(a, n) = “составное”}| ≥ n − 1
2.
Идея доказательстваНазовем основание a ∈ Z+
n плохим, еслиWitness(a, n) = “простое”.Поскольку для плохого a выполнено an−1 ≡ 1 mod n, все плохиеэлементы лежат в Z*n.Мы хотим показать, что плохих оснований меньше половины.Для этого покажем, что все плохие элементы образуютсобственную подгруппу Z*n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 23 / 30
![Page 103: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/103.jpg)
Простой случай
Простой случай
Предположим, существует x ∈ Z*n, такой что xn−1 ≡ 1 mod n.Рассмотрим тогда B = {b ∈ Z*n : bn−1 ≡ 1 mod n}.Ясно, что B является собственной подгруппой.Таким образом, в дальнейшем предполагаем, что для всех x ∈ Z*n
xn−1 ≡ 1 mod n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 24 / 30
![Page 104: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/104.jpg)
Простой случай
Простой случайПредположим, существует x ∈ Z*n, такой что xn−1 ≡ 1 mod n.
Рассмотрим тогда B = {b ∈ Z*n : bn−1 ≡ 1 mod n}.Ясно, что B является собственной подгруппой.Таким образом, в дальнейшем предполагаем, что для всех x ∈ Z*n
xn−1 ≡ 1 mod n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 24 / 30
![Page 105: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/105.jpg)
Простой случай
Простой случайПредположим, существует x ∈ Z*n, такой что xn−1 ≡ 1 mod n.Рассмотрим тогда B = {b ∈ Z*n : bn−1 ≡ 1 mod n}.
Ясно, что B является собственной подгруппой.Таким образом, в дальнейшем предполагаем, что для всех x ∈ Z*n
xn−1 ≡ 1 mod n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 24 / 30
![Page 106: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/106.jpg)
Простой случай
Простой случайПредположим, существует x ∈ Z*n, такой что xn−1 ≡ 1 mod n.Рассмотрим тогда B = {b ∈ Z*n : bn−1 ≡ 1 mod n}.Ясно, что B является собственной подгруппой.
Таким образом, в дальнейшем предполагаем, что для всех x ∈ Z*n
xn−1 ≡ 1 mod n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 24 / 30
![Page 107: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/107.jpg)
Простой случай
Простой случайПредположим, существует x ∈ Z*n, такой что xn−1 ≡ 1 mod n.Рассмотрим тогда B = {b ∈ Z*n : bn−1 ≡ 1 mod n}.Ясно, что B является собственной подгруппой.Таким образом, в дальнейшем предполагаем, что для всех x ∈ Z*n
xn−1 ≡ 1 mod n.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 24 / 30
![Page 108: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/108.jpg)
Еще один простой случай
Еще один простой случай
Предположим, n = pe .Тогда группа Z*n является циклической, то есть существуетэлемент g , для которого ordn(g) = |Z*n| = 𝜙(n) = (p − 1)pe−1.Тогда из gn−1 ≡ 1 mod n следует n − 1 ≡ 0 mod 𝜙(n), но
n − 1 ...p.
Итак, n представимо в виде произведения двух взаимно простыхчисел n1, n2 > 1.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 25 / 30
![Page 109: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/109.jpg)
Еще один простой случай
Еще один простой случайПредположим, n = pe .
Тогда группа Z*n является циклической, то есть существуетэлемент g , для которого ordn(g) = |Z*n| = 𝜙(n) = (p − 1)pe−1.Тогда из gn−1 ≡ 1 mod n следует n − 1 ≡ 0 mod 𝜙(n), но
n − 1 ...p.
Итак, n представимо в виде произведения двух взаимно простыхчисел n1, n2 > 1.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 25 / 30
![Page 110: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/110.jpg)
Еще один простой случай
Еще один простой случайПредположим, n = pe .Тогда группа Z*n является циклической, то есть существуетэлемент g , для которого ordn(g) = |Z*n| = 𝜙(n) = (p − 1)pe−1.
Тогда из gn−1 ≡ 1 mod n следует n − 1 ≡ 0 mod 𝜙(n), но
n − 1 ...p.
Итак, n представимо в виде произведения двух взаимно простыхчисел n1, n2 > 1.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 25 / 30
![Page 111: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/111.jpg)
Еще один простой случай
Еще один простой случайПредположим, n = pe .Тогда группа Z*n является циклической, то есть существуетэлемент g , для которого ordn(g) = |Z*n| = 𝜙(n) = (p − 1)pe−1.Тогда из gn−1 ≡ 1 mod n следует n − 1 ≡ 0 mod 𝜙(n), но
n − 1 ...p.
Итак, n представимо в виде произведения двух взаимно простыхчисел n1, n2 > 1.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 25 / 30
![Page 112: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/112.jpg)
Еще один простой случай
Еще один простой случайПредположим, n = pe .Тогда группа Z*n является циклической, то есть существуетэлемент g , для которого ordn(g) = |Z*n| = 𝜙(n) = (p − 1)pe−1.Тогда из gn−1 ≡ 1 mod n следует n − 1 ≡ 0 mod 𝜙(n), но
n − 1 ...p.
Итак, n представимо в виде произведения двух взаимно простыхчисел n1, n2 > 1.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 25 / 30
![Page 113: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/113.jpg)
Основной случай
Основной случай
Представим число n − 1 как 2tu, где u нечетно.Для каждого a ∈ Z+
n рассмотрим последовательность вычетов помодулю n
a = ⟨au, a2u, a22u, . . . , a2tu⟩.
Все эти элементы (кроме первого) важны тем, что они будутпроверены процедурой Witness.Рассмотрим максимальное j , для которого существует такойэлемент v ∈ Z*n, что v2ju ≡ −1 mod n (такое j существует,поскольку (−1)u ≡ −1 mod n).
Пусть B = {x ∈ Z*n : x2ju ≡ ±1 mod n}.Ясно, что это подгруппа. Покажем, что в ней лежат все плохиеэлементы.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 26 / 30
![Page 114: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/114.jpg)
Основной случай
Основной случайПредставим число n − 1 как 2tu, где u нечетно.
Для каждого a ∈ Z+n рассмотрим последовательность вычетов по
модулю na = ⟨au, a2u, a22u, . . . , a2tu⟩.
Все эти элементы (кроме первого) важны тем, что они будутпроверены процедурой Witness.Рассмотрим максимальное j , для которого существует такойэлемент v ∈ Z*n, что v2ju ≡ −1 mod n (такое j существует,поскольку (−1)u ≡ −1 mod n).
Пусть B = {x ∈ Z*n : x2ju ≡ ±1 mod n}.Ясно, что это подгруппа. Покажем, что в ней лежат все плохиеэлементы.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 26 / 30
![Page 115: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/115.jpg)
Основной случай
Основной случайПредставим число n − 1 как 2tu, где u нечетно.Для каждого a ∈ Z+
n рассмотрим последовательность вычетов помодулю n
a = ⟨au, a2u, a22u, . . . , a2tu⟩.
Все эти элементы (кроме первого) важны тем, что они будутпроверены процедурой Witness.Рассмотрим максимальное j , для которого существует такойэлемент v ∈ Z*n, что v2ju ≡ −1 mod n (такое j существует,поскольку (−1)u ≡ −1 mod n).
Пусть B = {x ∈ Z*n : x2ju ≡ ±1 mod n}.Ясно, что это подгруппа. Покажем, что в ней лежат все плохиеэлементы.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 26 / 30
![Page 116: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/116.jpg)
Основной случай
Основной случайПредставим число n − 1 как 2tu, где u нечетно.Для каждого a ∈ Z+
n рассмотрим последовательность вычетов помодулю n
a = ⟨au, a2u, a22u, . . . , a2tu⟩.
Все эти элементы (кроме первого) важны тем, что они будутпроверены процедурой Witness.
Рассмотрим максимальное j , для которого существует такойэлемент v ∈ Z*n, что v2ju ≡ −1 mod n (такое j существует,поскольку (−1)u ≡ −1 mod n).
Пусть B = {x ∈ Z*n : x2ju ≡ ±1 mod n}.Ясно, что это подгруппа. Покажем, что в ней лежат все плохиеэлементы.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 26 / 30
![Page 117: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/117.jpg)
Основной случай
Основной случайПредставим число n − 1 как 2tu, где u нечетно.Для каждого a ∈ Z+
n рассмотрим последовательность вычетов помодулю n
a = ⟨au, a2u, a22u, . . . , a2tu⟩.
Все эти элементы (кроме первого) важны тем, что они будутпроверены процедурой Witness.Рассмотрим максимальное j , для которого существует такойэлемент v ∈ Z*n, что v2ju ≡ −1 mod n (такое j существует,поскольку (−1)u ≡ −1 mod n).
Пусть B = {x ∈ Z*n : x2ju ≡ ±1 mod n}.Ясно, что это подгруппа. Покажем, что в ней лежат все плохиеэлементы.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 26 / 30
![Page 118: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/118.jpg)
Основной случай
Основной случайПредставим число n − 1 как 2tu, где u нечетно.Для каждого a ∈ Z+
n рассмотрим последовательность вычетов помодулю n
a = ⟨au, a2u, a22u, . . . , a2tu⟩.
Все эти элементы (кроме первого) важны тем, что они будутпроверены процедурой Witness.Рассмотрим максимальное j , для которого существует такойэлемент v ∈ Z*n, что v2ju ≡ −1 mod n (такое j существует,поскольку (−1)u ≡ −1 mod n).
Пусть B = {x ∈ Z*n : x2ju ≡ ±1 mod n}.
Ясно, что это подгруппа. Покажем, что в ней лежат все плохиеэлементы.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 26 / 30
![Page 119: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/119.jpg)
Основной случай
Основной случайПредставим число n − 1 как 2tu, где u нечетно.Для каждого a ∈ Z+
n рассмотрим последовательность вычетов помодулю n
a = ⟨au, a2u, a22u, . . . , a2tu⟩.
Все эти элементы (кроме первого) важны тем, что они будутпроверены процедурой Witness.Рассмотрим максимальное j , для которого существует такойэлемент v ∈ Z*n, что v2ju ≡ −1 mod n (такое j существует,поскольку (−1)u ≡ −1 mod n).
Пусть B = {x ∈ Z*n : x2ju ≡ ±1 mod n}.Ясно, что это подгруппа. Покажем, что в ней лежат все плохиеэлементы.
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 26 / 30
![Page 120: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/120.jpg)
Основной случай (продолжение)
Основной случай
Рассмотрим последовательность a плохого элемента a.На последнем месте в ней стоит обязательно 1. Напредпоследнем — либо −1, либо 1 (иначе был бы обнаруженнетривиальный корень из единицы).Причем −1 не может стоять правее позиции j .Значит, на j-м месте стоит 1 или −1, то есть a ∈ B .Теперь осталось показать, что B — собственная подгруппа, тоесть найти элемент Z*n, не содержащийся в B .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 27 / 30
![Page 121: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/121.jpg)
Основной случай (продолжение)
Основной случайРассмотрим последовательность a плохого элемента a.
На последнем месте в ней стоит обязательно 1. Напредпоследнем — либо −1, либо 1 (иначе был бы обнаруженнетривиальный корень из единицы).Причем −1 не может стоять правее позиции j .Значит, на j-м месте стоит 1 или −1, то есть a ∈ B .Теперь осталось показать, что B — собственная подгруппа, тоесть найти элемент Z*n, не содержащийся в B .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 27 / 30
![Page 122: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/122.jpg)
Основной случай (продолжение)
Основной случайРассмотрим последовательность a плохого элемента a.На последнем месте в ней стоит обязательно 1. Напредпоследнем — либо −1, либо 1 (иначе был бы обнаруженнетривиальный корень из единицы).
Причем −1 не может стоять правее позиции j .Значит, на j-м месте стоит 1 или −1, то есть a ∈ B .Теперь осталось показать, что B — собственная подгруппа, тоесть найти элемент Z*n, не содержащийся в B .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 27 / 30
![Page 123: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/123.jpg)
Основной случай (продолжение)
Основной случайРассмотрим последовательность a плохого элемента a.На последнем месте в ней стоит обязательно 1. Напредпоследнем — либо −1, либо 1 (иначе был бы обнаруженнетривиальный корень из единицы).Причем −1 не может стоять правее позиции j .
Значит, на j-м месте стоит 1 или −1, то есть a ∈ B .Теперь осталось показать, что B — собственная подгруппа, тоесть найти элемент Z*n, не содержащийся в B .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 27 / 30
![Page 124: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/124.jpg)
Основной случай (продолжение)
Основной случайРассмотрим последовательность a плохого элемента a.На последнем месте в ней стоит обязательно 1. Напредпоследнем — либо −1, либо 1 (иначе был бы обнаруженнетривиальный корень из единицы).Причем −1 не может стоять правее позиции j .Значит, на j-м месте стоит 1 или −1, то есть a ∈ B .
Теперь осталось показать, что B — собственная подгруппа, тоесть найти элемент Z*n, не содержащийся в B .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 27 / 30
![Page 125: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/125.jpg)
Основной случай (продолжение)
Основной случайРассмотрим последовательность a плохого элемента a.На последнем месте в ней стоит обязательно 1. Напредпоследнем — либо −1, либо 1 (иначе был бы обнаруженнетривиальный корень из единицы).Причем −1 не может стоять правее позиции j .Значит, на j-м месте стоит 1 или −1, то есть a ∈ B .Теперь осталось показать, что B — собственная подгруппа, тоесть найти элемент Z*n, не содержащийся в B .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 27 / 30
![Page 126: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/126.jpg)
Завершение доказательства
Завершение доказательства
Возьмем элемент v , для которого v2ju ≡ −1 mod n.Тогда и v2ju ≡ −1 mod n1 (поскольку n = n1n2 и (n1, n2) = 1).Существует элемент w , для которого w ≡ v mod n1 и w ≡ 1mod n2.Тогда w2ju ≡ −1 mod n1 и w2ju ≡ 1 mod n2.Но тогда w2ju ≡ ±1 mod n.Поскольку (w , n1) = 1 и (w , n2) = 1, то (w , n) = 1. Следовательно,w ∈ Z*n, но w ∈ B .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 28 / 30
![Page 127: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/127.jpg)
Завершение доказательства
Завершение доказательства
Возьмем элемент v , для которого v2ju ≡ −1 mod n.
Тогда и v2ju ≡ −1 mod n1 (поскольку n = n1n2 и (n1, n2) = 1).Существует элемент w , для которого w ≡ v mod n1 и w ≡ 1mod n2.Тогда w2ju ≡ −1 mod n1 и w2ju ≡ 1 mod n2.Но тогда w2ju ≡ ±1 mod n.Поскольку (w , n1) = 1 и (w , n2) = 1, то (w , n) = 1. Следовательно,w ∈ Z*n, но w ∈ B .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 28 / 30
![Page 128: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/128.jpg)
Завершение доказательства
Завершение доказательства
Возьмем элемент v , для которого v2ju ≡ −1 mod n.Тогда и v2ju ≡ −1 mod n1 (поскольку n = n1n2 и (n1, n2) = 1).
Существует элемент w , для которого w ≡ v mod n1 и w ≡ 1mod n2.Тогда w2ju ≡ −1 mod n1 и w2ju ≡ 1 mod n2.Но тогда w2ju ≡ ±1 mod n.Поскольку (w , n1) = 1 и (w , n2) = 1, то (w , n) = 1. Следовательно,w ∈ Z*n, но w ∈ B .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 28 / 30
![Page 129: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/129.jpg)
Завершение доказательства
Завершение доказательства
Возьмем элемент v , для которого v2ju ≡ −1 mod n.Тогда и v2ju ≡ −1 mod n1 (поскольку n = n1n2 и (n1, n2) = 1).Существует элемент w , для которого w ≡ v mod n1 и w ≡ 1mod n2.
Тогда w2ju ≡ −1 mod n1 и w2ju ≡ 1 mod n2.Но тогда w2ju ≡ ±1 mod n.Поскольку (w , n1) = 1 и (w , n2) = 1, то (w , n) = 1. Следовательно,w ∈ Z*n, но w ∈ B .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 28 / 30
![Page 130: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/130.jpg)
Завершение доказательства
Завершение доказательства
Возьмем элемент v , для которого v2ju ≡ −1 mod n.Тогда и v2ju ≡ −1 mod n1 (поскольку n = n1n2 и (n1, n2) = 1).Существует элемент w , для которого w ≡ v mod n1 и w ≡ 1mod n2.Тогда w2ju ≡ −1 mod n1 и w2ju ≡ 1 mod n2.
Но тогда w2ju ≡ ±1 mod n.Поскольку (w , n1) = 1 и (w , n2) = 1, то (w , n) = 1. Следовательно,w ∈ Z*n, но w ∈ B .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 28 / 30
![Page 131: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/131.jpg)
Завершение доказательства
Завершение доказательства
Возьмем элемент v , для которого v2ju ≡ −1 mod n.Тогда и v2ju ≡ −1 mod n1 (поскольку n = n1n2 и (n1, n2) = 1).Существует элемент w , для которого w ≡ v mod n1 и w ≡ 1mod n2.Тогда w2ju ≡ −1 mod n1 и w2ju ≡ 1 mod n2.Но тогда w2ju ≡ ±1 mod n.
Поскольку (w , n1) = 1 и (w , n2) = 1, то (w , n) = 1. Следовательно,w ∈ Z*n, но w ∈ B .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 28 / 30
![Page 132: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/132.jpg)
Завершение доказательства
Завершение доказательства
Возьмем элемент v , для которого v2ju ≡ −1 mod n.Тогда и v2ju ≡ −1 mod n1 (поскольку n = n1n2 и (n1, n2) = 1).Существует элемент w , для которого w ≡ v mod n1 и w ≡ 1mod n2.Тогда w2ju ≡ −1 mod n1 и w2ju ≡ 1 mod n2.Но тогда w2ju ≡ ±1 mod n.Поскольку (w , n1) = 1 и (w , n2) = 1, то (w , n) = 1. Следовательно,w ∈ Z*n, но w ∈ B .
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 28 / 30
![Page 133: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/133.jpg)
Что мы узнали за сегодня?
Что мы узнали за сегодня?
минимальный разрез выбирать случайное ребро и стягивать его ввершину
проверка простоты числа выбирать случайный вычет и проверять, неявляеся ли он свидетелем того, что число составное
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 29 / 30
![Page 134: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/134.jpg)
Что мы узнали за сегодня?
Что мы узнали за сегодня?минимальный разрез выбирать случайное ребро и стягивать его в
вершину
проверка простоты числа выбирать случайный вычет и проверять, неявляеся ли он свидетелем того, что число составное
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 29 / 30
![Page 135: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/135.jpg)
Что мы узнали за сегодня?
Что мы узнали за сегодня?минимальный разрез выбирать случайное ребро и стягивать его в
вершинупроверка простоты числа выбирать случайный вычет и проверять, не
являеся ли он свидетелем того, что число составное
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 29 / 30
![Page 136: 20071118 efficientalgorithms kulikov_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022060202/559c44531a28abdd0b8b464d/html5/thumbnails/136.jpg)
Спасибо за внимание!
А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 30 / 30