Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция NP_8. Вероятностные алгоритмы..doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
172.03 Кб
Скачать

Лекция 8. Вероятностные алгоритмы.

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

В вероятностных Машинах Тьюринга (ВМТ), как и в недетерминированных, имеются состояния, из которых возможен переход в несколько (больше одного) состояний. Отличие состоит в том, что состояние, куда ВМТ делает переход, определяется результатом некоторого случайного процесса («подбрасывания монеты»).

Хотя для ВМТ нельзя сказать, какой в точности ответ она выдаст, можно определить вероятность того или иного ответа.

Вероятностные полиномиальные алгоритмы:

  1. Алгоритмы с односторонней ошибкой

RP (Random Polynomial time):

Если ответ «Нет», алгоритм с вероятностью 1 выдает ответ «Нет»;

Если ответ «Да», алгоритм с вероятность больше 2/3 выдает ответ «Да»

Co-RP

Если ответ «Да», алгоритм с вероятностью 1 выдает ответ «Да»;

Если ответ «Нет», алгоритм с вероятность больше 2/3 выдает ответ «Нет»

  1. Алгоритмы с двусторонней ошибкой.

Если ответ «Да», алгоритм с вероятностью больше 2/3 выдает ответ «Да»;

Если ответ «Нет», алгоритм с вероятность больше 2/3 выдает ответ «Нет»

  1. Алгоритмы с нулевой ошибкой.

Если ответ «Да», алгоритм с вероятностью больше 2/3 выдает ответ «Да»;

В остальных случаях алгоритм говорит «Не знаю».

  1. Алгоритмы Монте-Карло.

В алгоритме Монте-Карло случайным образом выбираются некоторые значения и с этими значениями производятся вычисления.

Алгоритмы Монте Карло всегда выдают какие-либо результаты, однако вероятность того, что результат правильный, возрастает при увеличении времени работы алгоритма. Иногда такие алгоритмы возвращают неправильные ответы.

Алгоритм называется р-правильным, если он возвращает правильный ответ с вероятностью р (1/2 <р <1).

Если число правильных ответов на данном входе превышает единицу, то алгоритм Монте-Карло называется стойким, если возвращаемый им правильный ответ всегда один и тот же.

Результаты алгоритма Монте-Карло можно улучшить двумя способами. Во-первых, можно увеличить время его работы. Во-вторых, можно повторять его несколько раз. Вторая возможность реализуется только, если алгоритм стойкий. В этом случае алгоритм можно вызывать много раз и выбирать тот ответ, который встречается чаще всего.

Пример 1. Алгоритм Монте-Карло проверки числа на простоту.

Задача проверки простоты числа - пример задачи, которую относили к классу NP. Лишь в 2002 г. был найден полиномиальный алгоритм и тем самым, доказано, что задача относится к классу Р. Тест Агравала — Каяла — Саксены (или тест AKS) — это полиномиальный детерминированный тест простоты чисел, предложенный индийскими учёным Маниндрой Агравалом (англ.) и его двумя студентам. Однако сложность предложенного алгоритма , (n – тестируемое число), поэтому на практике он практически не используется. В настоящее время разрабатываются модификации теста с меньшей сложностью.

Задача факторизации натурального числа – разложения на простые множители является более сложной задачей. На настоящий момент неизвестны полиномиальные алгоритмы факторизации чисел, хотя и не доказано, что таких алгоритмов не существует. На сегодняшний момент задача относится к классу NP. На предполагаемой большой вычислительной сложности задачи факторизации базируется криптосистема RSA и некоторые другие. Факторизация с полиномиальной сложностью возможна на квантовом компьютере с помощью алгоритма Шора.

Детерминированный алгоритм проверки числа на простоту (экспоненциальный): Выбираем все числа от 2 до и делим n на эти числа, пока не будет найден делитель:

begin;

i :=2;

j:= true;

while (i*i < n and j ) do

if (n mod I =0) then j := false

else i:=i+1;

if j then writeln («Это простое число»)

else writeln («Это составное число»);

end;

Время работы алгоритма . Асимптотическая сложность алгоритма – экспоненциальная относительно битовой длины n.

Пример: для чисел , сложность для больших чисел .