В теории сложности и теории вычислимости машина оракула — это абстрактная машина , используемая для изучения проблем принятия решений . Ее можно представить как машину Тьюринга с черным ящиком , называемым оракулом , который способен решать определенные проблемы за одну операцию. Проблема может быть любого класса сложности . Можно использовать даже неразрешимые проблемы , такие как проблема остановки .
Машину оракула можно представить как машину Тьюринга, подключенную к оракулу . Оракул в этом контексте — это сущность, способная решать некоторую задачу, например, задачу принятия решения или задачу функции . Задача не обязательно должна быть вычислимой; оракул не считается машиной Тьюринга или компьютерной программой. Оракул — это просто « черный ящик », способный выдавать решение для любого экземпляра заданной вычислительной задачи:
Машина оракула может выполнять все обычные операции машины Тьюринга, а также может запрашивать оракул, чтобы получить решение для любого экземпляра вычислительной задачи для этого оракула. Например, если проблема является проблемой принятия решения для множества A натуральных чисел, машина оракула предоставляет оракулу натуральное число, и оракул отвечает «да» или «нет», указывая , является ли это число элементом A.
Существует много эквивалентных определений оракульных машин Тьюринга, как обсуждается ниже. Представленное здесь определение взято из van Melkebeek (2003, стр. 43).
Машина-оракул, как и машина Тьюринга, включает в себя:
Помимо этих компонентов, машина оракула также включает в себя:
Время от времени машина оракула может входить в состояние ASK. Когда это происходит, в одном вычислительном шаге выполняются следующие действия:
Таким образом, эффект перехода в состояние ASK заключается в получении за один шаг решения экземпляра проблемы, записанного на ленте оракула.
Существует много альтернативных определений, представленных выше. Многие из них специализированы для случая, когда оракул решает проблему принятия решения. В этом случае:
Эти определения эквивалентны с точки зрения вычислимости Тьюринга: функция вычислима оракулом из данного оракула при всех этих определениях, если она вычислима оракулом при любом из них. Однако определения не эквивалентны с точки зрения вычислительной сложности. Определение, такое как определение ван Мелкебека, использующее ленту оракула, которая может иметь свой собственный алфавит, требуется в общем случае.
Класс сложности задач принятия решений , решаемых алгоритмом из класса A с оракулом для языка L, называется A L . Например, P SAT — это класс задач, решаемых за полиномиальное время детерминированной машиной Тьюринга с оракулом для проблемы булевой выполнимости . Обозначение A B можно расширить до множества языков B (или класса сложности B), используя следующее определение:
Когда язык L является полным для некоторого класса B, то A L =A B при условии, что машины в A могут выполнять сокращения, используемые в определении полноты класса B. В частности, поскольку SAT является NP-полным относительно сокращений за полиномиальное время, P SAT =P NP . Однако, если A = DLOGTIME , то A SAT может не равняться A NP . (Определение, данное выше, не является полностью стандартным. В некоторых контекстах, таких как доказательство теорем об иерархии времени и пространства , более полезно предположить, что абстрактная машина, определяющая класс, имеет доступ только к одному оракулу для одного языка. В этом контексте не определяется, если класс сложности не имеет никаких полных проблем относительно сокращений, доступных для .)
Понятно, что NP ⊆ P NP , но вопрос о том, равны ли NP NP , P NP , NP и P , остается в лучшем случае предварительным. Считается, что они различны, и это приводит к определению полиномиальной иерархии .
Машины Oracle полезны для исследования взаимосвязи между классами сложности P и NP , рассматривая взаимосвязь между P A и NP A для оракула A. В частности, было показано, что существуют языки A и B, такие что P A = NP A и P B ≠ NP B . [4] Тот факт, что вопрос P = NP релятивизирует оба способа, рассматривается как доказательство того, что ответить на этот вопрос сложно, потому что метод доказательства, который релятивизирует (т. е. не зависит от добавления оракула), не ответит на вопрос P = NP. [5] Большинство методов доказательства релятивизируют. [6]
Можно рассмотреть случай, когда оракул выбирается случайным образом из всех возможных оракулов (бесконечное множество). В этом случае было показано, что с вероятностью 1 P A ≠NP A . [7] Когда вопрос истинен для почти всех оракулов, говорят, что он истинен для случайного оракула . Такой выбор терминологии оправдан тем фактом, что случайные оракулы поддерживают утверждение с вероятностью только 0 или 1. (Это следует из закона Колмогорова «ноль-один »). Это лишь слабое доказательство того, что P ≠ NP, поскольку утверждение может быть истинным для случайного оракула, но ложным для обычных машин Тьюринга; [ оригинальное исследование? ] например, IP A ≠ PSPACE A для случайного оракула A, но IP = PSPACE . [8]
Машина с оракулом для проблемы остановки может определить, остановятся ли конкретные машины Тьюринга на определенных входных данных, но она не может определить, в общем случае, остановятся ли машины, эквивалентные ей самой. Это создает иерархию машин, каждая из которых имеет более мощный оракул остановки и еще более сложную проблему остановки. Эту иерархию машин можно использовать для определения арифметической иерархии . [9]
В криптографии оракулы используются для аргументации в пользу безопасности криптографических протоколов, где используется хэш-функция . Снижение безопасности для протокола дается в случае, когда вместо хэш-функции случайный оракул отвечает на каждый запрос случайным, но последовательным образом; предполагается, что оракул доступен всем сторонам, включая злоумышленника, как и хэш-функция. Такое доказательство показывает, что если злоумышленник не решит сложную проблему, лежащую в основе снижения безопасности, он должен использовать некоторое интересное свойство хэш-функции, чтобы взломать протокол; он не может рассматривать хэш-функцию как черный ящик (т. е. как случайный оракул).
{{cite book}}
: CS1 maint: DOI неактивен по состоянию на ноябрь 2024 г. ( ссылка )