Введение

Тип рандомизированного алгоритма

В информатике алгоритм Монте-Карло — это рандомизированный алгоритм, результат работы которого может быть неверным с определённой (обычно небольшой) вероятностью. Два примера таких алгоритмов — алгоритм Каргера — Стейна и алгоритм Монте-Карло для задачи о минимальном наборе обратных рёбер. Название отсылает к казино Монте-Карло в Княжестве Монако, всемирно известному как символ азартных игр. Термин «Монте-Карло» впервые был предложен Николасом Метрополисом в 1947 году. Алгоритмы Лас-Вегаса являются двойственными к алгоритмам Монте-Карло и никогда не возвращают неверный ответ. Однако они могут совершать случайный выбор в процессе своей работы. В результате время выполнения может меняться от запуска к запуску, даже при одинаковых входных данных. Если существует процедура проверки корректности ответа, полученного алгоритмом Монте-Карло, и вероятность получения верного ответа ограничена снизу положительным числом, то с вероятностью один, многократный запуск алгоритма с проверкой результатов в конечном итоге даст верный ответ. То, является ли этот процесс алгоритмом Лас-Вегаса, зависит от того, считается ли завершение с вероятностью один соответствующим определению.

Односторонняя и двусторонняя ошибки

Хотя ответ, возвращаемый детерминированным алгоритмом, всегда ожидается как правильный, это не так для алгоритмов Монте-Карло. Для задач принятия решений эти алгоритмы обычно классифицируются как ложно-смещенные или истинно-смещенные. Ложно-смещенный алгоритм Монте-Карло всегда корректен, когда он возвращает ложь; истинно-смещенный алгоритм всегда корректен, когда он возвращает истину. В то время как это описывает алгоритмы с односторонними ошибками, другие могут не иметь смещения; говорят, что у них двухсторонние ошибки. Ответ, который они предоставляют (истина или ложь), будет неверным или правильным с некоторой ограниченной вероятностью. Например, тест простоты Соловая-Штрассена используется для определения, является ли данное число простым. Он всегда отвечает истиной для простых чисел; для составных чисел он отвечает ложью с вероятностью не менее 1/2 и истиной с вероятностью менее 1/2. Таким образом, ложные ответы алгоритма гарантированно правильны, в то время как истинные ответы остаются неопределенными; такой алгоритм называется 1/2-правильным ложно-смещенным алгоритмом.

Усиление

Для алгоритма Монте-Карло с односторонними ошибками вероятность ошибки может быть уменьшена (а вероятность правильного ответа увеличена) путем k-кратного запуска алгоритма. Рассмотрим еще раз алгоритм Соловая-Штрассена, который выдает правильный ответ с вероятностью 1/2, и в противном случае – ошибочный. Можно запускать этот алгоритм несколько раз, возвращая ложный ответ, если он выдает ошибочный результат хотя бы в одной из k итераций, и в противном случае возвращая истинный. Таким образом, если число простое, то ответ всегда правильный, а если число составное, то ответ будет правильным с вероятностью не менее 1−(1−1/2)k = 1−2−k. Для алгоритмов Монте-Карло с двусторонней ошибкой вероятность ошибки также может быть уменьшена путем k-кратного запуска алгоритма и возврата значения, полученного большинством голосов.

Классы сложности

Класс сложности BPP описывает задачи принятия решений, которые могут быть решены алгоритмами Монте-Карло за полиномиальное время с ограниченной вероятностью двусторонней ошибки, а класс сложности RP описывает задачи, которые могут быть решены алгоритмом Монте-Карло с ограниченной вероятностью односторонней ошибки: если правильный ответ – ложь, алгоритм всегда так и отвечает, но он может ошибочно ответить «ложь» для некоторых случаев, когда правильный ответ – истина. В отличие от этого, класс сложности ZPP описывает задачи, разрешимые алгоритмами Лас-Вегаса с ожидаемым полиномиальным временем работы. ZPP ⊆ RP ⊆ BPP, но неизвестно, различны ли какие-либо из этих классов сложности друг от друга; то есть, алгоритмы Монте-Карло могут обладать большей вычислительной мощностью, чем алгоритмы Лас-Вегаса, но это не доказано. Таким образом, недостаток SO был устранен, и уверенность в решении была достигнута.