Введение

Алгоритм, использующий некоторую степень случайности в своей логике или процедуре. Рандомизированный алгоритм – это алгоритм, использующий некоторую степень случайности в своей логике или процедуре. Обычно такой алгоритм использует равномерно случайные биты в качестве дополнительного входного параметра для управления своим поведением, в надежде добиться хорошей производительности в "среднем случае" при всех возможных вариантах, определяемых случайными битами; таким образом, время работы, выходные данные или и то, и другое являются случайными величинами. Существует различие между алгоритмами, использующими случайный ввод, которые всегда завершаются правильным ответом, но имеют конечное ожидаемое время работы (например, алгоритмы Лас-Вегаса, такие как Quicksort), и алгоритмами, которые могут выдать неверный результат (например, алгоритмы Монте-Карло, такие как алгоритм Монте-Карло для задачи MFAS) или не выдать результат, сигнализируя об ошибке или не завершаясь. В некоторых случаях вероятностные алгоритмы – это единственный практический способ решения задачи. На практике рандомизированные алгоритмы часто аппроксимируются с использованием генератора псевдослучайных чисел вместо истинного источника случайных битов; такая реализация может отклоняться от ожидаемого теоретического поведения и математических гарантий, которые могут зависеть от наличия идеального генератора истинных случайных чисел.

Комплексность вычислений

Теория вычислительной сложности моделирует рандомизированные алгоритмы как вероятностные машины Тьюринга. Рассматриваются алгоритмы Лас-Вегаса и Монте-Карло, и изучаются различные классы сложности. Наиболее базовый рандомизированный класс сложности – RP, который представляет собой класс задач принятия решений, для которых существует эффективный (полиномиальный) рандомизированный алгоритм (или вероятностная машина Тьюринга), распознающий отрицательные экземпляры с абсолютной достоверностью и распознающий положительные экземпляры с вероятностью не менее 1/2. Дополнительным классом к RP является co-RP. Классы задач, для которых существуют (возможно, не завершающиеся) алгоритмы с полиномиальным средним временем работы, выдающие всегда верный результат, относят к ZPP. Класс задач, для которых допустимо ошибочно идентифицировать как положительные, так и отрицательные экземпляры, называется BPP. Этот класс является рандомизированным аналогом P, то есть BPP представляет класс эффективных рандомизированных алгоритмов.

Сортировка

Quicksort был изобретён Тони Хоаром в 1959 году и опубликован в 1961 году. В том же году Хоар опубликовал алгоритм quickselect, который находит медиану списка за линейное ожидаемое время. Вопрос о существовании детерминированного алгоритма с линейной временной сложностью оставался открытым до 1973 года.

Теория чисел

В 1917 году Генри Кэборн Поклинтон представил рандомизированный алгоритм, известный как алгоритм Поклинтона, для эффективного нахождения квадратных корней по модулю простых чисел. В 1970 году Элвин Берлекамп представил рандомизированный алгоритм для эффективного вычисления корней многочлена над конечным полем. В 1977 году Роберт М. Соловай и Волкер Страссен открыли рандомизированный тест простоты полиномиального времени (то есть определение, является ли число простым). Вскоре после этого Майкл О. Рабин показал, что тест простоты Миллера 1976 года также можно преобразовать в рандомизированный алгоритм полиномиального времени. В то время не было известно детерминированных алгоритмов проверки простоты, работающих за полиномиальное время.

Структуры данных

Одной из самых ранних рандомизированных структур данных является хеш-таблица, которая была представлена в 1953 году Хансом Петером Луном в IBM. Хеш-таблица Луна использовала цепочки для разрешения коллизий и также была одним из первых применений связных списков. Первый опубликованный анализ был выполнен Конхаймом и Вайсом в 1966 году. Ранние работы по хеш-таблицам либо предполагали доступ к полностью случайной хеш-функции, либо предполагали, что сами ключи являются случайными, что, как они показали, можно использовать для реализации хеш-таблиц с цепочками с постоянным ожидаемым временем выполнения операции. Ранние работы по рандомизированным структурам данных также выходили за рамки хеш-таблиц. В 1970 году Бертон Говард Блум представил приближенную структуру данных для проверки принадлежности, известную как фильтр Блума. В 1989 году Раймунд Зайдель и Сесилия Р. Арагон представили рандомизированное сбалансированное дерево поиска, известное как треп. В том же году Уильям Пью представил другое рандомизированное дерево поиска, известное как список пропусков.

Неявные применения в комбинаторике

До популяризации рандомизированных алгоритмов в информатике Пол Эрдош популяризировал использование рандомизированных построений как математического метода для доказательства существования математических объектов. Этот метод получил название вероятностного метода. Эрдош впервые применил вероятностный метод в 1947 году, использовав простое рандомизированное построение для доказательства существования графов Рамзи. В 1959 году он использовал гораздо более сложный рандомизированный алгоритм для доказательства существования графов с большой длиной окружности и хроматическим числом.

Где случайность помогает

Когда модель вычислений ограничена машинами Тьюринга, в настоящее время остается открытым вопрос, позволяет ли возможность случайного выбора решать некоторые задачи за полиномиальное время, которые не могут быть решены за полиномиальное время без этой возможности; это вопрос о том, верно ли, что P = BPP. Однако в других контекстах существуют конкретные примеры задач, где рандомизация обеспечивает существенные улучшения. Исходя из первоначального мотивационного примера: для экспоненциально длинной строки из 2k символов, состоящей наполовину из 'a' и наполовину из 'b', машине с произвольным доступом требуется 2k-1 обращений в худшем случае для поиска индекса 'a'; если ей разрешено делать случайный выбор, она может решить эту задачу в ожидаемом полиномиальном количестве обращений. Естественным способом выполнения численных вычислений во встраиваемых системах или киберфизических системах является предоставление результата, который с высокой вероятностью приближается к правильному (или, что эквивалентно, вероятно приблизительно корректное вычисление (PACC)). Сложная проблема, связанная с оценкой ошибки расхождения между приближенным и корректным вычислением, может быть эффективно решена с помощью рандомизации. В области сложности коммуникаций равенство двух строк может быть проверено с определенной надежностью, используя биты связи с рандомизированным протоколом. Любой детерминированный протокол требует битов, если необходимо защищаться от сильного противника. Объем выпуклого тела может быть оценен рандомизированным алгоритмом с произвольной точностью за полиномиальное время. Барьяни и Фюреди показали, что ни один детерминированный алгоритм не может сделать то же самое. Это верно безусловно, то есть без опоры на какие-либо предположения теории сложности, при условии, что к выпуклому телу можно обращаться только как к «черному ящику». Более сложный теоретический пример, где случайность, по-видимому, помогает, — это класс IP. IP состоит из всех языков, которые могут быть приняты (с высокой вероятностью) в результате полиномиально длинного взаимодействия между всемогущим доказывающим и верификатором, реализующим алгоритм BPP. IP = PSPACE. Однако, если требуется, чтобы верификатор был детерминированным, то IP = NP. В сети химических реакций (конечном наборе реакций, таких как A+B → 2C + D, происходящих с конечным числом молекул), возможность когда-либо достичь заданного целевого состояния из начального состояния является разрешимой, в то время как даже приближение вероятности достижения заданного целевого состояния (с использованием стандартной вероятности, основанной на концентрации, для определения следующей реакции) является неразрешимой. В частности, ограниченную машину Тьюринга можно смоделировать с произвольно высокой вероятностью правильной работы на протяжении всего времени, только если используется случайная сеть химических реакций. При простой недетерминированной сети химических реакций (любая возможная реакция может произойти следующей) вычислительная мощность ограничена примитивно рекурсивными функциями.