Вероятностные алгоритмы и класс BPP. Проверка простоты числа
Алгоритм проверки простоты.
Вход: число .
Шаг 1. Проверяем четность . Если
, то ответ "
— простое", если
— четное и больше 2, то ответ "
— составное", в противном случае переходим к шагу 2.
Шаг 2. Проверяем, извлекается ли из нацело корень
-й степени при
. Если извлекается, то ответ "
— составное", иначе переходим к шагу 3.
Шаг 3. Записываем в виде
, где
, а
— нечетное.
Шаг 4. Выбираем случайное среди чисел от
до
.
Шаг 5. Вычисляем по модулю
.
Проверка 1. Если , то ответ "
— составное".
Проверка 2. Если найдено такое , для которого
, а
, то ответ "
— составное".
В противном случае ответ " — простое".
Анализ алгоритма.
Теорема 3.2. Если — простое, то описанный выше алгоритм всегда (с вероятностью 1) выдает ответ "
— простое".
Если — составное, то ответ "
— составное" будет получен с вероятностью
.
Замечание 3.2. Чтобы получить полиномиальный вероятностный алгоритм проверки простоты числа в смысле определения 3.1, нужно дважды применить приведенный алгоритм. Тогда вероятность ошибки станет меньше .
Доказательство (теоремы 3.2). Из сказанного выше следует, что в доказательстве нуждается только второе утверждение.
Пусть , где
(если такого представления нет, то на шаге 2 будет обнаружена непростота). Если
, то проверка 1 для такого
заведомо обнаружит, что
— составное. Так что достаточно доказать, что не меньше половины тех
, которые взаимно просты с
, обнаруживают непростоту числа.
Обозначим группу через
, группу
— через
. Из китайской теоремы об остатках следует, что группа
изоморфна
(изоморфизм задается естественным образом — вычислением остатков по модулю
и по модулю
).
Рассмотрим множества ,
. Это подгруппы в
и
соответственно (произведение
-х степеней есть
-я степень, обратный к
-й степени есть
-я степень). Так что
— целое число. Более того, отображение
является гомоморфизмом групп, поэтому число прообразов при этом отображении одинаково для всех элементов
.
Очевидно, что (степеней квадратов не больше, чем всех степеней). Поэтому получаем пару невозрастающих цепочек множеств

-
Пусть
или
.
Чтобы пройти проверку 1 в алгоритме, нужно после возведения в
-ю степень получить пару остатков
. Поскольку прообразов каждого числа из
одинаковое количество, вероятность получения пары
не выше
.
-
Пусть
.
Поскольку
— нечетное,
, т.е. найдется такое
,
, что
, а
или
.
Будем доказывать, что с вероятностью не меньше
в этом месте проверка 2 алгоритма обнаружит, что
— составное. В данном случае
, так что нужно понять, с какой вероятностью
не равно
. Рассмотрим два случая.
-
Одно из множеств
,
равно
. Пусть, например,
. В этом случае можно утверждать, что
(остатку
при делении на
соответствует пара остатков
при делении на
).
Можно рассуждать так же, как и в случае 1. С вероятностью не меньше
получим пару остатков
,
.
-
Оба множества
содержат по крайней мере два элемента, пусть
,
. В этом случае может получиться как
, так и
, но вероятность этого не превосходит
.
-
Замечание 3.3. Шаг 2 в алгоритме избыточен, дополнительными соображениями устанавливается, что и для чисел вида проверки 1, 2 дают правильный ответ со значительной вероятностью.
BPP и схемная сложность.
Теорема 3.3. .
Доказательство. Идея доказательства состоит в том, чтобы усилить оценки вероятностей с до
. Число
должно быть настолько мало, чтобы можно было выбрать такое случайное слово
, при котором рассматриваемый предикат из BPP совпадает с
.
Суть здесь в том, что повторение опытов за полиномиальное время экспоненциально уменьшает оценку вероятности ошибки , но не меняет размер входа
. Поэтому можно добиться выполнения неравенства
. При таком соотношении между
и
всегда найдется случайное слово, для которого нет ошибок ни при каких
.
Действительно, вспомним наглядное толкование BPP, данное после теоремы 3.1. Если доля слов , на которых происходит ошибка, для каждого
не превосходит
, то доля тех слов
, на которых происходит ошибка хотя бы для одного
, не превосходит
. Значит, найдутся и такие
, на которых нет ошибок ни при каком
.
Это типичное неконструктивное доказательство существования. Мы доказываем, что вероятность того, что объекта с нужными свойствами не существует, меньше 1. Но это и означает, что хотя бы один такой объект существует.