SlideShare a Scribd company logo
1 of 136
Download to read offline
с/к “Эффективные алгоритмы”
                Лекция 7: Вероятностные алгоритмы

                                      А. Куликов

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




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




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




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




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



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




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




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



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




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

Определение
Задача о минимальном разрезе (min-cut problem) заключается в
нахождении по данному связному мультиграфу такого минимального
количества ребер, удаление которых делает граф несвязным.




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

Определение
Задача о минимальном разрезе (min-cut problem) заключается в
нахождении по данному связному мультиграфу такого минимального
количества ребер, удаление которых делает граф несвязным.

Алгоритм
Rand-Min-Cut(G )




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

Определение
Задача о минимальном разрезе (min-cut problem) заключается в
нахождении по данному связному мультиграфу такого минимального
количества ребер, удаление которых делает граф несвязным.

Алгоритм
Rand-Min-Cut(G )
   повторять, пока в G более двух вершин:




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

Определение
Задача о минимальном разрезе (min-cut problem) заключается в
нахождении по данному связному мультиграфу такого минимального
количества ребер, удаление которых делает граф несвязным.

Алгоритм
Rand-Min-Cut(G )
   повторять, пока в G более двух вершин:
            выбрать случайное ребро (u, v )




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

Определение
Задача о минимальном разрезе (min-cut problem) заключается в
нахождении по данному связному мультиграфу такого минимального
количества ребер, удаление которых делает граф несвязным.

Алгоритм
Rand-Min-Cut(G )
   повторять, пока в G более двух вершин:
            выбрать случайное ребро (u, v )
            удалить все ребра между u и v




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

Определение
Задача о минимальном разрезе (min-cut problem) заключается в
нахождении по данному связному мультиграфу такого минимального
количества ребер, удаление которых делает граф несвязным.

Алгоритм
Rand-Min-Cut(G )
   повторять, пока в G более двух вершин:
            выбрать случайное ребро (u, v )
            удалить все ребра между u и v
            стянуть u и v в одну




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

Определение
Задача о минимальном разрезе (min-cut problem) заключается в
нахождении по данному связному мультиграфу такого минимального
количества ребер, удаление которых делает граф несвязным.

Алгоритм
Rand-Min-Cut(G )
   повторять, пока в G более двух вершин:
            выбрать случайное ребро (u, v )
            удалить все ребра между u и v
            стянуть u и v в одну
      вернуть количество ребер между двумя оставшимися вершинами



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




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


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




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


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




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


Анализ алгоритма
      Заметим, что стягивание не уменьшает размера минимального
      разреза: любой разрез в графе со стянутыми вершинами является
      разрезом и в исходном графе.
      Если минимальный размер разреза графа G равен k, то в графе
      G хотя бы kn/2 ребер: степень каждой вершины хотя бы k.




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


Анализ алгоритма
      Заметим, что стягивание не уменьшает размера минимального
      разреза: любой разрез в графе со стянутыми вершинами является
      разрезом и в исходном графе.
      Если минимальный размер разреза графа G равен k, то в графе
      G хотя бы kn/2 ребер: степень каждой вершины хотя бы k.
      Пусть C — минимальный разрез графа размера k.




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


Анализ алгоритма
      Заметим, что стягивание не уменьшает размера минимального
      разреза: любой разрез в графе со стянутыми вершинами является
      разрезом и в исходном графе.
      Если минимальный размер разреза графа G равен k, то в графе
      G хотя бы kn/2 ребер: степень каждой вершины хотя бы k.
      Пусть C — минимальный разрез графа размера k.
      Обозначим событие “ребро из C не было выбрано на шаге i”
      через Ai .




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


Анализ алгоритма
      Заметим, что стягивание не уменьшает размера минимального
      разреза: любой разрез в графе со стянутыми вершинами является
      разрезом и в исходном графе.
      Если минимальный размер разреза графа G равен k, то в графе
      G хотя бы kn/2 ребер: степень каждой вершины хотя бы k.
      Пусть C — минимальный разрез графа размера k.
      Обозначим событие “ребро из C не было выбрано на шаге i”
      через Ai .
      Тогда Prob (алгоритм выдаст C ) = Prob (A1 ∩ A2 ∩ · · · ∩ An−2 ) .




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

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




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

Анализ алгоритма
                                |C |          k             2
      Prob (A1 ) ≥ 1 −          |E |   ≥1−   kn/2   =1−     n




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

Анализ алгоритма
                                |C |          k             2
      Prob (A1 ) ≥ 1 −          |E |   ≥1−   kn/2   =1−     n
      После первого шага остается n − 1 вершин и хотя бы k(n − 1)/2
      ребер.




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

Анализ алгоритма
                                |C |           k             2
      Prob (A1 ) ≥ 1 −          |E |   ≥1−    kn/2   =1−     n
      После первого шага остается n − 1 вершин и хотя бы k(n − 1)/2
      ребер.
                                        2
      Prob (A2 |A1 ) ≥ 1 −             n−1




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

Анализ алгоритма
                                |C |           k             2
      Prob (A1 ) ≥ 1 −          |E |   ≥1−    kn/2   =1−     n
      После первого шага остается n − 1 вершин и хотя бы k(n − 1)/2
      ребер.
                                        2
      Prob (A2 |A1 ) ≥ 1 −             n−1
      На i-ом шаге в графе есть n − (i − 1) вершин, размер
      минимального разреза хотя бы k, поэтому ребер в графе хотя бы
      k(n − i + 1)/2.




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

Анализ алгоритма
                                |C |           k             2
      Prob (A1 ) ≥ 1 −          |E |   ≥1−    kn/2   =1−     n
      После первого шага остается n − 1 вершин и хотя бы k(n − 1)/2
      ребер.
                                        2
      Prob (A2 |A1 ) ≥ 1 −             n−1
      На i-ом шаге в графе есть n − (i − 1) вершин, размер
      минимального разреза хотя бы k, поэтому ребер в графе хотя бы
      k(n − i + 1)/2.
                                    ⃒   ⎛⎞
                                    ⃒i−1
                                    ⃒ ⋂︁           2
                           Prob ⎝Ai ⃒ Aj ⎠ ≥ 1 −
                                    ⃒
                                    ⃒j=1         n−i +1



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


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




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


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

             ⎛           ⎞                                        ⎛                  ⎞
                 n−2
                 ⋂︁                                                          n−3
                                                                             ⋂︁
      Prob ⎝           Aj ⎠ = Prob (A1 )·Prob (A2 |A1 )·. . .·Prob ⎝An−2 |         Aj ⎠
                 j=1                                                         j=1




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


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

             ⎛           ⎞                                                     ⎛           ⎞
                 n−2
                 ⋂︁                                                                n−3
                                                                                   ⋂︁
      Prob ⎝           Aj ⎠ = Prob (A1 )·Prob (A2 |A1 )·. . .·Prob ⎝An−2 |               Aj ⎠
                 j=1                                                               j=1



      Итак, алгоритм выдает разрез C с вероятностью хотя бы
                                n−2 (︂                   )︂
                                ∏︁          2                        2
                                       1−                     =            .
                                          n−i +1                  n(n − 1)
                                i=1




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




Лемма
Алгоритм Rand-Min-Cut выдает каждое минимальное сечение
                                2
графа с вероятностью хотя бы n(n−1) . Время работы алгоритма —
O(n2 ).




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


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




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


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




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


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




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


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




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


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




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


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




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



Алгоритм
Improved-Rand-Min-Cut(G )




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



Алгоритм
Improved-Rand-Min-Cut(G )
         √
   t = n/ 2




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



Алгоритм
Improved-Rand-Min-Cut(G )
         √
   t = n/ 2
      стягиванием случайных ребер получить два графа H1 и H2 на t
      вершинах




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



Алгоритм
Improved-Rand-Min-Cut(G )
         √
   t = n/ 2
      стягиванием случайных ребер получить два графа H1 и H2 на t
      вершинах
      k1 = Improved-Rand-Min-Cut(H1 )




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



Алгоритм
Improved-Rand-Min-Cut(G )
         √
   t = n/ 2
      стягиванием случайных ребер получить два графа H1 и H2 на t
      вершинах
      k1 = Improved-Rand-Min-Cut(H1 )
      k2 = Improved-Rand-Min-Cut(H2 )




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



Алгоритм
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
Анализ времени работы


Лемма
Время работы алгоритма Improved-Rand-Min-Cut — O(n2 log n).




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


Лемма
Время работы алгоритма Improved-Rand-Min-Cut — O(n2 log n).

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




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


Лемма
Время работы алгоритма Improved-Rand-Min-Cut — O(n2 log n).

Доказательство
                                              (︂         )︂
                                                   n
                                T (n) = 2T         √          + O(n2 )
                                                     2




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


Лемма
Время работы алгоритма Improved-Rand-Min-Cut — O(n2 log n).

Доказательство
                                              (︂         )︂
                                                   n
                                T (n) = 2T         √          + O(n2 )
                                                     2

      T (n) = O(n2 log n)




А. Куликов (CS клуб при ПОМИ)    7. Вероятностные алгоритмы              12 / 30
Оценка вероятности ошибки
Лемма
Алгоритм Improved-Rand-Min-Cut выдает минимальный разрез
графа с вероятностью Ω(1/ log n).




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы   13 / 30
Оценка вероятности ошибки
Лемма
Алгоритм Improved-Rand-Min-Cut выдает минимальный разрез
графа с вероятностью Ω(1/ log n).

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




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы   13 / 30
Оценка вероятности ошибки
Лемма
Алгоритм Improved-Rand-Min-Cut выдает минимальный разрез
графа с вероятностью Ω(1/ log n).

Доказательство
      Допустим, разрез размера k все еще существует в графе H на t
      вершинах.




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы       13 / 30
Оценка вероятности ошибки
Лемма
Алгоритм Improved-Rand-Min-Cut выдает минимальный разрез
графа с вероятностью Ω(1/ log n).

Доказательство
      Допустим, разрез размера k все еще существует в графе H на t
      вершинах.
      Алгоритм вернет этот разрез, если для какого-то из двух графов
      H1 и H2 ни одно ребро этого разреза не будет стянуто и
      соответствующий рекурсивный вызов вернет именно этот разрез.




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы       13 / 30
Оценка вероятности ошибки
Лемма
Алгоритм Improved-Rand-Min-Cut выдает минимальный разрез
графа с вероятностью Ω(1/ log n).

Доказательство
      Допустим, разрез размера k все еще существует в графе H на t
      вершинах.
      Алгоритм вернет этот разрез, если для какого-то из двух графов
      H1 и H2 ни одно ребро этого разреза не будет стянуто и
      соответствующий рекурсивный вызов вернет именно этот разрез.
                                    √
      При стягивании t вершин в t/ 2 вероятность того, что ни одно
      ребро разреза стянуто не будет, хотя бы
                              √     √
                            t/ 2(t/ 2 − 1)     1
                                             ≥ .
                                t(t − 1)       2

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


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




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


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




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


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




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


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

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




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




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



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




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



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




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



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




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



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




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



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




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



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




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



Проверка простоты числа
      Как найти большое простое число?
      Можно, например, выбрать случайное число n и проверить,
      является ли оно простым.
      Но как эффективно проверять?
                                                     √
      Можно перебрать все возможные делители от 2 до n, но это
                                                     √
      займет экспоненицальное время от размера входа: n = 2log2 n/2 .
      Мы предъявим полиномиальный вероятностный алгоритм.




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


Факты




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


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




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


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




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


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

                                  33 661 · 27 031 232 + 1.




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


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

                                  33 661 · 27 031 232 + 1.


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




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




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы   18 / 30
Малая теорема Ферма
Определение
      Z+ = {1, 2, . . . , n − 1} — множество всех ненулевых вычетов
        n
      (остатков) по модулю n.




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы            18 / 30
Малая теорема Ферма
Определение
      Z+ = {1, 2, . . . , n − 1} — множество всех ненулевых вычетов
        n
      (остатков) по модулю n.
      Z* — множество остатков, взаимно простых с n (для простого n
       n
      Z+ = Z* ).
       n    n




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы            18 / 30
Малая теорема Ферма
Определение
      Z+ = {1, 2, . . . , n − 1} — множество всех ненулевых вычетов
        n
      (остатков) по модулю n.
      Z* — множество остатков, взаимно простых с n (для простого n
       n
      Z+ = Z* ).
       n    n


Теорема
Если p ∈ P и (a, p) = 1, то

                                 ap−1 ≡ 1 mod .




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы            18 / 30
Малая теорема Ферма
Определение
      Z+ = {1, 2, . . . , n − 1} — множество всех ненулевых вычетов
        n
      (остатков) по модулю n.
      Z* — множество остатков, взаимно простых с n (для простого n
       n
      Z+ = Z* ).
       n    n


Теорема
Если p ∈ P и (a, p) = 1, то

                                 ap−1 ≡ 1 mod .



Определение
Число n называется псевдопростым по основанию a (base-a
pseudoprime), если an−1 ≡ 1 mod n.
А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы            18 / 30
Простой тест


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




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


Простой тест
Pseudoprime(n)
      если 2n−1 ̸≡ 1 mod n, вернуть “составное”




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


Простой тест
Pseudoprime(n)
      если 2n−1 ̸≡ 1 mod n, вернуть “составное”
      вернуть “простое”




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


Простой тест
Pseudoprime(n)
      если 2n−1 ̸≡ 1 mod n, вернуть “составное”
      вернуть “простое”

Анализ




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


Простой тест
Pseudoprime(n)
      если 2n−1 ̸≡ 1 mod n, вернуть “составное”
      вернуть “простое”

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




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


Простой тест
Pseudoprime(n)
      если 2n−1 ̸≡ 1 mod n, вернуть “составное”
      вернуть “простое”

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




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


Простой тест
Pseudoprime(n)
      если 2n−1 ̸≡ 1 mod n, вернуть “составное”
      вернуть “простое”

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




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




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




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




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




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




Улучшение теста
      Будем проверять несколько оснований.
      Вычисляя an−1 , будем проверять, не нашлось ли такого x ≤ n, что
      x 2 ≡ 1 mod n:




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




Улучшение теста
      Будем проверять несколько оснований.
      Вычисляя an−1 , будем проверять, не нашлось ли такого x ≤ n, что
      x 2 ≡ 1 mod n:
                                                 .
            если x 2 ≡ 1 mod n, то (x − 1)(x + 1). тогда если n ∈ P, то x
                                                 .n,
            равен 1 или n − 1.




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


Возведение в степень с проверкой
Witness(a, n)




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


Возведение в степень с проверкой
Witness(a, n)
      пусть ⟨bk , bk−1 , . . . , b0 ⟩ — двоичная запись n − 1




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


Возведение в степень с проверкой
Witness(a, n)
      пусть ⟨bk , bk−1 , . . . , b0 ⟩ — двоичная запись n − 1
      d =1




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


Возведение в степень с проверкой
Witness(a, n)
      пусть ⟨bk , bk−1 , . . . , b0 ⟩ — двоичная запись n − 1
      d =1
      для i от k до 0 повторять:




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


Возведение в степень с проверкой
Witness(a, n)
      пусть ⟨bk , bk−1 , . . . , b0 ⟩ — двоичная запись n − 1
      d =1
      для i от k до 0 повторять:
            x =d




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


Возведение в степень с проверкой
Witness(a, n)
      пусть ⟨bk , bk−1 , . . . , b0 ⟩ — двоичная запись n − 1
      d =1
      для i от k до 0 повторять:
            x =d
            d = d 2 mod n




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


Возведение в степень с проверкой
Witness(a, n)
      пусть ⟨bk , bk−1 , . . . , b0 ⟩ — двоичная запись n − 1
      d =1
      для i от k до 0 повторять:
            x =d
            d = d 2 mod n
            если d = 1 и x ̸= 1 и x ̸= n − 1, вернуть “составное”




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


Возведение в степень с проверкой
Witness(a, n)
      пусть ⟨bk , bk−1 , . . . , b0 ⟩ — двоичная запись n − 1
      d =1
      для i от k до 0 повторять:
            x =d
            d = d 2 mod n
            если d = 1 и x ̸= 1 и x ̸= n − 1, вернуть “составное”
            если bi = 1, d = (d · a) mod n




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


Возведение в степень с проверкой
Witness(a, n)
      пусть ⟨bk , bk−1 , . . . , b0 ⟩ — двоичная запись n − 1
      d =1
      для i от k до 0 повторять:
            x =d
            d = d 2 mod n
            если d = 1 и x ̸= 1 и x ̸= n − 1, вернуть “составное”
            если bi = 1, d = (d · a) mod n
      если d ̸= 1, вернуть “составное”




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


Возведение в степень с проверкой
Witness(a, n)
      пусть ⟨bk , bk−1 , . . . , b0 ⟩ — двоичная запись n − 1
      d =1
      для i от k до 0 повторять:
            x =d
            d = d 2 mod n
            если d = 1 и x ̸= 1 и x ̸= n − 1, вернуть “составное”
            если bi = 1, d = (d · a) mod n
      если d ̸= 1, вернуть “составное”
      вернуть “простое”




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


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




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


Алгоритм
Prime(n, s)
   повторить s раз




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


Алгоритм
Prime(n, s)
   повторить s раз
            выбрать случайное основание a от 1 до n − 1




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


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




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


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




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


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

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




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы               22 / 30
Основная теорема
Теорема
Для нечетного составного числа n
                                                             n−1
              |{a ∈ Z+ : Witness(a, n) = “составное”}| ≥
                     n                                           .
                                                              2



Идея доказательства




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы           23 / 30
Основная теорема
Теорема
Для нечетного составного числа n
                                                             n−1
              |{a ∈ Z+ : Witness(a, n) = “составное”}| ≥
                     n                                           .
                                                              2



Идея доказательства
      Назовем основание a ∈ Z+ плохим, если
                             n
      Witness(a, n) = “простое”.




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы           23 / 30
Основная теорема
Теорема
Для нечетного составного числа n
                                                             n−1
              |{a ∈ Z+ : Witness(a, n) = “составное”}| ≥
                     n                                           .
                                                              2



Идея доказательства
      Назовем основание a ∈ Z+ плохим, если
                             n
      Witness(a, n) = “простое”.
      Поскольку для плохого a выполнено an−1 ≡ 1 mod n, все плохие
      элементы лежат в Z* .
                        n




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы           23 / 30
Основная теорема
Теорема
Для нечетного составного числа n
                                                             n−1
              |{a ∈ Z+ : Witness(a, n) = “составное”}| ≥
                     n                                           .
                                                              2



Идея доказательства
      Назовем основание a ∈ Z+ плохим, если
                             n
      Witness(a, n) = “простое”.
      Поскольку для плохого a выполнено an−1 ≡ 1 mod n, все плохие
      элементы лежат в Z* .
                        n
      Мы хотим показать, что плохих оснований меньше половины.



А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы           23 / 30
Основная теорема
Теорема
Для нечетного составного числа n
                                                             n−1
              |{a ∈ Z+ : Witness(a, n) = “составное”}| ≥
                     n                                           .
                                                              2



Идея доказательства
      Назовем основание a ∈ Z+ плохим, если
                             n
      Witness(a, n) = “простое”.
      Поскольку для плохого a выполнено an−1 ≡ 1 mod n, все плохие
      элементы лежат в Z* .
                        n
      Мы хотим показать, что плохих оснований меньше половины.
      Для этого покажем, что все плохие элементы образуют
      собственную подгруппу Z* .
                              n

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



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




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



Простой случай
      Предположим, существует x ∈ Z* , такой что x n−1 ̸≡ 1 mod n.
                                   n




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



Простой случай
      Предположим, существует x ∈ Z* , такой что x n−1 ̸≡ 1 mod n.
                                   n
      Рассмотрим тогда B = {b ∈ Z* : bn−1 ≡ 1 mod n}.
                                 n




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



Простой случай
      Предположим, существует x ∈ Z* , такой что x n−1 ̸≡ 1 mod n.
                                   n
      Рассмотрим тогда B = {b ∈ Z* : bn−1 ≡ 1 mod n}.
                                 n
      Ясно, что B является собственной подгруппой.




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



Простой случай
      Предположим, существует x ∈ Z* , такой что x n−1 ̸≡ 1 mod n.
                                   n
      Рассмотрим тогда B = {b ∈ Z* : bn−1 ≡ 1 mod n}.
                                 n
      Ясно, что B является собственной подгруппой.
      Таким образом, в дальнейшем предполагаем, что для всех x ∈ Z*
                                                                  n

                                   x n−1 ≡ 1 mod n.




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



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




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



Еще один простой случай
      Предположим, n = p e .




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



Еще один простой случай
      Предположим, n = p e .
      Тогда группа Z* является циклической, то есть существует
                     n
      элемент g , для которого ordn (g ) = |Z* | = ������(n) = (p − 1)p e−1 .
                                             n




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



Еще один простой случай
      Предположим, n = p e .
      Тогда группа Z* является циклической, то есть существует
                     n
      элемент g , для которого ordn (g ) = |Z* | = ������(n) = (p − 1)p e−1 .
                                             n
      Тогда из g n−1 ≡ 1 mod n следует n − 1 ≡ 0 mod ������(n), но
            .
      n−1̸. .p.




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



Еще один простой случай
      Предположим, n = p e .
      Тогда группа Z* является циклической, то есть существует
                     n
      элемент g , для которого ordn (g ) = |Z* | = ������(n) = (p − 1)p e−1 .
                                             n
      Тогда из g n−1 ≡ 1 mod n следует n − 1 ≡ 0 mod ������(n), но
            .
      n−1̸. .p.
      Итак, n представимо в виде произведения двух взаимно простых
      чисел n1 , n2 > 1.




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




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы   26 / 30
Основной случай
Основной случай
      Представим число n − 1 как 2t u, где u нечетно.




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы   26 / 30
Основной случай
Основной случай
      Представим число n − 1 как 2t u, где u нечетно.
      Для каждого a ∈ Z+ рассмотрим последовательность вычетов по
                       n
      модулю n
                                          2              t
                        ^ = ⟨au , a2u , a2 u , . . . , a2 u ⟩.
                         a




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы    26 / 30
Основной случай
Основной случай
      Представим число n − 1 как 2t u, где u нечетно.
      Для каждого a ∈ Z+ рассмотрим последовательность вычетов по
                       n
      модулю n
                                          2              t
                        ^ = ⟨au , a2u , a2 u , . . . , a2 u ⟩.
                         a


      Все эти элементы (кроме первого) важны тем, что они будут
      проверены процедурой Witness.




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы        26 / 30
Основной случай
Основной случай
      Представим число n − 1 как 2t u, где u нечетно.
      Для каждого a ∈ Z+ рассмотрим последовательность вычетов по
                       n
      модулю n
                                          2              t
                        ^ = ⟨au , a2u , a2 u , . . . , a2 u ⟩.
                         a


      Все эти элементы (кроме первого) важны тем, что они будут
      проверены процедурой Witness.
      Рассмотрим максимальное j, для которого существует такой
                              j
      элемент v ∈ Z* , что v 2 u ≡ −1 mod n (такое j существует,
                   n
      поскольку (−1)u ≡ −1 mod n).




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы         26 / 30
Основной случай
Основной случай
      Представим число n − 1 как 2t u, где u нечетно.
      Для каждого a ∈ Z+ рассмотрим последовательность вычетов по
                       n
      модулю n
                                          2              t
                        ^ = ⟨au , a2u , a2 u , . . . , a2 u ⟩.
                         a


      Все эти элементы (кроме первого) важны тем, что они будут
      проверены процедурой Witness.
      Рассмотрим максимальное j, для которого существует такой
                              j
      элемент v ∈ Z* , что v 2 u ≡ −1 mod n (такое j существует,
                   n
      поскольку (−1)u ≡ −1 mod n).
                                 j
      Пусть B = {x ∈ Z* : x 2 u ≡ ±1 mod n}.
                      n




А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы         26 / 30
Основной случай
Основной случай
      Представим число n − 1 как 2t u, где u нечетно.
      Для каждого a ∈ Z+ рассмотрим последовательность вычетов по
                       n
      модулю n
                                          2              t
                        ^ = ⟨au , a2u , a2 u , . . . , a2 u ⟩.
                         a


      Все эти элементы (кроме первого) важны тем, что они будут
      проверены процедурой Witness.
      Рассмотрим максимальное j, для которого существует такой
                              j
      элемент v ∈ Z* , что v 2 u ≡ −1 mod n (такое j существует,
                   n
      поскольку (−1)u ≡ −1 mod n).
                                 j
      Пусть B = {x ∈ Z* : x 2 u ≡ ±1 mod n}.
                      n
      Ясно, что это подгруппа. Покажем, что в ней лежат все плохие
      элементы.
А. Куликов (CS клуб при ПОМИ)   7. Вероятностные алгоритмы         26 / 30
Основной случай (продолжение)


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




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


Основной случай
      Рассмотрим последовательность ^ плохого элемента a.
                                    a




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


Основной случай
      Рассмотрим последовательность ^ плохого элемента a.
                                    a
      На последнем месте в ней стоит обязательно 1. На
      предпоследнем — либо −1, либо 1 (иначе был бы обнаружен
      нетривиальный корень из единицы).




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


Основной случай
      Рассмотрим последовательность ^ плохого элемента a.
                                    a
      На последнем месте в ней стоит обязательно 1. На
      предпоследнем — либо −1, либо 1 (иначе был бы обнаружен
      нетривиальный корень из единицы).
      Причем −1 не может стоять правее позиции j.




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


Основной случай
      Рассмотрим последовательность ^ плохого элемента a.
                                    a
      На последнем месте в ней стоит обязательно 1. На
      предпоследнем — либо −1, либо 1 (иначе был бы обнаружен
      нетривиальный корень из единицы).
      Причем −1 не может стоять правее позиции j.
      Значит, на j-м месте стоит 1 или −1, то есть a ∈ B.




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


Основной случай
      Рассмотрим последовательность ^ плохого элемента a.
                                    a
      На последнем месте в ней стоит обязательно 1. На
      предпоследнем — либо −1, либо 1 (иначе был бы обнаружен
      нетривиальный корень из единицы).
      Причем −1 не может стоять правее позиции j.
      Значит, на j-м месте стоит 1 или −1, то есть a ∈ B.
      Теперь осталось показать, что B — собственная подгруппа, то
      есть найти элемент Z* , не содержащийся в B.
                          n




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


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




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


Завершение доказательства
                                                    j
      Возьмем элемент v , для которого v 2 u ≡ −1 mod n.




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


Завершение доказательства
                                                    j
      Возьмем элемент v , для которого v 2 u ≡ −1 mod n.
                    j
      Тогда и v 2 u ≡ −1 mod n1 (поскольку n = n1 n2 и (n1 , n2 ) = 1).




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


Завершение доказательства
                                                    j
      Возьмем элемент v , для которого v 2 u ≡ −1 mod n.
                    j
      Тогда и v 2 u ≡ −1 mod n1 (поскольку n = n1 n2 и (n1 , n2 ) = 1).
      Существует элемент w , для которого w ≡ v mod n1 и w ≡ 1
      mod n2 .




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


Завершение доказательства
                                                    j
      Возьмем элемент v , для которого v 2 u ≡ −1 mod n.
                      j
      Тогда и v 2 u ≡ −1 mod n1 (поскольку n = n1 n2 и (n1 , n2 ) = 1).
      Существует элемент w , для которого w ≡ v mod n1 и w ≡ 1
      mod n2 .
                  j                         j
      Тогда w 2 u ≡ −1 mod n1 и w 2 u ≡ 1 mod n2 .




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


Завершение доказательства
                                                    j
      Возьмем элемент v , для которого v 2 u ≡ −1 mod n.
                      j
      Тогда и v 2 u ≡ −1 mod n1 (поскольку n = n1 n2 и (n1 , n2 ) = 1).
      Существует элемент w , для которого w ≡ v mod n1 и w ≡ 1
      mod n2 .
                  j                         j
      Тогда w 2 u ≡ −1 mod n1 и w 2 u ≡ 1 mod n2 .
                          j
      Но тогда w 2 u ̸≡ ±1 mod n.




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


Завершение доказательства
                                                    j
      Возьмем элемент v , для которого v 2 u ≡ −1 mod n.
                      j
      Тогда и v 2 u ≡ −1 mod n1 (поскольку n = n1 n2 и (n1 , n2 ) = 1).
      Существует элемент w , для которого w ≡ v mod n1 и w ≡ 1
      mod n2 .
                  j                         j
      Тогда w 2 u ≡ −1 mod n1 и w 2 u ≡ 1 mod n2 .
                          j
      Но тогда w 2 u ̸≡ ±1 mod n.
      Поскольку (w , n1 ) = 1 и (w , n2 ) = 1, то (w , n) = 1. Следовательно,
      w ∈ Z* , но w ̸∈ B.
           n




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




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




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




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




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




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




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




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

More Related Content

What's hot

Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
Синус и косинус
Синус и косинусСинус и косинус
Синус и косинусartec457
 
Способы записи алгоритма
Способы записи алгоритмаСпособы записи алгоритма
Способы записи алгоритмаurasova
 
20091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture1020091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture10Computer Science Club
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
Obratnye trigonometricheskie funkcii
Obratnye trigonometricheskie funkciiObratnye trigonometricheskie funkcii
Obratnye trigonometricheskie funkciiDimon4
 
Геометричні перетворення графіків тригонометричних функцій
Геометричні перетворення графіків тригонометричних функційГеометричні перетворення графіків тригонометричних функцій
Геометричні перетворення графіків тригонометричних функційlulettta
 
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Nikolay Grebenshikov
 
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Alexey Paznikov
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Nikolay Grebenshikov
 
20091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture0920091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture09Computer Science Club
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс2berkas
 
Защита информации семинар №7
Защита информации семинар №7Защита информации семинар №7
Защита информации семинар №7Alexander Kolybelnikov
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовMikhail Kurnosov
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02Computer Science Club
 
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Nikolay Grebenshikov
 
Kvadratichnaya funkciya ejo_svojstva_i_grafik
Kvadratichnaya funkciya ejo_svojstva_i_grafikKvadratichnaya funkciya ejo_svojstva_i_grafik
Kvadratichnaya funkciya ejo_svojstva_i_grafikIvanchik5
 

What's hot (20)

Algo 01 part01
Algo 01 part01Algo 01 part01
Algo 01 part01
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
Синус и косинус
Синус и косинусСинус и косинус
Синус и косинус
 
Способы записи алгоритма
Способы записи алгоритмаСпособы записи алгоритма
Способы записи алгоритма
 
20091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture1020091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture10
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
лекция 15
лекция 15лекция 15
лекция 15
 
Obratnye trigonometricheskie funkcii
Obratnye trigonometricheskie funkciiObratnye trigonometricheskie funkcii
Obratnye trigonometricheskie funkcii
 
Геометричні перетворення графіків тригонометричних функцій
Геометричні перетворення графіків тригонометричних функційГеометричні перетворення графіків тригонометричних функцій
Геометричні перетворення графіків тригонометричних функцій
 
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
 
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
 
20091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture0920091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture09
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс
 
Защита информации семинар №7
Защита информации семинар №7Защита информации семинар №7
Защита информации семинар №7
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графов
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02
 
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
 
Grafiki trigonometricheskih funkcij
Grafiki trigonometricheskih funkcijGrafiki trigonometricheskih funkcij
Grafiki trigonometricheskih funkcij
 
Kvadratichnaya funkciya ejo_svojstva_i_grafik
Kvadratichnaya funkciya ejo_svojstva_i_grafikKvadratichnaya funkciya ejo_svojstva_i_grafik
Kvadratichnaya funkciya ejo_svojstva_i_grafik
 

Viewers also liked

3. formato 30 x30. gradacion. carlos riera
3. formato 30 x30. gradacion. carlos riera3. formato 30 x30. gradacion. carlos riera
3. formato 30 x30. gradacion. carlos rieraCARLOS-RIERA
 
Google adwords display network & re marketing
Google adwords   display network & re marketingGoogle adwords   display network & re marketing
Google adwords display network & re marketingNinh Tran
 
Practica calificada nª 02
Practica calificada nª 02Practica calificada nª 02
Practica calificada nª 02mariavanel
 
One piece volume 16(137-145)
One piece volume 16(137-145)One piece volume 16(137-145)
One piece volume 16(137-145)Marcos Donato
 
20091206 algorithmsfornphardproblems kulikov_lecture11
20091206 algorithmsfornphardproblems kulikov_lecture1120091206 algorithmsfornphardproblems kulikov_lecture11
20091206 algorithmsfornphardproblems kulikov_lecture11Computer Science Club
 
20080316 efficientalgorithms kulikov_lecture18
20080316 efficientalgorithms kulikov_lecture1820080316 efficientalgorithms kulikov_lecture18
20080316 efficientalgorithms kulikov_lecture18Computer Science Club
 
Laďka Suchá: Dejte uživatelům slovo
Laďka Suchá: Dejte uživatelům slovoLaďka Suchá: Dejte uživatelům slovo
Laďka Suchá: Dejte uživatelům slovoKISK FF MU
 
Batman o longo dia das bruxas 12
Batman   o longo dia das bruxas 12Batman   o longo dia das bruxas 12
Batman o longo dia das bruxas 12Marcos Donato
 
Vani_Gaddamidi_Administrator
Vani_Gaddamidi_AdministratorVani_Gaddamidi_Administrator
Vani_Gaddamidi_AdministratorVani Gaddamidi
 
Otto Bohuš (Letní škola 2013)
Otto Bohuš (Letní škola 2013)Otto Bohuš (Letní škola 2013)
Otto Bohuš (Letní škola 2013)KISK FF MU
 
Objetos tecniloguicos
Objetos tecniloguicosObjetos tecniloguicos
Objetos tecniloguicosjhonnyorduz
 

Viewers also liked (20)

3. formato 30 x30. gradacion. carlos riera
3. formato 30 x30. gradacion. carlos riera3. formato 30 x30. gradacion. carlos riera
3. formato 30 x30. gradacion. carlos riera
 
Google adwords display network & re marketing
Google adwords   display network & re marketingGoogle adwords   display network & re marketing
Google adwords display network & re marketing
 
Leave a legacy december 2012 - meeting
Leave a legacy   december 2012 - meetingLeave a legacy   december 2012 - meeting
Leave a legacy december 2012 - meeting
 
Lean Architecture
Lean ArchitectureLean Architecture
Lean Architecture
 
Practica calificada nª 02
Practica calificada nª 02Practica calificada nª 02
Practica calificada nª 02
 
Science
ScienceScience
Science
 
One piece volume 16(137-145)
One piece volume 16(137-145)One piece volume 16(137-145)
One piece volume 16(137-145)
 
20091206 algorithmsfornphardproblems kulikov_lecture11
20091206 algorithmsfornphardproblems kulikov_lecture1120091206 algorithmsfornphardproblems kulikov_lecture11
20091206 algorithmsfornphardproblems kulikov_lecture11
 
Icwa foundation
Icwa foundationIcwa foundation
Icwa foundation
 
20080316 efficientalgorithms kulikov_lecture18
20080316 efficientalgorithms kulikov_lecture1820080316 efficientalgorithms kulikov_lecture18
20080316 efficientalgorithms kulikov_lecture18
 
Praying
PrayingPraying
Praying
 
Laďka Suchá: Dejte uživatelům slovo
Laďka Suchá: Dejte uživatelům slovoLaďka Suchá: Dejte uživatelům slovo
Laďka Suchá: Dejte uživatelům slovo
 
Batman o longo dia das bruxas 12
Batman   o longo dia das bruxas 12Batman   o longo dia das bruxas 12
Batman o longo dia das bruxas 12
 
Papai noel2
Papai noel2Papai noel2
Papai noel2
 
Adolescents 1
Adolescents 1Adolescents 1
Adolescents 1
 
Vani_Gaddamidi_Administrator
Vani_Gaddamidi_AdministratorVani_Gaddamidi_Administrator
Vani_Gaddamidi_Administrator
 
Otto Bohuš (Letní škola 2013)
Otto Bohuš (Letní škola 2013)Otto Bohuš (Letní škola 2013)
Otto Bohuš (Letní škola 2013)
 
Diapositivas
DiapositivasDiapositivas
Diapositivas
 
Pedido laura
Pedido lauraPedido laura
Pedido laura
 
Objetos tecniloguicos
Objetos tecniloguicosObjetos tecniloguicos
Objetos tecniloguicos
 

Similar to 20071118 efficientalgorithms kulikov_lecture07

20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15Computer Science Club
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15Computer Science Club
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08Computer Science Club
 
20070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture0220070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture02Computer Science Club
 
20091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture0620091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture06Computer Science Club
 
20091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture0820091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture08Computer Science Club
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
Основы алгоритмизации (QBasic)
Основы алгоритмизации (QBasic)Основы алгоритмизации (QBasic)
Основы алгоритмизации (QBasic)Viktoria Vlasenko
 
20071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture0620071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture06Computer Science Club
 
20071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture0320071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture03Computer Science Club
 
параллельные методы и алгоритмы линейной алгебры
параллельные методы и алгоритмы линейной алгебрыпараллельные методы и алгоритмы линейной алгебры
параллельные методы и алгоритмы линейной алгебрыyshilov
 
Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2simple_people
 
ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6Andrey Danilchenko
 

Similar to 20071118 efficientalgorithms kulikov_lecture07 (14)

20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08
 
20070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture0220070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture02
 
20091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture0620091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture06
 
20091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture0820091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture08
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
Основы алгоритмизации (QBasic)
Основы алгоритмизации (QBasic)Основы алгоритмизации (QBasic)
Основы алгоритмизации (QBasic)
 
20071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture0620071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture06
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 
20071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture0320071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture03
 
параллельные методы и алгоритмы линейной алгебры
параллельные методы и алгоритмы линейной алгебрыпараллельные методы и алгоритмы линейной алгебры
параллельные методы и алгоритмы линейной алгебры
 
Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2
 
ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6
 

More from Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugsComputer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01Computer Science Club
 

More from Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 

20071118 efficientalgorithms kulikov_lecture07

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