Доказательство Адлеманом того, что содержится в показывает, что если существует случайный алгоритм для задачи, который выполняется во времени на входах размера , то также существует детерминированный алгоритм для задачи который запускается за время на входах размера [алгоритм запускает рандомизированный алгоритм на независимых строках случайности. Должна быть случайность для повторного алгоритма, который хорош для всехn Θ ( t ( n ) ⋅ n ) n Θ ( n ) 2 nвозможные входы. Детерминированный алгоритм является неоднородным - он может вести себя по-разному для разных входных размеров. Таким образом, аргумент Адлемана показывает, что - если не заботиться об однородности - рандомизация может только ускорить алгоритмы с коэффициентом, линейным по размеру входных данных.
На каких конкретных примерах рандомизация ускоряет вычисления (насколько нам известно)?
Одним из примеров является проверка полиномиальной идентичности. Здесь вход представляет собой арифметическую схему n-размера, вычисляющую многочлен m-вариации над полем, и задача состоит в том, чтобы выяснить, является ли многочлен тождественно нулевым. Рандомизированный алгоритм может оценивать полином по случайной точке, в то время как лучший детерминированный алгоритм, который мы знаем (и, возможно, лучший из существующих), оценивает полином по многим точкам.
Другим примером является минимальное остовное дерево, где лучшим рандомизированным алгоритмом Каргера-Кляйна-Тарьяна является линейное время (а вероятность ошибки экспоненциально мала!), В то время как лучший детерминированный алгоритм Шазеля выполняется во времени ( - обратная функция Аккермана, поэтому ускорение рандомизации действительно мало). Интересно, что Петти и Рамачандран доказали, что если существует неравномерный детерминированный линейный алгоритм времени для минимального остовного дерева, то также существует единый детерминированный линейный алгоритм времени.
Какие еще примеры? Какие примеры вы знаете, где ускорение рандомизации велико, но это возможно только потому, что мы еще не нашли достаточно эффективных детерминированных алгоритмов?
источник
Ответы:
Я не знаю , является ли рандомизация «должен» или «не должен» помочь, однако, целое испытание на простоту может быть сделано во времени с использованием рандомизированы Миллера-Рабина, в то время, насколько я знаю, самый известный детерминированные алгоритмы ~ о ( п 4 ) при условии , GRH (детерминированный Миллера-Рабина) или ~ о ( п 6 ) безусловно (варианты АКС).O~(n2) O~(n4) O~(n6)
источник
Старый пример - вычисление объема. Учитывая многогранник, описываемый оракулом членства, существует рандомизированный алгоритм, работающий за полиномиальное время для оценки его объема с коэффициентом но ни один детерминированный алгоритм не может даже приблизиться безоговорочно .1+ϵ
Первым примером такой рандомизированной стратегии были Дайер, Фриз и Каннан, а результат твердости для детерминированных алгоритмов - Барани и Фюреди. Алистер Синклер имеет хорошие лекционные заметки по этому вопросу .
Я не уверен, что полностью понимаю «и это не должно» часть вопроса, поэтому я не уверен, что это отвечает всем требованиям.
источник
я не знаю, отвечает ли это на ваш вопрос (или хотя бы его часть). Но в реальных примерах, где рандомизация может обеспечить ускорение, речь идет о задачах оптимизации и связи с теоремой об отсутствии бесплатного обеда ( NFL ) .
Есть статья «Возможно, не бесплатный обед, но, по крайней мере, бесплатная закуска», где показано, что использование алгоритмов рандомизации (оптимизации) может иметь лучшую производительность.
Ссылки:
Резюме о бесплатных обедах (и бесплатных обедах) от David H. Wolpert, Сколько стоит ужин? ( обратите внимание, что теоремы типа НФЛ никогда не указывают фактическую « цену » из-за их типа доказательства)
специально для обобщенной оптимизации (GO):
Наконец, простое (и не очень простое) замечание, почему рандомизация (в той или иной форме) может обеспечить превосходную производительность по сравнению со строго детерминированными алгоритмами.
источник
Наилучшим примером является область, которая в настоящее время считается наилучшими кандидатами на OWF, где, кажется, что каждая популярная OWF, которая готовится, неожиданно имеет рандомизированный субэкспоненциальный алгоритм, в то время как не существует детерминированного субэкспоненциального алгоритма (например, целочисленная факторизация). На самом деле, во многих случаях, вероятно, существует эффективный алгоритм с учетом некоторых советов (криптоанализ).
источник
Если у вас есть алгоритм, использующий рандомизацию, вы всегда можете заменить его детерминированным алгоритмом, использующим псевдослучайные числа: возьмите описание проблемы, вычислите хеш-код, используйте этот хеш-код в качестве начального числа для хорошего генератора псевдослучайных чисел , На практике это действительно то, что может случиться, когда кто-то реализует алгоритм с использованием рандомизации.
Если мы пропустим хеш-код, то разница между этим алгоритмом и алгоритмом, использующим истинную рандомизацию, состоит в том, что я могу предсказать последовательность генерируемых случайных чисел, и я могу создать такую проблему, что предсказанное случайное число, примененное к моей проблеме, всегда будет принять самое худшее решение. Например, для быстрой сортировки с псевдослучайным стержнем я мог бы создать входной массив, в котором псевдослучайный стержень всегда найдет наибольшее возможное значение в массиве. С настоящей случайностью это невозможно.
С помощью хеш-кода мне было бы очень трудно построить проблему, когда псевдослучайные числа приводят к худшим результатам. Я все еще могу предсказать случайные числа, но если я изменю проблему, последовательность псевдослучайных чисел полностью изменится. Тем не менее, было бы почти невозможно доказать, что я не могу построить такую проблему.
источник