Я думаю, что вопрос, который здесь задают, примерно такой: «Есть ли смысл, в котором мы можем заменить последовательность случайных битов в алгоритме битами, детерминированно взятыми из подходящей длинной колмогоровской случайной строки? » ответ! (Краткий ответ: «Да, но только если вы сначала увеличите вероятность ошибки»)
Да...
Мы, конечно, можем что-то сказать здесь. Пусть - некоторый язык, и пусть - алгоритм, который принимает в качестве входных данных и случайную строку (равномерное распределение по ) st . Другими словами, - это алгоритм, который ошибается с вероятностью не более .A x r ∈ U f ( | x | ) { 0 , 1 } f ( | x | ) Pr [ A ( x , r ) = L ( x ) ] > 1 - ϵ ( x ) A ϵ ( ⋅ )LAxr∈Uf(|x|){0,1}f(|x|)Pr[A(x,r)=L(x)]>1−ϵ(x)Aϵ(⋅)
Теперь обратите внимание, что если дает неправильный ответ на т. Е. , это дает нам некоторые средства описания , в частности, мы можем описать его как -я строка, которая заставляет ошибаться наДля этого мы просто создаем машину, в которой жестко заданы , , и бит , и просто перечисляем варианты из пока не найдет выбор такой, что .A(x,r)A(x,r)≠L(x)riAx.xAib=1⟺x∈Lr′{0,1}f(|x|)ir′A(x,r′)≠b
Итак, теперь, когда мы знаем, что можем использовать неправильный выбор случайной строки в описании, давайте рассмотрим некоторые условия, достаточные для превращения нашего описания в сжатие. Чтобы описать , нам требуется достаточно битов для описания , , , а затем кода для нашей процедуры (код для и описанная нами процедура), дающих в качестве описания длиныrrxibA
|x|+|i|+O(1)=|x|+log2(2f(|x|)ϵ(x))+O(1)=|x|+f(|x|)−log(1/ϵ(x))+O(1).
Напомним, что это длина , так что это сжатие если например, когда .rf(|x|)r
log(1/ϵ(x))=|x|+ω(1),
ϵ(x)=1/22|x|
Наконец, обратите внимание, что если бы была случайной строкой Колмогорова, то у нас не могло бы быть такого сжатия, так как, если вероятность ошибки достаточно мала, случайная строка Колмогорова вместо последовательности случайных битов заставит ответить правильно!rAA
Обратите внимание, что единственное, что мы используем в - это малая вероятность ошибки. Нам не важно, имеет ли очень длительное время выполнения, или если имеет одну или две односторонние ошибки.AAA
Возвращаясь к вопросу о (или или ), это говорит о том, что до тех пор, пока мы усиливаем вероятность ошибок наших алгоритмов, мы можем использовать случайные последовательности Колмогорова вместо их случайных битов.RPcoRPBPP
... Но только если мы усилим в первую очередь.
Следующим вопросом может быть «могу ли я сделать это без усиления вероятности ошибки?» Рассмотрим следующий алгоритм который решает и имеет вероятность ошибки .{ 0 , 1 } * 1 / 2 лA{0,1}∗1/2n
На входе :x
- Создать строкуr∈{0,1}n
- Если , отклонить.r=x
- Принять.
Обратите внимание, что для каждого выбора существует некоторый выбор такой что ошибается на , а именно выбор который равен , поэтому мы не можем заменить случайную последовательность битов, используемых случайной строкой Колмогорова без усиления это вероятность ошибки!x A x r x ArxAxr xA
Примечание об источнике: я не уверен, является ли что-то из этого новым, но я включил первый аргумент в мою рецензию на мой квалификационный экзамен, который в конечном итоге будет доступен онлайн после того, как я закончу его пересматривать.