Глава 6

Вычислительная сложность

[57/32%]
Показать
LaTeX
§
Пример 6.1

Пусть даны три стержня и nn дисков, причём все nn дисков имеют разный размер. Изначально nn дисков сложены в порядке убывания размера, снизу вверх, на первом стержне (см. рис. 6.1). Задача о Ханойской башне состоит в том, чтобы перенести всю башню из nn дисков с первого стержня на второй, перемещая по одному диску за раз и никогда не кладя больший диск на меньший. Каково самое быстрое решение этой задачи? Является ли самое быстрое решение практически осуществимым при размере n=64n=64 (размере исходной задачи о Ханойской башне)?

Рис. 6.1: задача о Ханойской башне.Рис. 6.1: задача о Ханойской башне.

?
Пример 6.3

Покажите, что функция 2logn2^{\sqrt{\log n}} растёт медленнее любой функции полиномиальной последовательности, но быстрее любой функции полилогарифмической последовательности.

?
Пример 6.4

Пусть f(n)g(n)f(n) \prec g(n). Покажите, что существует функция h(n)h(n), такая что f(n)h(n)g(n)f(n) \prec h(n) \prec g(n).

?
Пример 6.5

Покажите, что lognlog(m)n\log^{*} n \prec \log^{(m)} n для любого фиксированного целого m1m \geq 1.

?
Задача 6.1.1

Покажите, что 2lnn=o(n)2^{\ln n}=o(n) и 2log(2n)=O(n)2^{\log (2 n)}=O(n).

?
Задача 6.1.2

Покажите, что (logn)10n102(logn)10(\log n)^{10} \prec n^{10} \prec 2^{(\log n)^{10}}.

?
Задача 6.1.3

Сравните следующие три функции с помощью обозначения \prec:

2nlogn,n(logn)2,(logn)2n 2^{n^{\log n}}, \quad n^{(\log n)^{2}}, \quad (\log n)^{2^{n}}
?
Задача 6.1.4

Сравните 2logn2^{\log { }^{*} n} и nn с помощью обозначения \prec.

?
Задача 6.1.5

Пусть f(n)g(n)f(n) \prec g(n). Верно ли, что для любой возрастающей функции h(n)h(n) с limnh(n)=\lim_{n \rightarrow \infty } h(n)=\infty выполняется h(f(n))h(g(n))h(f(n)) \prec h(g(n))? Приведите доказательство или контрпример.

?
Задача 6.1.6

Докажите, что log(k+1)log(k)n\log^{(k+1)} \prec \log^{(k)} n для любого k0k \geq 0.

?
Задача 6.1.7

Обозначим logn=min{k(log)(k)n1,k1}\log^{* *} n=\min \left\{ k \mid \left(\log^{*}\right)^{(k)} n \leq 1, k \geq 1\right\}. Сравните logn\log^{* *} n и logn\log^{*} n.

?
Задача 6.1.8

Вспомните функцию Аккермана AA, определённую в упражнении 8 раздела 4.8.

?
(a)

Сравните функцию f(n)=A(n,n)f(n)=A(n, n) с 22n2^{2^{n}}.

(b)

Сравните функцию g(n)=max{kA(k,k)n}g(n)=\max \left\{ k \mid A(k, k) \leq n\right\} с logn\log^{*} n.

§
Пример 6.11

Предположим, что limnt1(n)/n=\lim_{n \rightarrow \infty } t_{1}(n) / n=\infty. Если t1(n)=t2(n)t_{1}(n)=t_{2}(n) для достаточно больших nn, то DTIME (t1(n))=DTIME(t2(n))\left(t_{1}(n)\right)=\operatorname {DTIME}\left(t_{2}(n)\right).

?
Пример 6.12

Если c>1c>1, то для любого ϵ>0,DTIME(cn)=DTIME((1+ϵ)n\epsilon >0, \operatorname {DTIME}(c n)=\operatorname {DTIME}((1+ \epsilon ) n).

?
Пример 6.13

Покажите, что если A,BPA, B \in P, то ABPA B \in P.

?
Пример 6.14

Покажите, что если APA \in P, то APA^{*} \in P.

?
Пример 6.15

PSPACEEXPPOLY\operatorname {PSPACE}\subseteq \operatorname {EXPPOLY}.

?
Задача 6.2.1

Предположим, что s(n)logns(n) \geq \log n. Докажите, что если машина Тьюринга останавливается на всех входах и имеет ограничение по памяти s(n)s(n), то она должна иметь временное ограничение cs(n)c^{s(n)} для некоторой константы cc. Используйте этот результат, чтобы показать, что для любого s(n)s(n) каждое множество из DSPACE(s(n))\operatorname {DSPACE}(s(n)) является рекурсивным множеством.

?
Задача 6.2.2

Покажите, что каждое конечное множество строк принадлежит DTIME(n)\operatorname {DTIME}(n).

?
Задача 6.2.3

Пусть ADTIME(f(n))A \in \operatorname {DTIME}(f(n)) и BDTIME(g(n))B \in \operatorname {DTIME}(g(n)). Докажите, что ABA \cup B и ABA \cap B принадлежат DTIME(max{f(n),g(n)})\operatorname {DTIME}(\max \left\{ f(n), g(n)\right\} ). Сделайте отсюда вывод, что классы сложности P,PSPACE,EXPP, \mathrm{PSPACE}, \mathrm{EXP} и EXPPOLY\mathrm{EXPPOLY} все замкнуты относительно булевых операций объединения, пересечения и дополнения.

?
Задача 6.2.4

В доказательстве теоремы 6.10 мы можем фактически использовать девять шагов MM^{\prime } вместо десяти, чтобы смоделировать по крайней мере mm шагов MM. Это можно сделать, объединив четвёртый и пятый шаги в один шаг. Можете ли вы использовать менее девяти шагов в MM^{\prime }, чтобы выполнить ту же работу?

?
Задача 6.2.5

Оцените, сколько возможных локальных конфигураций существует в доказательстве теоремы 6.10.

?
Задача 6.2.6

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

?
Задача 6.2.7

Покажите, что если AA и BB принадлежат PSPACE\mathrm{PSPACE}, то ABAB и AA^{*} также принадлежат PSPACE\mathrm{PSPACE}.

?
Задача 6.2.8

Пусть A,B1(0+1)+0A, B \subseteq 1(0+1)^{*}+0 такие, что каждая строка xx из AA или BB является двоичным представлением натурального числа. Пусть n(x)n(x) обозначает натуральное число, чьё двоичное представление есть xx.

?
(a)

Пусть A+B={x1(0+1)+0n(x)=n(y)+n(z) для некоторых yA и zB}A+B=\left\{ x \in 1(0+1)^{*}+0 \mid n(x)=n(y)+n(z)\text{ для некоторых }y \in A\text{ и }z \in B\right\}. Покажите, что если A,BPSPACEA, B \in \mathrm{PSPACE}, то A+BA+B также принадлежит PSPACE\mathrm{PSPACE}.

(b)

Пусть AB={x1(0+1)+0n(x)=n(y)n(z) для некоторых yA и zB}A \star B=\left\{ x \in 1(0+1)^{*}+0 \mid n(x)=n(y) \cdot n(z)\text{ для некоторых }y \in A\text{ и }z \in B\right\}. Покажите, что если A,BPSPACEA, B \in \mathrm{PSPACE}, то ABA \star B также принадлежит PSPACE\mathrm{PSPACE}.

(c)

Предположим, что A,BPA, B \in P. Верно ли, что A+BA+B также принадлежит PP? Верно ли, что ABA \star B также принадлежит PP?

§
Пример 6.18

Покажите, что (n+2)2(n+2)^{2} полностью конструктивна по времени.

?
Пример 6.19

Покажите, что n\lceil \sqrt{n}\rceil полностью конструктивна по памяти.

?
Пример 6.20

PEXP\quad P \underset {\neq }{\subset } \mathrm{EXP}.

?
Пример 6.21

EXPPSPACE\mathrm{EXP} \neq \mathrm{PSPACE}.

?
Задача 6.3.1

Опишите подробно ДМТ с 3 рабочими лентами MM^{*} из теоремы 6.16. В частности, опишите, как MM^{*} работает, используя вход ww одновременно как машинный код для MwM_{w} и как вход для MwM_{w}, в то время как он хранится на входной ленте только для чтения.

?
Задача 6.3.2

В доказательстве теоремы 6.17 мы использовали технику чередования, чтобы выполнить параллельное моделирование MwM_{w} и McM^{c}. Можем ли мы вместо этого использовать метод произведения машин Тьюринга из примера 5.9, чтобы выполнить параллельное моделирование?

?
Задача 6.3.3
?
(a)

Покажите, что logn\lceil \log n\rceil полностью конструктивна по памяти.

(b)

Покажите, что n3n^{3} полностью конструктивна по времени.

Задача 6.3.4
?
(a)

Покажите, что если t(n)t(n) полностью конструктивна по времени, то DTIME(t(n))DSPACE(t(n))\operatorname {DTIME}(t(n)) \subseteq \operatorname {DSPACE}(t(n)).

(b)

Покажите, что если s(n)s(n) полностью конструктивна по памяти и s(n)logns(n) \geq \log n, то DSPACE(s(n))DTIME(2cs(n))\operatorname {DSPACE}(s(n)) \subseteq \operatorname {DTIME}\left(2^{c \cdot s(n)}\right) для некоторой константы c>0c>0.

Задача 6.3.5

Предположим, что AmBA \leq_{m} B через функцию сведения ff с временным ограничением 2n2^{n}. Также предположим, что BDTIME(2n)B \in \operatorname {DTIME}(2^{n}). Что можно сказать о временной сложности множества AA?

?
Задача 6.3.6

Покажите, что DSPACE(n(logn)100)DSPACE(nlogn)\operatorname {DSPACE}\left(n\left(\log^{*} n\right)^{100}\right) \stackrel{\subset }{\neq } \operatorname {DSPACE}(n \log n).

?
Задача 6.3.7

Покажите, что EXP \underset {\neq }{\subsetneq } EXPPOLY.

?
Задача 6.3.8

Покажите, что PSPACE c>0DSPACE(2cn)\underset {\neq }{\cup } \bigcup_{c>0} \operatorname {DSPACE}\left(2^{c n}\right).

?
§
Пример 6.22

Пусть L={ai1bai2bbaikbbaji1,,ik,j>0,rAir=j для некоторого A{1,2,,k}}L=\left\{ a^{i_{1}} b a^{i_{2}} b \cdots b a^{i_{k}} b b a^{j} \mid i_{1}, \ldots , i_{k}, j>0, \sum_{r \in A} i_{r}=j\text{ для некоторого }A \subseteq \left\{ 1,2, \ldots , k\right\} \right\}. Постройте НМТ, допускающую язык LL.

?
Пример 6.30

Покажите, что NSPACE(n)NSPACE(n2logn)\operatorname {NSPACE}(n) \underset {\neq }{\subseteq } \operatorname {NSPACE}(n^{2} \log n).

?
Пример 6.32

Покажите, что NSPACE (n)NSPACE(n1.5)(n) \underset {\neq }{\subseteq } N \operatorname {SPACE}\left(n^{1.5}\right).

?
Задача 6.4.1

Постройте многоленточные НМТ, допускающие следующие языки за время t(n)=2nt(n)=2 n:

?
(a)

L1={ai1bai2bbaiki1,i2,,ik0,k3,ir=is=it для некоторых 1r<s<tk}L_{1}=\left\{ a^{i_{1}} b a^{i_{2}} b \cdots b a^{i_{k}} \mid i_{1}, i_{2}, \ldots , i_{k} \geq 0, k \geq 3, i_{r}=i_{s}=i_{t}\text{ для некоторых }1 \leq r<s<t \leq k\right\}.

(b)

L2={x1cx2ccxmccyx1,,xm,y{a,b},(i1,,ik)[1i1<<ikm,xi1xi2xik=y]}L_{2}=\left\{ x_{1} c x_{2} c \cdots c x_{m} c c y \mid x_{1}, \ldots , x_{m}, y \in \left\{ a, b\right\}^{*},\left(\exists i_{1}, \ldots , i_{k}\right)[1 \leq \left.i_{1}<\cdots <i_{k} \leq m, x_{i_{1}} x_{i_{2}} \cdots x_{i_{k}}=y\right]\right\}.

Задача 6.4.2
?
(a)

Регулярное выражение rr называется беззвёздным регулярным выражением, если оно не содержит символ * (звезду Клини). Покажите, что задача определения того, не эквивалентны ли два беззвёздных регулярных выражения r1r_{1} и r2r_{2} (то есть, верно ли L(r1)L(r2)L\left(r_{1}\right) \neq L\left(r_{2}\right)), принадлежит NP\mathrm{NP}.

(b)

Покажите, что задача определения того, не эквивалентны ли два регулярных выражения, принадлежит NSPACE(n)\operatorname {NSPACE}(n).

(c)

Расширенное регулярное выражение — это регулярное выражение, в котором может использоваться дополнительная операция пересечения (обозначаемая \cap). Покажите, что задача определения того, не эквивалентны ли два расширенных регулярных выражения, принадлежит c>0NSPACE(2cn)\bigcup_{c>0} \operatorname {NSPACE}\left(2^{c n}\right).

Задача 6.4.3

В доказательстве теоремы 6.27 предикат reach(α1,α2,2i)\operatorname {reach}\left(\alpha_{1}, \alpha_{2}, 2^{i}\right) решался детерминированным рекурсивным алгоритмом. Преобразуйте его в эквивалентный нерекурсивный алгоритм, использующий память O((s(n))2)O\left((s(n))^{2}\right).

?
Задача 6.4.4

Покажите, что класс сложности NP замкнут относительно объединения, пересечения, конкатенации и замыкания Клини.

?
Задача 6.4.5

Покажите, что для любых вещественных чисел r1r \geq 1 и 0<ϵ<10<\epsilon <1,

NSPACE(nr)NSPACE(nr+ϵ). \operatorname {NSPACE}\left(n^{r}\right) \stackrel{\subset }{\neq } \operatorname {NSPACE}\left(n^{r+\epsilon }\right).
?
Задача 6.4.6
?
(a)

Покажите, что лемма 6.31 по-прежнему верна, если заменить условия s2(n)ns_{2}(n) \geq n и f(n)nf(n) \geq n на s2(n)logns_{2}(n) \geq \log n и log(f(n))=O(s2(n))\log (f(n))= O\left(s_{2}(n)\right). [Подсказка: заметим, что НМТ M3M_{3} может моделировать M2M_{2} на входе y=xSf(x)xy=x S^{f(\left|x\right|)-\left|x\right|}, не выписывая строку yy на второй ленте. Вместо этого она может просто записывать на второй ленте позицию kk головки входной ленты M2M_{2} и использовать kk, чтобы определить, какой входной символ сканирует головка ленты M2M_{2}.]

(b)

Покажите, что для любых вещественных чисел r>0r>0 и 0<ϵ<10<\epsilon <1,

NSPACE(nr)NSPACE(nr+ϵ). \operatorname {NSPACE}\left(n^{r}\right) \stackrel{\subset }{\neq } \operatorname {NSPACE}\left(n^{r+\epsilon }\right).
Задача 6.4.7

Покажите, что если t1(n),t2(n)t_{1}(n), t_{2}(n) и f(n)f(n) — вполне временно-конструируемые функции с t2(n)nt_{2}(n) \geq n и f(n)nf(n) \geq n, то NTIME(t1(n))NTIME(t2(n))\operatorname {NTIME}\left(t_{1}(n)\right) \subseteq \operatorname {NTIME}\left(t_{2}(n)\right) влечёт NTIME(t1(f(n)))NTIME(t2(f(n)))\operatorname {NTIME}\left(t_{1}(f(n))\right) \subseteq \operatorname {NTIME}\left(t_{2}(f(n))\right).

?
Задача 6.4.8
?
(a)

Покажите, что EXPNPE X P \neq \mathrm{NP}.

(b)

Покажите, что EXP c>0DTIME(2nc)\neq \bigcup_{c>0} \operatorname {DTIME}\left(2^{n^{c}}\right).

Задача 6.4.9

Покажите, что если P=NPP=\mathrm{NP}, то

c>0DTIME(2nc)=c>0NTIME(2nc). \bigcup _{c>0} \operatorname {DTIME}\left(2^{n^{c}}\right)=\bigcup _{c>0} \operatorname {NTIME}\left(2^{n^{c}}\right).
?
§
Пример 6.33

Найдите контекстно-зависимую грамматику для языка

L={a2nn0} L=\left\{ a^{2^{n}} \mid n \geq 0\right\}
?
Пример 6.34

Найдите контекстно-зависимую грамматику для языка

L={an2n1} L=\left\{ a^{n^{2}} \mid n \geq 1\right\}
?
Задача 6.5.1

Постройте контекстно-зависимые грамматики для языков из примеров 4.17 и 4.18, а также для языков из упражнений 3(b)-3(i) раздела 4.5.

?
Задача 6.5.2

Завершите последнюю часть доказательства теоремы 6.35. То есть опишите, как присоединить самый левый и самый правый пробелы к соседним символам, чтобы преобразовать грамматику G2G_{2} в контекстно-зависимую грамматику.

?
Задача 6.5.3

Покажите, что класс контекстно-зависимых языков замкнут относительно объединения, пересечения, конкатенации и замыкания Клини.

?
Задача 6.5.4

Найдите рекурсивный язык LL, не являющийся контекстно-зависимым.

?
Задача 6.5.5

Что не так, если для вычисления NkN_{k} в доказательстве теоремы 6.36 использовать следующий более простой алгоритм?

Для каждого kk, чтобы вычислить NkN_{k}, мы порождаем каждую конфигурацию αCx\alpha \in C_{x} одну за другой и для каждой недетерминированно проверяем, выполнено ли reach(β,α,k)\operatorname {reach}(\beta , \alpha , k) (машиной M1M_{1}), и увеличиваем счётчик для NkN_{k} на единицу, если reach(β,α,k)\operatorname {reach}(\beta , \alpha , k) выполнено.

?
Задача 6.5.6

Вспомним, из упражнения 6 раздела 3.5, понятие 2-стекового PDA. Покажите, что каждый язык, допускаемый 2-стековым PDA, является контекстно-зависимым языком.

?