Глава 6

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

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

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

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

?
Пример 6.3

Покажите, что функция 2log⁡n2^{\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

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

?
Задача 6.1.1

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

?
Задача 6.1.2

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

?
Задача 6.1.3

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

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

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

?
Задача 6.1.5

Пусть f(n)≺g(n)f(n) \prec g(n). Верно ли, что для любой возрастающей функции h(n)h(n) с lim⁡n→∞h(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 для любого k≥0k \geq 0.

?
Задача 6.1.7

Обозначим log⁡∗∗n=min⁡{k∣(log⁡∗)(k)n≤1,k≥1}\log^{* *} n=\min \left\{ k \mid \left(\log^{*}\right)^{(k)} n \leq 1, k \geq 1\right\}. Сравните log⁡∗∗n\log^{* *} n и log⁡∗n\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⁡{k∣A(k,k)≤n}g(n)=\max \left\{ k \mid A(k, k) \leq n\right\} с log⁡∗n\log^{*} n.

§
Пример 6.11

Предположим, что lim⁡n→∞t1(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,B∈PA, B \in P, то AB∈PA B \in P.

?
Пример 6.14

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

?
Пример 6.15

PSPACE⁡⊆EXPPOLY⁡\operatorname {PSPACE}\subseteq \operatorname {EXPPOLY}.

?
Задача 6.2.1

Предположим, что s(n)≥log⁡ns(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

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

?
Задача 6.2.4

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

(В доказательстве теоремы 6.10 каждый шаг моделирования M′M^{\prime } занимает десять шагов, управляемых локальным счётчиком j∈{0,1,⋯ ,9}j \in \left\{ 0,1,\cdots ,9\right\}, входящим в состояние. Обозначим через gg ячейку, сканируемую в данный момент, а через r,ℓr, \ell — её правого и левого соседей: шаги 11–44 образуют пчелиный танец, считывающий символы rr и ℓ\ell в состояние — сдвиг вправо к rr, сдвиг влево обратно к gg, сдвиг влево к ℓ\ell, сдвиг вправо обратно к gg; шаг 55 моделирует MM на полученной локальной конфигурации как можно большее число шагов — это чисто внутреннее изменение состояния без движения головки; шаги 66–99 — второй пчелиный танец, копирующий обновлённые символы обратно в ячейки ℓ,g,r\ell , g, r; а шаг 1010 передвигает головку к одному из соседей gg в соответствии с позицией, записанной в локальной конфигурации. Поскольку шаг 44 — это чистое движение головки, а шаг 55 вовсе не требует движения головки, эти два шага можно объединить в один шаг M′M^{\prime }.)

?
Задача 6.2.5

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

(В доказательстве теоремы 6.10 локальная конфигурация состоит из 3m3m ячеек ленты MM, позиции головки в пределах этих 3m3m ячеек и состояния MM — то есть это строка a1⋯a3m∈Γ3ma_{1} \cdots a_{3 m} \in \Gamma^{3 m} вместе с отмеченной позицией 1≤i≤3m1 \leq i \leq 3 m и состоянием qq автомата MM, где Γ\Gamma — алфавит ленты MM.)

?
Задача 6.2.6

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

?
Задача 6.2.7

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

?
Задача 6.2.8

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

?
(a)

Пусть A+B={x∈1(0+1)∗+0∣n(x)=n(y)+n(z) для некоторых y∈A и z∈B}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,B∈PSPACEA, B \in PSPACE, то A+BA+B также принадлежит PSPACEPSPACE.

(b)

Пусть A⋆B={x∈1(0+1)∗+0∣n(x)=n(y)⋅n(z) для некоторых y∈A и z∈B}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,B∈PSPACEA, B \in PSPACE, то A⋆BA \star B также принадлежит PSPACEPSPACE.

(c)
  • Предположим, что A,B∈PA, B \in P. Верно ли, что A+BA+B также принадлежит PP? Верно ли, что A⋆BA \star B также принадлежит PP?
§
Пример 6.18

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

?
Пример 6.19

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

?
Пример 6.20

P⊂≠EXP\quad P \underset {\neq }{\subset } EXP.

?
Пример 6.21

EXP≠PSPACEEXP \neq PSPACE.

?
Задача 6.3.1

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

?
Задача 6.3.2

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

(MwM_{w} обозначает ДМТ, чей код есть ww, а McM^{c} — это фиксированная часовая машина t2(n)t_{2}(n), используемая в доказательстве: ДМТ, которая останавливается ровно за t2(n)t_{2}(n) шагов на любом входе длины nn. Там метод чередования означает поочерёдное моделирование одного шага MwM_{w} и одного шага McM^{c}, с остановкой, как только останавливается любая из них. Метод произведения машин Тьюринга из примера 5.9, напротив, строит единую новую ДМТ, состояния которой — пары (qi,qj)(q_{i}, q_{j}), по одному состоянию из каждой из двух фиксированных машин Mn,MmM_{n}, M_{m}, с объединённой функцией переходов δ\delta, построенной механически из функций переходов δn,δm\delta_{n}, \delta_{m} самих машин MnM_{n} и MmM_{m}.)

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

Покажите, что ⌈log⁡n⌉\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)≥log⁡ns(n) \geq \log n, то DSPACE⁡(s(n))⊆DTIME⁡(2c⋅s(n))\operatorname {DSPACE}(s(n)) \subseteq \operatorname {DTIME}\left(2^{c \cdot s(n)}\right) для некоторой константы c>0c>0.

Задача 6.3.5

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

?
Задача 6.3.6

Покажите, что DSPACE⁡(n(log⁡∗n)100)≠⊂DSPACE⁡(nlog⁡n)\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={ai1bai2b⋯baikbbaj∣i1,…,ik,j>0,∑r∈Air=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⁡(n2log⁡n)\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={ai1bai2b⋯baik∣i1,i2,…,ik≥0,k≥3,ir=is=it для некоторых 1≤r<s<t≤k}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={x1cx2c⋯cxmccy∣x1,…,xm,y∈{a,b}∗,(∃i1,…,ik)[1≤i1<⋯<ik≤m,xi1xi2⋯xik=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)), принадлежит NPN P.

(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).

(reach⁡(α1,α2,k)\operatorname {reach}\left(\alpha_{1}, \alpha_{2}, k\right) обозначает предикат, что MM может перейти от конфигурации α1\alpha_{1} к конфигурации α2\alpha_{2} не более чем за kk ходов. Доказательство теоремы 6.27 определяет reach⁡(α1,α2,2i)\operatorname {reach}\left(\alpha_{1}, \alpha_{2}, 2^{i}\right) рекурсивно: если i=0i=0, оно возвращает ДА тогда и только тогда, когда α1⊢α2\alpha_{1} \vdash \alpha_{2} или α1=α2\alpha_{1}=\alpha_{2}; если i≥1i \geq 1, оно возвращает ДА тогда и только тогда, когда для некоторой конфигурации α3\alpha_{3} выполнены оба предиката reach⁡(α1,α3,2i−1)\operatorname {reach}\left(\alpha_{1}, \alpha_{3}, 2^{i-1}\right) и reach⁡(α3,α2,2i−1)\operatorname {reach}\left(\alpha_{3}, \alpha_{2}, 2^{i-1}\right), что проверяется рекурсивным вызовом того же алгоритма для каждого из них.)

?
Задача 6.4.4

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

?
Задача 6.4.5

Покажите, что для любых вещественных чисел r≥1r \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)≥log⁡ns_{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∣)−∣x∣y=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)

Покажите, что EXP≠NPE X P \neq N P.

(b)

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

Задача 6.4.9

Покажите, что если P=NPP=N P, то

⋃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={a2n∣n≥0} L=\left\{ a^{2^{n}} \mid n \geq 0\right\}
?
Пример 6.34

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

L={an2∣n≥1} 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) выполнено.

(CxC_{x} обозначает множество конфигураций MM на входе xx длины ≤s(n)\leq s(n), M1M_{1} — это НМТ, допускающая reach⁡(α,β,k)\operatorname {reach}(\alpha , \beta , k) с памятью O(s(n)+log⁡k)O(s(n)+\log k) для α,β∈Cx\alpha , \beta \in C_{x}, а NkN_{k} обозначает число конфигураций в CxC_{x}, достижимых из фиксированной конфигурации β\beta не более чем за kk ходов. Алгоритм, реально используемый в доказательстве для вычисления Nk+1N_{k+1} из NkN_{k}: для каждой α∈Cx\alpha \in C_{x} угадать, в возрастающем порядке относительно фиксированного линейного порядка ≺\prec на CxC_{x}, конфигурации γ1≺⋯≺γNk\gamma_{1} \prec \cdots \prec \gamma_{N_{k}}, достижимые из β\beta за kk ходов (каждая проверяется через M1M_{1}), затем установить rαr_{\alpha } в ИСТИНА, если reach⁡(γi,α,1)\operatorname {reach}(\gamma_{i}, \alpha , 1) выполнено для некоторого ii — это одно прямо проверяемое условие достижимости за один ход, не требующее дальнейшего угадывания, — и увеличить Nk+1N_{k+1}, если rα=r_{\alpha }= ИСТИНА.)

?
Задача 6.5.6

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

?