В теории вычислительной сложности P/poly — это класс сложности , представляющий проблемы, которые могут быть решены с помощью небольших схем. Точнее, это набор формальных языков, которые имеют семейства схем полиномиального размера. Его также можно эквивалентно определить в терминах машин Тьюринга с советами , дополнительной информацией, поставляемой машине Тьюринга вместе с ее входными данными, которая может зависеть от длины входных данных, но не от самих входных данных. В этой формулировке P/poly — это класс задач принятия решений , которые могут быть решены полиномиальной машиной Тьюринга со строками советов длины, полиномиальной по размеру входных данных. [1] [2] Эти два различных определения делают P/poly центральным для сложности схем и неоднородной сложности .
Например, популярный тест Миллера-Рабина на простоту можно сформулировать как алгоритм P/poly : «совет» — это список значений-кандидатов для проверки. Можно заранее вычислить список значений таким образом, что каждое составное n -битное число будет наверняка иметь свидетель a в списке. [3] Например, чтобы правильно определить простоту 32-битных чисел, достаточно проверить . [4] [5] Существование коротких списков свидетелей-кандидатов следует из того факта, что для каждого составного n три из четырех значений-кандидатов успешно определяют, что n является составным. Из этого следует простой аргумент подсчета, аналогичный аргументу в доказательстве, приведенном ниже, показывающий, что существует подходящий список значений-кандидатов для каждого размера входных данных, и, что более важно, что большинство достаточно длинных списков значений-кандидатов будут работать правильно, хотя поиск списка, который гарантированно будет работать, может быть затратным. [3]
P/poly , в отличие от других классов полиномиального времени, таких как P или BPP , обычно не считается практическим классом для вычислений. Действительно, он содержит все неразрешимые унарные языки , ни один из которых не может быть решен в общем случае реальными компьютерами. С другой стороны, если длина входных данных ограничена относительно небольшим числом, а строки советов короткие, его можно использовать для моделирования практических алгоритмов с отдельной дорогостоящей фазой предварительной обработки и быстрой фазой обработки, как в примере Миллера–Рабина.
Формальное определение
Класс сложности P/poly можно определить в терминах SIZE следующим образом:
где — множество задач принятия решений , которые могут быть решены семействами схем, имеющими не более вентилей.
В качестве альтернативы можно определить с помощью машин Тьюринга, которые «принимают советы». Такая машина имеет для каждого n строку советов , которую ей разрешено использовать в своих вычислениях всякий раз, когда вход имеет размер n . Чтобы визуализировать эту эквивалентность, представьте, что совет для каждого n — это описание булевой схемы, имеющей n входов, и машина Тьюринга оценивает эту булеву схему на входах длины n .
Пусть будут функциями. Класс языков, разрешимых за время T(n) машинами Тьюринга с советом, обозначаемый , содержит каждый язык L такой, что существует последовательность строк с и TM M, удовлетворяющая
для каждого , где на входе машина M работает не более шагов. [6]
Важность P/poly
P/poly является важным классом по нескольким причинам. Для теоретической информатики существует несколько важных свойств, которые зависят от P/poly :
Доказательство: Рассмотрим язык L из PSPACE . Известно, что существует интерактивная система доказательства для L , где действия доказывающего могут быть выполнены машиной PSPACE . По предположению, доказывающий может быть заменен схемой полиномиального размера. Следовательно, L имеет протокол MA : Мерлин отправляет схему в качестве доказательства, а Артур может сам смоделировать протокол IP без какой-либо дополнительной помощи.
Если P #P ⊆ P/poly , то P #P = MA . [8] Доказательство аналогично предыдущему, основано на интерактивном протоколе для перманента и #P-полноте перманента .
Если EXPTIME ⊆ P/poly , то (теорема Мейера) даже EXPTIME = MA .
Если NEXPTIME ⊆ P/poly , то NEXPTIME = EXPTIME , даже NEXPTIME = MA . Наоборот, NEXPTIME = MA подразумевает NEXPTIME ⊆ P/poly [9]
Если EXP NP ⊆ P/poly , то (Бурман, Хомер) [10]
Известно, что MA EXP , экспоненциальная версия MA , не содержится в P/poly .
Доказательство: Если MA EXP ⊆ P/poly , то PSPACE = MA (см. выше). При заполнении EXPSPACE = MA EXP , поэтому EXPSPACE ⊆ P /poly , но это можно доказать ложным с помощью диагонализации.
Одной из самых интересных причин, по которой P/poly важен, является свойство, что если NP не является подмножеством P/poly , то P ≠ NP . Это наблюдение было в центре многих попыток доказать P ≠ NP . Известно, что для случайного оракула A , NP A не является подмножеством P A /poly с вероятностью 1. [1]
P/poly также используется в области криптографии . Безопасность часто определяется «против» противников P/poly . Помимо включения большинства практических моделей вычислений, таких как BPP , это также допускает возможность того, что противники могут выполнять тяжелые предварительные вычисления для входных данных до определенной длины, как при построении радужных таблиц .
Вероятностный полином с ограниченной ошибкой содержится в P/poly
Теорема Адлемана утверждает, что BPP ⊆ P/poly , где BPP — это множество задач, решаемых рандомизированными алгоритмами с двусторонней ошибкой за полиномиальное время. Более слабый результат был первоначально доказан Леонардом Адлеманом , а именно, что RP ⊆ P/poly ; [12] и этот результат был обобщен до BPP ⊆ P/poly Беннеттом и Гиллом. [ 13]
Варианты теоремы показывают, что BPL содержится в L/poly , а AM содержится в NP/poly .
Доказательство
Пусть L — язык в BPP , а M ( x , r ) — алгоритм с полиномиальным временем, который определяет L с ошибкой ≤ 1/3 (где x — входная строка, а r — набор случайных битов).
Постройте новую машину M ' ( x , R ), которая запускает M 48 n раз и принимает большинство голосов по результатам (где n — длина входных данных, а R — последовательность из 48 n независимо случайных r s). Таким образом, M ' также является полиномиальной и имеет вероятность ошибки ≤ 1/ e n по границе Чернова (см. BPP ). Если мы можем исправить R, то мы получим алгоритм, который является детерминированным.
Если определено как , то имеем:
Размер входных данных равен n , поэтому существует 2 n возможных входных данных. Таким образом, по объединенной границе вероятность того, что случайное R плохо по крайней мере для одного входного значения x, равна
Другими словами, вероятность того, что R плохо для некоторого x, меньше 1, поэтому должно быть R, которое хорошо для всех x . Возьмем такое R в качестве строки-совета в нашем алгоритме P/poly .
Ссылки
^ ab Lutz, Jack H.; Schmidt, William J. (1993), «Размер схемы относительно псевдослучайных оракулов», Theoretical Computer Science , 107 (1): 95– 119, doi :10.1016/0304-3975(93)90256-S, MR 1201167
^ Конспект лекций по вычислительной сложности Питера Бро Милтерсена (PDF) , архивировано из оригинала (PDF) 23.02.2012 , извлечено 25.12.2009
^ ab Goldreich, Oded ; Wigderson, Avi (2002), "Дерандомизация, которая редко бывает неправильной, исходя из краткого совета, который обычно хорош", в Rolim, José DP; Vadhan, Salil P. (ред.), Randomization and Approximation Techniques, 6th International Workshop, RANDOM 2002, Cambridge, MA, USA, 13-15 сентября 2002 г., Proceedings , Lecture Notes in Computer Science, т. 2483, Springer, стр. 209–223 , doi :10.1007/3-540-45726-7_17, ECCC TR02-39
^ Колдуэлл, Крис, «2.3: Сильная вероятная простота и практический тест», Нахождение простых чисел и доказательство простоты
^ Йешке, Герхард (1993), «О сильных псевдопростых числах с несколькими основаниями», Математика вычислений , 61 (204): 915–926 , doi : 10.2307/2153262 , MR 1192971; см. стр. 926.
^ Заметка о коллапсе Карпа-Липтона для экспоненциальной иерархии
^ Цзинь-И Цай. Лекция 11: P/poly, разреженные множества и теорема Махани. CS 810: Введение в теорию сложности. Университет Висконсин–Мэдисон. 18 сентября 2003 г.