Вероятностные алгоритмы и класс 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. Но это и означает, что хотя бы один такой объект существует.