Московский государственный университет имени М.В.Ломоносова
Опубликован: 15.03.2007 | Доступ: свободный | Студентов: 613 / 26 | Оценка: 5.00 / 4.50 | Длительность: 19:30:00
Специальности: Программист
Лекция 4:

Иерархия сложностных классов

< Лекция 3 || Лекция 4: 12 || Лекция 5 >
Аннотация: В лекции рассматривается понятие класса дополнений, приводится теорема Лаутемана и ее доказательство, дается описание класса PSPACE и машины Тьюринга с оракулом, рассматривается задача TQBF.

Иерархия сложностных классов

Напомним, что мы отождествляем языки и предикаты, как описано в "Что такое алгоритм?" . В частности, запись x\in L означает L(x)=1.

Определение 4.1. Пусть \mathrm A — некоторый класс языков. Класс дополнений \text{co-}\mathrm A составляют дополнения ко всем языкам из \mathrm A. Формально

L\in\mathrm A \:\Longleftrightarrow\: (\cb^*\setminus L)\in \text{co-}\mathrm A.

Непосредственно из определений классов P, BPP, PSPACE следует, что \P=\text{co-}\P, \BPP=\text{co-}\BPP, \PSPACE=\text{co-}\PSPACE.

Игры, в которые играют машины.

Рассмотрим игру, в которую играют два игрока, будем их называть белые (Б) и черные (Ч). Игрокам сообщается некоторое слово x, и они делают ходы по очереди ( w_1 — первый ход белых, b_1 — первый ход черных и т.д.). Каждый ход может быть описан словом длины p(|x|), где p(\cdot) — некоторый полином. Игра завершается после некоторого, заранее заданного, числа ходов1. На самом деле правило завершения игры может быть и сложнее. Если есть верхняя оценка на число ходов, то можно всегда дополнить число ходов до этой оценки, никак не учитывая дополнительные ходы при подведении результата игры. Результат игры описывается некоторым предикатом W(x,w_1,b_1,\dots)\in\P, истинность которого означает, что выиграли белые (ничьих не бывает, так что ложность W означает, что выиграли черные). Предикат W зависит от исходного слова и ходов, сделанных игроками: w_1,\dots — белыми, b_1,\dots — черными. Поскольку \P замкнут относительно дополнений, предикат B(\cdot)=\neg W(\cdot), утверждающий выигрыш черных, также принадлежит \P.

Отсутствие ничьих и конечность числа ходов гарантируют при заданном x существование выигрышной стратегии либо для белых, либо для черных. (Формальное доказательство легко получается индукцией по числу ходов.) Поэтому каждой игре можно сопоставить два взаимно дополнительных множества

\begin{align*} L_w=& \{x:\text{Б имеет выигрышную стратегию}\},\\ L_b=& \{x:\text{Ч имеет выигрышную стратегию}\}. \end{align*}
Многие сложностные классы можно определить как множества L_w (или L_b ), соответствующие тем или иным видам игр. Например, получаем следующие классы.

P: множества L_w (как и L_b, впрочем) для игр, в которых никто не делает ходов.

NP: множества L_w для игр, в которых белые делают 1 ход. Другими словами, это множества вида

\{x: \exists\,w_1\: W(x,w_1)\}.

co-NP: множества L_b для игр, в которых белые делают 1 ход. Другими словами, это множества вида

\{x:  \forall\, w_1\: B(x,w_1)\}.

\Sigma_2: множества L_w для игр из 2 ходов: 1 ход белых, 1 ход черных. Другими словами, это множества вида

\{x:\exists\, w_1\:\forall\, b_1\: W(x,w_1,b_1)\}.
Словами это можно сказать так: есть такой ход белых, что, как бы ни сыграли черные, белые выигрывают.

\Pi_2: множества L_b для игр из 2 ходов. Другими словами, это множества вида

\{x:\forall\, w_1\:\exists\, b_1\: B(x,w_1,b_1)\}

\dots

\Sigma_{k}: множества L_w для игр из k ходов (в зависимости от четности k последними ходят либо черные, либо белые). Другими словами, это множества вида

\{x:\exists\, w_1\:\forall\, b_1\:\dots\:\mathsf{Q}_k\, y_k\: W(x,w_1,b_1,\dots)\}
(если k четное, то \mathsf{Q}_k=\forall, y_k=b_{k/2}, если k нечетное, то \mathsf{Q}_k=\exists, y_k=w_{(k+1)/2} ).

\Pi_{k}: множества L_b для игр из k ходов (в зависимости от четности k последними ходят либо черные, либо белые). Другими словами, это множества вида

\{x:\forall\, w_1\:\exists\, b_1\:\dots\:\mathsf{Q}_k\, y_k\: B(x,w_1,b_1,\dots)\}
(если k четное, то \mathsf{Q}_k=\exists, y_k=b_{k/2}, если k нечетное, то \mathsf{Q}_k=\forall, y_k=w_{(k+1)/2} ).

\dots

Классы \Sigma_k и \Pi_k взаимно дополнительны: \Sigma_k=\text{co-}\Pi_k, \Pi_k=\text{co-}\Sigma_k.

Теорема 4.1 (Лаутеман [35]). \BPP\subset\Sigma_2\cap\Pi_2.

Доказательство. Поскольку класс BPP замкнут относительно дополнений, достаточно показать, что \BPP\subset\Sigma_2.

Для этого нужно научиться формулировать свойство "множество содержит много элементов" с использованием кванторов существования и всеобщности. Мы сделаем это, предполагая, что рассматриваются подмножества некоторой конечной группы. Пусть G — группа, а X — подмножество G. Свойство, которым мы будем отличать большие множества от малых, состоит в том, что некоторым количеством сдвигов множества X можно покрыть всю группу

\exists\, g_1,\dots,g_k: \bigcup_i g_iX=G. ( 4.1)

Чтобы выбрать подходящее значение k, нужно найти случаи, когда (4.1) заведомо выполняется, и когда заведомо не выполняется.

Если

k|X|<|G|, ( 4.2)
условие (4.1) заведомо ложно.

Условие (4.1) заведомо истинно, если для случайных независимых g_1,\dots, g_k вероятность события \bigcup_i g_iX\double=G больше 0. Другими словами, \Prob[G\setminus\big( \bigcup_i g_iX\big)\ne\emptyset]<1. Вероятность того, что случайный сдвиг X не покрывает (не содержит) некоторый фиксированный элемент, равна по очевидным причинам 1-|X|/|G|. Вероятность того, что k случайных сдвигов не покрывают фиксированный элемент, равна (1-|X|/|G|)^k (покрытия разными сдвигами — независимые события). Поскольку покрывается |G| элементов, вероятность события \Prob[G\setminus\big( \bigcup_i g_iX\big)\ne\emptyset] не больше |G|\left(1-|X|/|G|\right)^k (вероятность объединения событий не больше суммы вероятностей этих событий). Итак, при

|G|\left(1-\frac{|X|}{|G|}\right)^k<1 ( 4.3)
условие (4.1) заведомо выполняется.

Рассмотрим теперь некоторый язык L\in\BPP. Для него, как объяснялось выше, можно найти полиномиально вычислимый предикат R(x,y) и полином p(\cdot) такие, что число |X_x|/2^{p(|x|)}, где X_x= \{y: (|y|\double=p(|x|))\wedge R(x,y)\}, различает слова, принадлежащие языку (для них оно больше 1-\eps ), и слова, языку не принадлежащие (для таких слов это число меньше \eps ). Параметр \eps мы выберем позже, сейчас отметим, что его величина может быть экспоненциально мала, как объяснялось "Вероятностные алгоритмы и класс BPP. Проверка простоты числа" после определения 3.1.

Введем искусственно структуру группы на множестве слов y длины p(|x|) так, чтобы произведение и обращение элемента в этой группе были полиномиально вычислимыми (например, в качестве групповой операции возьмем покомпонентное сложение по модулю два). Запишем следующее \Sigma_2 -условие

\exists\, g_1,\dots, g_k\:\forall\, y\: \big((|y|=p(|x|))\Rightarrow\\ \Rightarrow \left((y\in g_1 X_x)\vee(y\in g_2X_x)\vee\dots\vee(y\in g_k X_x)\right)\big).
Другими словами, рассматриваем такую игру: белые своим ходом называют k слов (элементов группы), а черные — один элемент, который, по их мнению, не покрыт сдвигами множества X_x на слова g_i, названные белыми.

Условие (4.2) в этом случае имеет вид \eps k<1 , а условие (4.3): 2^{p(|x|)}\eps^k<1. Эти условия выполняются при подходящем выборе параметров. Можно взять k порядка p(|x|) и \eps порядка p^{-1}(|x|).

Замечание 4.1. Имеется рассуждение, которое "показывает", что время вычисления функций из класса BPP можно сделать, по-видимому, меньше 2^{n^\eps} для любого \eps. Идея состоит в том, чтобы использовать генераторы псевдослучайных чисел. Такой генератор по набору битов длины k строит набор длины k', где k'\gg k. Если при этом выбирать короткие наборы случайно, то длинные наборы будут распределены так, что вычислительное устройство с ограниченными ресурсами (например, полиномиальная машина Тьюринга) не сможет отличить их от по-настоящему случайных. Это пояснение заменяет точное определение псевдослучайного генератора, которое нам не понадобится.

Существуют ли псевдослучайные генераторы, неизвестно. Их заведомо нет, если \P=\NP. Но в этом случае \P=\Sigma_2=\BPP.

Если же \P\ne\NP и есть псевдослучайные генераторы, то можно находить за указанное выше время значение функции f\in\BPP, вычисляя значения предиката R(x,y) из опр. 3.2 только для псевдослучайных y.

Остается "небольшой" дефект в этом рассуждении: оно не проходит при \P\ne\NP и отсутствии псевдослучайных генераторов. Такая ситуация считается маловероятной.

< Лекция 3 || Лекция 4: 12 || Лекция 5 >