Иерархия сложностных классов
Класс PSPACE.
Как уже говорилось, в этот класс попадают те функции, которые могут быть вычислены на МТ, использующей память, ограниченную полиномом от длины входного слова. Класс PSPACE также можно описать, используя игры.
Теорема 4.2. тогда и только тогда, когда существует такая игра с полиномиальным от длины входного слова числом ходов и полиномиально вычислимым результатом, что
Б имеет выигрышную стратегию
.
Доказательство Покажем, что язык, определяемый игрой, принадлежит
. Пусть число ходов ограничено
. Определим по индукции набор машин Тьюринга
для
. Каждая
по заданному началу игры
длины
определяет наличие выигрышной стратегии у Б. Последней в этом ряду машине
нужно просто вычислить предикат
. Машина
перебирает все возможные варианты
-го хода и консультируется с
по поводу окончательных результатов игры. Ее оценка игры составляется очень просто: если текущий ход у Б, то достаточно найти один ход, при котором
гарантирует выигрышную стратегию для Б. Если текущий ход у Ч, то при всех вариантах
должна обнаружить выигрышную стратегию для Б. Машина
определяет наличие выигрышной стратегии для Б в самом начале игры и для ее работы нам нужно использовать всю последовательность машин
. Но каждая из этих машин использует небольшую (полиномиально ограниченную) память, так что весь процесс потребует лишь полиномиально ограниченной памяти.
Пусть есть машина
, распознающая вхождение слова в язык
на полиномиальной памяти. Во-первых, заметим, что вычисление на памяти
бессмысленно проводить дольше, чем время
(все начнет повторяться после того, как мы исчерпаем все состояния нашей системы, а их не более чем
, где
— соответственно множество состояний управляющего устройства и алфавит рассматриваемой МТ). Поэтому можно считать без ограничения общности, что время работы машины
ограничено
, где
.
Чтобы было проще описывать игру, потребуем, чтобы после завершения вычисления МТ сохраняла без изменений достигнутое состояние.
Игра заключается в следующем. Белые утверждают, что ответ на входном слове равен "да", а черные хотят это проверить. Белые своим первым ходом декларируют состояние машины
(строка, записанная на ленте, положение читающей головки, состояние управляющего устройства) после
тактов. Черные своим ходом выбирают один из промежутков: от начала до
-го такта или от
-го такта до конца. Белые декларируют состояние
в середине этого промежутка. Далее все повторяется: Ч выбирает одну из половинок, Б декларирует состояние
в середине выбранной половинки и т.д.
Игра заканчивается, когда длина промежутка становится равной 1. Результат определяется так: для обоих концов этого промежутка в процессе игры были названы состояния . Если состояние правого конца получается из состояния левого конца за один такт работы
, то Б выиграли, иначе выиграли Ч.
Если ответ на слове
действительно "да", то белым нужно все время говорить правду, это гарантирует им выигрыш.
Если ответ на слове
— "нет", то при любом ходе белых на одном из промежутков (или на обоих) будет содержаться ошибка. Ч должен указывать каждый раз именно этот промежуток.
Задача 4.1. Докажите, что класс языков, распознаваемых недетерминированными машинами, работающими на памяти , содержится в классе языков, распознаваемых детерминированными машинами, работающими на памяти
.
В качестве следствия теоремы 4.2 получаем включения всех определенных выше классов ,
в класс
. Взаимное соотношение этих классов можно изобразить диаграммой включений, показанной ниже. На этой диаграмме от большего класса к меньшему можно пройти, двигаясь по стрелкам. Внизу располагается класс
, отвечающий играм с 0 ходов, затем идут дополняющие друг друга классы, отвечающие играм с конечным числом ходов (для одного хода это NP и co-NP, для двух ходов —
и
и т.д.). Завершается эта диаграмма классом
, который определяется произвольными играми с одним естественным условием — время игры должно быть полиномиально ограничено размером входного слова. Мы уже доказали все включения, изображенные на этой диаграмме. Ни про одно из включений, следующих из этой диаграммы, неизвестно, является ли оно строгим. Быть может, скажем,
. С другой стороны, возможно и так, что
, где
обозначает (не рассматривавшийся нами) класс языков, вычислимых за экспоненциальное время
. Впрочем, наиболее популярна гипотеза о том, что все включения, изображенные на диаграмме — строгие.
Задача 4.2. Машина Тьюринга с оракулом
— это МТ с дополнительной оракульной лентой, куда она (машина) может записывать слова, а затем за один такт работы проверять, принадлежит ли записанное на оракульной ленте слово языку
. По двум сложностным классам
и
можно определить класс
таких языков, которые распознаются машинами из класса
с оракулами из
.
Докажите, что .
В классе существуют полные задачи (относительно полиномиальной сводимости). Простейший вариант получается применением предыдущей теоремы.
Задача . Задается предикатом
есть истинная булева формула с кванторами (True Quantified Boolean Formula), т.е. формула вида
![\mathsf{Q}_1\, y_1\dots\mathsf{Q}_n\, y_n F(y_1,\dots,y_n),](/sites/default/files/tex_cache/7c966e2f2fa0a2ab9b60761684bbe0f0.png)
![y_i\in\cb](/sites/default/files/tex_cache/513bba4dda626322f44c9d3a5165a386.png)
![F](/sites/default/files/tex_cache/800618943025315f869e4e1f09471012.png)
![\mathsf{Q}_i](/sites/default/files/tex_cache/03b98793584ad918328c186204b0cf66.png)
![\forall](/sites/default/files/tex_cache/8b141f94d4371ad99206ca92a896986d.png)
![\exists](/sites/default/files/tex_cache/32ff223f4b9214ce44a3f7cac5abe8bf.png)
![\left(\forall\, y_1\: A(y_1)\right)\double=\left(A(0)\wedge A(1)\right)](/sites/default/files/tex_cache/f54c5c5e6a80b0daee6d2aa17470f36d.png)
![\left(\exists\, y_1\: A(y_1)\right)=\left(A(0)\vee A(1)\right)](/sites/default/files/tex_cache/ad333942eaea79dadc1638fc1d1afe78.png)
Теорема 4.3. -полна.
Доказательство. Построим сведение любого языка к задаче c TQBF. Для этого превратим МТ, вычисляющую результат игры (предикат
), в схему, а ходы игроков закодируем булевыми переменными. Тогда наличие выигрышной стратегии у белых задается условием
![\exists\, w^1_1\: \exists\, w^2_1\: \dots \exists\, w^{p(|x|)}_1 \:\forall\, b^1_1\: \dots\: \forall\, b^{p(|x|)}_1\: S(x,w^1_1,w^2_1,\dots),](/sites/default/files/tex_cache/bacb3efccec7715d9303e091711bf56c.png)
![S(\cdot)](/sites/default/files/tex_cache/af4b9138e44856ee53ae0faf21377139.png)
Чтобы превратить в булеву формулу, добавим новые переменные
(значение, вычисленное при
-м присваивании в схеме) и заменим
на формулу вида
![\exists\, y_1,\dots, \exists\, y_{\text{размер схемы}}\: \left(y_1\Leftrightarrow R_1\right)\wedge\dots \wedge\left(y_{s}\Leftrightarrow R_s\right)\wedge y_s,](/sites/default/files/tex_cache/100f1c5ebfe9da9c92f36ae0b569cdc0.png)
![s](/sites/default/files/tex_cache/03c7c0ace395d80182db07ae2c30f034.png)
![R_i](/sites/default/files/tex_cache/c42952440ffcf8129a1bedeac4773415.png)
![i](/sites/default/files/tex_cache/865c0c0b4ab0e063e5caa3387c1a8741.png)
После этой подстановки получим квантифицированную булеву формулу, которая истинна в точности для .