136
с/к “Эффективные алгоритмы” Лекция 7: Вероятностные алгоритмы А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/infclub/ А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 1 / 30

20071118 efficientalgorithms kulikov_lecture07

Embed Size (px)

Citation preview

Page 1: 20071118 efficientalgorithms kulikov_lecture07

с/к “Эффективные алгоритмы”Лекция 7: Вероятностные алгоритмы

А. Куликов

Computer Science клуб при ПОМИhttp://logic.pdmi.ras.ru/∼infclub/

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 1 / 30

Page 2: 20071118 efficientalgorithms kulikov_lecture07

План лекции

1 Минимальный разрез

2 Проверка простоты числа

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 2 / 30

Page 3: 20071118 efficientalgorithms kulikov_lecture07

План лекции

1 Минимальный разрез

2 Проверка простоты числа

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 2 / 30

Page 4: 20071118 efficientalgorithms kulikov_lecture07

План лекции

1 Минимальный разрез

2 Проверка простоты числа

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 3 / 30

Page 5: 20071118 efficientalgorithms kulikov_lecture07

Минимальный разрез

ОпределениеЗадача о минимальном разрезе (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

Минимальный разрез

ОпределениеЗадача о минимальном разрезе (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

Минимальный разрез

ОпределениеЗадача о минимальном разрезе (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

Минимальный разрез

ОпределениеЗадача о минимальном разрезе (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

Минимальный разрез

ОпределениеЗадача о минимальном разрезе (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

Минимальный разрез

ОпределениеЗадача о минимальном разрезе (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

Минимальный разрез

ОпределениеЗадача о минимальном разрезе (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

Пример стягивания

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 5 / 30

Page 13: 20071118 efficientalgorithms kulikov_lecture07

Анализ алгоритма

Анализ алгоритма

Заметим, что стягивание не уменьшает размера минимальногоразреза: любой разрез в графе со стянутыми вершинами являетсяразрезом и в исходном графе.Если минимальный размер разреза графа 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

Анализ алгоритма

Анализ алгоритмаЗаметим, что стягивание не уменьшает размера минимальногоразреза: любой разрез в графе со стянутыми вершинами являетсяразрезом и в исходном графе.

Если минимальный размер разреза графа 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

Анализ алгоритма

Анализ алгоритмаЗаметим, что стягивание не уменьшает размера минимальногоразреза: любой разрез в графе со стянутыми вершинами являетсяразрезом и в исходном графе.Если минимальный размер разреза графа 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

Анализ алгоритма

Анализ алгоритмаЗаметим, что стягивание не уменьшает размера минимальногоразреза: любой разрез в графе со стянутыми вершинами являетсяразрезом и в исходном графе.Если минимальный размер разреза графа 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

Анализ алгоритма

Анализ алгоритмаЗаметим, что стягивание не уменьшает размера минимальногоразреза: любой разрез в графе со стянутыми вершинами являетсяразрезом и в исходном графе.Если минимальный размер разреза графа 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

Анализ алгоритма

Анализ алгоритмаЗаметим, что стягивание не уменьшает размера минимальногоразреза: любой разрез в графе со стянутыми вершинами являетсяразрезом и в исходном графе.Если минимальный размер разреза графа 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

Анализ алгоритма (продолжение)

Анализ алгоритма

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

Анализ алгоритма (продолжение)

Анализ алгоритма

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

Анализ алгоритма (продолжение)

Анализ алгоритма

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

Анализ алгоритма (продолжение)

Анализ алгоритма

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

Анализ алгоритма (продолжение)

Анализ алгоритма

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

Анализ алгоритма (продолжение)

Анализ алгоритма

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

Анализ алгоритма (продолжение)

Анализ алгоритма

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

Анализ алгоритма (продолжение)

Анализ алгоритма

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

Анализ алгоритма (продолжение)

Анализ алгоритма

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

Анализ алгоритма (продолжение)

ЛеммаАлгоритм Rand-Min-Cut выдает каждое минимальное сечениеграфа с вероятностью хотя бы 2

n(n−1) . Время работы алгоритма —O(n2).

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 9 / 30

Page 29: 20071118 efficientalgorithms kulikov_lecture07

Улучшение алгоритма

Улучшение алгоритма

Таким образом, чтобы получить константную вероятностьошибки, придется запустить этот алгоритм O(n2) раз, чтоприведет ко времени работы O(n4).Как можно улучшить алгоритм?Как мы уже видели, на i-ом шаге алгоритм не выбирает ребро иззафиксированного покрытия с вероятностью 1− 2

n−i+1 .С увеличением i данная вероятность убывает.Идея: будем стягивать вершины, только пока соответствующаявероятность достаточно хороша.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 10 / 30

Page 30: 20071118 efficientalgorithms kulikov_lecture07

Улучшение алгоритма

Улучшение алгоритмаТаким образом, чтобы получить константную вероятностьошибки, придется запустить этот алгоритм O(n2) раз, чтоприведет ко времени работы O(n4).

Как можно улучшить алгоритм?Как мы уже видели, на i-ом шаге алгоритм не выбирает ребро иззафиксированного покрытия с вероятностью 1− 2

n−i+1 .С увеличением i данная вероятность убывает.Идея: будем стягивать вершины, только пока соответствующаявероятность достаточно хороша.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 10 / 30

Page 31: 20071118 efficientalgorithms kulikov_lecture07

Улучшение алгоритма

Улучшение алгоритмаТаким образом, чтобы получить константную вероятностьошибки, придется запустить этот алгоритм O(n2) раз, чтоприведет ко времени работы O(n4).Как можно улучшить алгоритм?

Как мы уже видели, на i-ом шаге алгоритм не выбирает ребро иззафиксированного покрытия с вероятностью 1− 2

n−i+1 .С увеличением i данная вероятность убывает.Идея: будем стягивать вершины, только пока соответствующаявероятность достаточно хороша.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 10 / 30

Page 32: 20071118 efficientalgorithms kulikov_lecture07

Улучшение алгоритма

Улучшение алгоритмаТаким образом, чтобы получить константную вероятностьошибки, придется запустить этот алгоритм O(n2) раз, чтоприведет ко времени работы O(n4).Как можно улучшить алгоритм?Как мы уже видели, на i-ом шаге алгоритм не выбирает ребро иззафиксированного покрытия с вероятностью 1− 2

n−i+1 .

С увеличением i данная вероятность убывает.Идея: будем стягивать вершины, только пока соответствующаявероятность достаточно хороша.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 10 / 30

Page 33: 20071118 efficientalgorithms kulikov_lecture07

Улучшение алгоритма

Улучшение алгоритмаТаким образом, чтобы получить константную вероятностьошибки, придется запустить этот алгоритм O(n2) раз, чтоприведет ко времени работы O(n4).Как можно улучшить алгоритм?Как мы уже видели, на i-ом шаге алгоритм не выбирает ребро иззафиксированного покрытия с вероятностью 1− 2

n−i+1 .С увеличением i данная вероятность убывает.

Идея: будем стягивать вершины, только пока соответствующаявероятность достаточно хороша.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 10 / 30

Page 34: 20071118 efficientalgorithms kulikov_lecture07

Улучшение алгоритма

Улучшение алгоритмаТаким образом, чтобы получить константную вероятностьошибки, придется запустить этот алгоритм O(n2) раз, чтоприведет ко времени работы O(n4).Как можно улучшить алгоритм?Как мы уже видели, на i-ом шаге алгоритм не выбирает ребро иззафиксированного покрытия с вероятностью 1− 2

n−i+1 .С увеличением i данная вероятность убывает.Идея: будем стягивать вершины, только пока соответствующаявероятность достаточно хороша.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 10 / 30

Page 35: 20071118 efficientalgorithms kulikov_lecture07

Улучшенный алгоритм

Алгоритм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

Улучшенный алгоритм

Алгоритм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

Улучшенный алгоритм

Алгоритм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

Улучшенный алгоритм

Алгоритм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

Улучшенный алгоритм

Алгоритм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

Улучшенный алгоритм

Алгоритм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

Анализ времени работы

ЛеммаВремя работы алгоритма 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

Анализ времени работы

ЛеммаВремя работы алгоритма 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

Анализ времени работы

ЛеммаВремя работы алгоритма 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

Анализ времени работы

ЛеммаВремя работы алгоритма 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

Оценка вероятности ошибкиЛеммаАлгоритм 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

Оценка вероятности ошибкиЛеммаАлгоритм 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

Оценка вероятности ошибкиЛеммаАлгоритм 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

Оценка вероятности ошибкиЛеммаАлгоритм 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

Оценка вероятности ошибкиЛеммаАлгоритм 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

Доказательство (продолжение)

Доказательство

Обозначим через P(t) вероятность того, что алгоритм находитминимальный разрез графа на t вершинах.

P(t) ≥ 1−(

1− 12P

(t√2

))2

Нетрудно проверить, что P(t) = Θ(1t ) является решением.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 14 / 30

Page 51: 20071118 efficientalgorithms kulikov_lecture07

Доказательство (продолжение)

ДоказательствоОбозначим через P(t) вероятность того, что алгоритм находитминимальный разрез графа на t вершинах.

P(t) ≥ 1−(

1− 12P

(t√2

))2

Нетрудно проверить, что P(t) = Θ(1t ) является решением.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 14 / 30

Page 52: 20071118 efficientalgorithms kulikov_lecture07

Доказательство (продолжение)

ДоказательствоОбозначим через P(t) вероятность того, что алгоритм находитминимальный разрез графа на t вершинах.

P(t) ≥ 1−(

1− 12P

(t√2

))2

Нетрудно проверить, что P(t) = Θ(1t ) является решением.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 14 / 30

Page 53: 20071118 efficientalgorithms kulikov_lecture07

Доказательство (продолжение)

ДоказательствоОбозначим через P(t) вероятность того, что алгоритм находитминимальный разрез графа на t вершинах.

P(t) ≥ 1−(

1− 12P

(t√2

))2

Нетрудно проверить, что P(t) = Θ(1t ) является решением.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 14 / 30

Page 54: 20071118 efficientalgorithms kulikov_lecture07

План лекции

1 Минимальный разрез

2 Проверка простоты числа

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 15 / 30

Page 55: 20071118 efficientalgorithms kulikov_lecture07

Проверка простоты числа

Проверка простоты числа

Как найти большое простое число?Можно, например, выбрать случайное число n и проверить,является ли оно простым.Но как эффективно проверять?Можно перебрать все возможные делители от 2 до

√n, но это

займет экспоненицальное время от размера входа:√

n = 2log2 n/2.Мы предъявим полиномиальный вероятностный алгоритм.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 16 / 30

Page 56: 20071118 efficientalgorithms kulikov_lecture07

Проверка простоты числа

Проверка простоты числаКак найти большое простое число?

Можно, например, выбрать случайное число n и проверить,является ли оно простым.Но как эффективно проверять?Можно перебрать все возможные делители от 2 до

√n, но это

займет экспоненицальное время от размера входа:√

n = 2log2 n/2.Мы предъявим полиномиальный вероятностный алгоритм.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 16 / 30

Page 57: 20071118 efficientalgorithms kulikov_lecture07

Проверка простоты числа

Проверка простоты числаКак найти большое простое число?Можно, например, выбрать случайное число n и проверить,является ли оно простым.

Но как эффективно проверять?Можно перебрать все возможные делители от 2 до

√n, но это

займет экспоненицальное время от размера входа:√

n = 2log2 n/2.Мы предъявим полиномиальный вероятностный алгоритм.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 16 / 30

Page 58: 20071118 efficientalgorithms kulikov_lecture07

Проверка простоты числа

Проверка простоты числаКак найти большое простое число?Можно, например, выбрать случайное число n и проверить,является ли оно простым.Но как эффективно проверять?

Можно перебрать все возможные делители от 2 до√

n, но этозаймет экспоненицальное время от размера входа:

√n = 2log2 n/2.

Мы предъявим полиномиальный вероятностный алгоритм.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 16 / 30

Page 59: 20071118 efficientalgorithms kulikov_lecture07

Проверка простоты числа

Проверка простоты числаКак найти большое простое число?Можно, например, выбрать случайное число n и проверить,является ли оно простым.Но как эффективно проверять?Можно перебрать все возможные делители от 2 до

√n, но это

займет экспоненицальное время от размера входа:√

n = 2log2 n/2.

Мы предъявим полиномиальный вероятностный алгоритм.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 16 / 30

Page 60: 20071118 efficientalgorithms kulikov_lecture07

Проверка простоты числа

Проверка простоты числаКак найти большое простое число?Можно, например, выбрать случайное число n и проверить,является ли оно простым.Но как эффективно проверять?Можно перебрать все возможные делители от 2 до

√n, но это

займет экспоненицальное время от размера входа:√

n = 2log2 n/2.Мы предъявим полиномиальный вероятностный алгоритм.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 16 / 30

Page 61: 20071118 efficientalgorithms kulikov_lecture07

Факты

Факты

Известен детерминированный полиномиальный алгоритмпроверки числа на простоту.Однако нет ни одного известного полиномиального алгоритмаразложения числа на множители.Самое больше известное (на данный момент) простое число:

33 661 · 27 031 232 + 1.

В его десятичной записи 2 116 617 цифр.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 17 / 30

Page 62: 20071118 efficientalgorithms kulikov_lecture07

Факты

ФактыИзвестен детерминированный полиномиальный алгоритмпроверки числа на простоту.

Однако нет ни одного известного полиномиального алгоритмаразложения числа на множители.Самое больше известное (на данный момент) простое число:

33 661 · 27 031 232 + 1.

В его десятичной записи 2 116 617 цифр.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 17 / 30

Page 63: 20071118 efficientalgorithms kulikov_lecture07

Факты

ФактыИзвестен детерминированный полиномиальный алгоритмпроверки числа на простоту.Однако нет ни одного известного полиномиального алгоритмаразложения числа на множители.

Самое больше известное (на данный момент) простое число:

33 661 · 27 031 232 + 1.

В его десятичной записи 2 116 617 цифр.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 17 / 30

Page 64: 20071118 efficientalgorithms kulikov_lecture07

Факты

ФактыИзвестен детерминированный полиномиальный алгоритмпроверки числа на простоту.Однако нет ни одного известного полиномиального алгоритмаразложения числа на множители.Самое больше известное (на данный момент) простое число:

33 661 · 27 031 232 + 1.

В его десятичной записи 2 116 617 цифр.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 17 / 30

Page 65: 20071118 efficientalgorithms kulikov_lecture07

Факты

ФактыИзвестен детерминированный полиномиальный алгоритмпроверки числа на простоту.Однако нет ни одного известного полиномиального алгоритмаразложения числа на множители.Самое больше известное (на данный момент) простое число:

33 661 · 27 031 232 + 1.

В его десятичной записи 2 116 617 цифр.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 17 / 30

Page 66: 20071118 efficientalgorithms kulikov_lecture07

Малая теорема ФермаОпределение

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

Малая теорема ФермаОпределение

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

Малая теорема ФермаОпределение

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

Малая теорема ФермаОпределение

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

Малая теорема ФермаОпределение

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

Простой тест

Простой тестPseudoprime(n)

если 2n−1 ≡ 1 mod n, вернуть “составное”вернуть “простое”

АнализСуществуют составные числа, которые данный тест не распознает.Таких чисел довольно мало, но все же.Можно проверять другие основания, но и это не поможет:существуют числа n, псевдопростые по любому основанию a ∈ Z*n.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 19 / 30

Page 72: 20071118 efficientalgorithms kulikov_lecture07

Простой тест

Простой тестPseudoprime(n)

если 2n−1 ≡ 1 mod n, вернуть “составное”

вернуть “простое”

АнализСуществуют составные числа, которые данный тест не распознает.Таких чисел довольно мало, но все же.Можно проверять другие основания, но и это не поможет:существуют числа n, псевдопростые по любому основанию a ∈ Z*n.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 19 / 30

Page 73: 20071118 efficientalgorithms kulikov_lecture07

Простой тест

Простой тестPseudoprime(n)

если 2n−1 ≡ 1 mod n, вернуть “составное”вернуть “простое”

АнализСуществуют составные числа, которые данный тест не распознает.Таких чисел довольно мало, но все же.Можно проверять другие основания, но и это не поможет:существуют числа n, псевдопростые по любому основанию a ∈ Z*n.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 19 / 30

Page 74: 20071118 efficientalgorithms kulikov_lecture07

Простой тест

Простой тестPseudoprime(n)

если 2n−1 ≡ 1 mod n, вернуть “составное”вернуть “простое”

Анализ

Существуют составные числа, которые данный тест не распознает.Таких чисел довольно мало, но все же.Можно проверять другие основания, но и это не поможет:существуют числа n, псевдопростые по любому основанию a ∈ Z*n.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 19 / 30

Page 75: 20071118 efficientalgorithms kulikov_lecture07

Простой тест

Простой тестPseudoprime(n)

если 2n−1 ≡ 1 mod n, вернуть “составное”вернуть “простое”

АнализСуществуют составные числа, которые данный тест не распознает.

Таких чисел довольно мало, но все же.Можно проверять другие основания, но и это не поможет:существуют числа n, псевдопростые по любому основанию a ∈ Z*n.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 19 / 30

Page 76: 20071118 efficientalgorithms kulikov_lecture07

Простой тест

Простой тестPseudoprime(n)

если 2n−1 ≡ 1 mod n, вернуть “составное”вернуть “простое”

АнализСуществуют составные числа, которые данный тест не распознает.Таких чисел довольно мало, но все же.

Можно проверять другие основания, но и это не поможет:существуют числа n, псевдопростые по любому основанию a ∈ Z*n.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 19 / 30

Page 77: 20071118 efficientalgorithms kulikov_lecture07

Простой тест

Простой тестPseudoprime(n)

если 2n−1 ≡ 1 mod n, вернуть “составное”вернуть “простое”

АнализСуществуют составные числа, которые данный тест не распознает.Таких чисел довольно мало, но все же.Можно проверять другие основания, но и это не поможет:существуют числа n, псевдопростые по любому основанию a ∈ Z*n.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 19 / 30

Page 78: 20071118 efficientalgorithms kulikov_lecture07

Улучшение теста

Улучшение теста

Будем проверять несколько оснований.Вычисляя 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

Улучшение теста

Улучшение тестаБудем проверять несколько оснований.

Вычисляя 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

Улучшение теста

Улучшение тестаБудем проверять несколько оснований.Вычисляя 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

Улучшение теста

Улучшение тестаБудем проверять несколько оснований.Вычисляя 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

Возведение в степень с прокеркой

Возведение в степень с проверкой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

Возведение в степень с прокеркой

Возведение в степень с проверкой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

Возведение в степень с прокеркой

Возведение в степень с проверкой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

Возведение в степень с прокеркой

Возведение в степень с проверкой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

Возведение в степень с прокеркой

Возведение в степень с проверкой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

Возведение в степень с прокеркой

Возведение в степень с проверкой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

Возведение в степень с прокеркой

Возведение в степень с проверкой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

Возведение в степень с прокеркой

Возведение в степень с проверкой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

Возведение в степень с прокеркой

Возведение в степень с проверкой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

Возведение в степень с прокеркой

Возведение в степень с проверкой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

Алгоритм

АлгоритмPrime(n, s)

повторить s разI выбрать случайное основание a от 1 до n − 1I если Witness(a, n) вернул “составное”, вернуть “составное”

вернуть “простое”

Время работы алгоритмаВозведение в степень требует log n операций.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 22 / 30

Page 93: 20071118 efficientalgorithms kulikov_lecture07

Алгоритм

АлгоритмPrime(n, s)

повторить s раз

I выбрать случайное основание a от 1 до n − 1I если Witness(a, n) вернул “составное”, вернуть “составное”

вернуть “простое”

Время работы алгоритмаВозведение в степень требует log n операций.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 22 / 30

Page 94: 20071118 efficientalgorithms kulikov_lecture07

Алгоритм

Алгоритм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

Алгоритм

АлгоритмPrime(n, s)

повторить s разI выбрать случайное основание a от 1 до n − 1I если Witness(a, n) вернул “составное”, вернуть “составное”

вернуть “простое”

Время работы алгоритмаВозведение в степень требует log n операций.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 22 / 30

Page 96: 20071118 efficientalgorithms kulikov_lecture07

Алгоритм

АлгоритмPrime(n, s)

повторить s разI выбрать случайное основание a от 1 до n − 1I если Witness(a, n) вернул “составное”, вернуть “составное”

вернуть “простое”

Время работы алгоритмаВозведение в степень требует log n операций.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 22 / 30

Page 97: 20071118 efficientalgorithms kulikov_lecture07

Алгоритм

АлгоритмPrime(n, s)

повторить s разI выбрать случайное основание a от 1 до n − 1I если Witness(a, n) вернул “составное”, вернуть “составное”

вернуть “простое”

Время работы алгоритмаВозведение в степень требует log n операций.

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 22 / 30

Page 98: 20071118 efficientalgorithms kulikov_lecture07

Основная теорема

ТеоремаДля нечетного составного числа 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

Основная теорема

ТеоремаДля нечетного составного числа 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

Основная теорема

ТеоремаДля нечетного составного числа 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

Основная теорема

ТеоремаДля нечетного составного числа 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

Основная теорема

ТеоремаДля нечетного составного числа 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

Простой случай

Простой случай

Предположим, существует 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

Простой случай

Простой случайПредположим, существует 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

Простой случай

Простой случайПредположим, существует 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

Простой случай

Простой случайПредположим, существует 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

Простой случай

Простой случайПредположим, существует 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

Еще один простой случай

Еще один простой случай

Предположим, 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

Еще один простой случай

Еще один простой случайПредположим, 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

Еще один простой случай

Еще один простой случайПредположим, 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

Еще один простой случай

Еще один простой случайПредположим, 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

Еще один простой случай

Еще один простой случайПредположим, 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

Основной случай

Основной случай

Представим число 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

Основной случай

Основной случайПредставим число 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

Основной случай

Основной случайПредставим число 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

Основной случай

Основной случайПредставим число 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

Основной случай

Основной случайПредставим число 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

Основной случай

Основной случайПредставим число 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

Основной случай

Основной случайПредставим число 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

Основной случай (продолжение)

Основной случай

Рассмотрим последовательность 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

Основной случай (продолжение)

Основной случайРассмотрим последовательность 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

Основной случай (продолжение)

Основной случайРассмотрим последовательность 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

Основной случай (продолжение)

Основной случайРассмотрим последовательность 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

Основной случай (продолжение)

Основной случайРассмотрим последовательность 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

Основной случай (продолжение)

Основной случайРассмотрим последовательность 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

Завершение доказательства

Завершение доказательства

Возьмем элемент 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

Завершение доказательства

Завершение доказательства

Возьмем элемент 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

Завершение доказательства

Завершение доказательства

Возьмем элемент 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

Завершение доказательства

Завершение доказательства

Возьмем элемент 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

Завершение доказательства

Завершение доказательства

Возьмем элемент 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

Завершение доказательства

Завершение доказательства

Возьмем элемент 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

Завершение доказательства

Завершение доказательства

Возьмем элемент 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

Что мы узнали за сегодня?

Что мы узнали за сегодня?

минимальный разрез выбирать случайное ребро и стягивать его ввершину

проверка простоты числа выбирать случайный вычет и проверять, неявляеся ли он свидетелем того, что число составное

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 29 / 30

Page 134: 20071118 efficientalgorithms kulikov_lecture07

Что мы узнали за сегодня?

Что мы узнали за сегодня?минимальный разрез выбирать случайное ребро и стягивать его в

вершину

проверка простоты числа выбирать случайный вычет и проверять, неявляеся ли он свидетелем того, что число составное

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 29 / 30

Page 135: 20071118 efficientalgorithms kulikov_lecture07

Что мы узнали за сегодня?

Что мы узнали за сегодня?минимальный разрез выбирать случайное ребро и стягивать его в

вершинупроверка простоты числа выбирать случайный вычет и проверять, не

являеся ли он свидетелем того, что число составное

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 29 / 30

Page 136: 20071118 efficientalgorithms kulikov_lecture07

Спасибо за внимание!

А. Куликов (CS клуб при ПОМИ) 7. Вероятностные алгоритмы 30 / 30