Вычислительная сложность
[57/32%]Пусть даны три стержня и дисков, причём все дисков имеют разный размер. Изначально дисков сложены в порядке убывания размера, снизу вверх, на первом стержне (см. рис. 6.1). Задача о Ханойской башне состоит в том, чтобы перенести всю башню из дисков с первого стержня на второй, перемещая по одному диску за раз и никогда не кладя больший диск на меньший. Каково самое быстрое решение этой задачи? Является ли самое быстрое решение практически осуществимым при размере (размере исходной задачи о Ханойской башне)?
Рис. 6.1: задача о Ханойской башне.
Покажите, что функция растёт медленнее любой функции полиномиальной последовательности, но быстрее любой функции полилогарифмической последовательности.
Пусть . Покажите, что существует функция , такая что .
Покажите, что для любого фиксированного целого .
Покажите, что и .
Покажите, что .
Сравните следующие три функции с помощью обозначения :
Сравните и с помощью обозначения .
Пусть . Верно ли, что для любой возрастающей функции с выполняется ? Приведите доказательство или контрпример.
Докажите, что для любого .
Обозначим . Сравните и .
Вспомните функцию Аккермана , определённую в упражнении 8 раздела 4.8.
Сравните функцию с .
Сравните функцию с .
Предположим, что . Если для достаточно больших , то DTIME .
Если , то для любого ).
Покажите, что если , то .
Покажите, что если , то .
.
Предположим, что . Докажите, что если машина Тьюринга останавливается на всех входах и имеет ограничение по памяти , то она должна иметь временное ограничение для некоторой константы . Используйте этот результат, чтобы показать, что для любого каждое множество из является рекурсивным множеством.
Покажите, что каждое конечное множество строк принадлежит .
Пусть и . Докажите, что и принадлежат . Сделайте отсюда вывод, что классы сложности и все замкнуты относительно булевых операций объединения, пересечения и дополнения.
В доказательстве теоремы 6.10 мы можем фактически использовать девять шагов вместо десяти, чтобы смоделировать по крайней мере шагов . Это можно сделать, объединив четвёртый и пятый шаги в один шаг. Можете ли вы использовать менее девяти шагов в , чтобы выполнить ту же работу?
(В доказательстве теоремы 6.10 каждый шаг моделирования занимает десять шагов, управляемых локальным счётчиком , входящим в состояние. Обозначим через ячейку, сканируемую в данный момент, а через — её правого и левого соседей: шаги – образуют пчелиный танец, считывающий символы и в состояние — сдвиг вправо к , сдвиг влево обратно к , сдвиг влево к , сдвиг вправо обратно к ; шаг моделирует на полученной локальной конфигурации как можно большее число шагов — это чисто внутреннее изменение состояния без движения головки; шаги – — второй пчелиный танец, копирующий обновлённые символы обратно в ячейки ; а шаг передвигает головку к одному из соседей в соответствии с позицией, записанной в локальной конфигурации. Поскольку шаг — это чистое движение головки, а шаг вовсе не требует движения головки, эти два шага можно объединить в один шаг .)
Оцените, сколько возможных локальных конфигураций существует в доказательстве теоремы 6.10.
(В доказательстве теоремы 6.10 локальная конфигурация состоит из ячеек ленты , позиции головки в пределах этих ячеек и состояния — то есть это строка вместе с отмеченной позицией и состоянием автомата , где — алфавит ленты .)
Покажите, что каждый контекстно-свободный язык принадлежит (то есть для каждой контекстно-свободной грамматики существует полиномиальный по времени алгоритм разбора).
Покажите, что если и принадлежат , то и также принадлежат .
Пусть такие, что каждая строка из или является двоичным представлением натурального числа. Пусть обозначает натуральное число, чьё двоичное представление есть .
Пусть . Покажите, что если , то также принадлежит .
Пусть . Покажите, что если , то также принадлежит .
- Предположим, что . Верно ли, что также принадлежит ? Верно ли, что также принадлежит ?
Покажите, что полностью конструктивна по времени.
Покажите, что полностью конструктивна по памяти.
.
.
Опишите подробно ДМТ с 3 рабочими лентами из теоремы 6.16. В частности, опишите, как работает, используя вход одновременно как машинный код для и как вход для , в то время как он хранится на входной ленте только для чтения.
В доказательстве теоремы 6.17 мы использовали технику чередования, чтобы выполнить параллельное моделирование и . Можем ли мы вместо этого использовать метод произведения машин Тьюринга из примера 5.9, чтобы выполнить параллельное моделирование?
( обозначает ДМТ, чей код есть , а — это фиксированная часовая машина , используемая в доказательстве: ДМТ, которая останавливается ровно за шагов на любом входе длины . Там метод чередования означает поочерёдное моделирование одного шага и одного шага , с остановкой, как только останавливается любая из них. Метод произведения машин Тьюринга из примера 5.9, напротив, строит единую новую ДМТ, состояния которой — пары , по одному состоянию из каждой из двух фиксированных машин , с объединённой функцией переходов , построенной механически из функций переходов самих машин и .)
Покажите, что полностью конструктивна по памяти.
Покажите, что полностью конструктивна по времени.
Покажите, что если полностью конструктивна по времени, то .
Покажите, что если полностью конструктивна по памяти и , то для некоторой константы .
Предположим, что через функцию сведения с временным ограничением . Также предположим, что . Что можно сказать о временной сложности множества ?
Покажите, что .
Покажите, что EXP EXPPOLY.
Покажите, что PSPACE .
Пусть . Постройте НМТ, допускающую язык .
Покажите, что .
Покажите, что NSPACE .
Постройте многоленточные НМТ, допускающие следующие языки за время :
.
.
Регулярное выражение называется беззвёздным регулярным выражением, если оно не содержит символ * (звезду Клини). Покажите, что задача определения того, не эквивалентны ли два беззвёздных регулярных выражения и (то есть, верно ли ), принадлежит .
Покажите, что задача определения того, не эквивалентны ли два регулярных выражения, принадлежит .
Расширенное регулярное выражение — это регулярное выражение, в котором может использоваться дополнительная операция пересечения (обозначаемая ). Покажите, что задача определения того, не эквивалентны ли два расширенных регулярных выражения, принадлежит .
В доказательстве теоремы 6.27 предикат решался детерминированным рекурсивным алгоритмом. Преобразуйте его в эквивалентный нерекурсивный алгоритм, использующий память .
( обозначает предикат, что может перейти от конфигурации к конфигурации не более чем за ходов. Доказательство теоремы 6.27 определяет рекурсивно: если , оно возвращает ДА тогда и только тогда, когда или ; если , оно возвращает ДА тогда и только тогда, когда для некоторой конфигурации выполнены оба предиката и , что проверяется рекурсивным вызовом того же алгоритма для каждого из них.)
Покажите, что класс сложности NP замкнут относительно объединения, пересечения, конкатенации и замыкания Клини.
Покажите, что для любых вещественных чисел и ,
Покажите, что лемма 6.31 по-прежнему верна, если заменить условия и на и . [Подсказка: заметим, что НМТ может моделировать на входе , не выписывая строку на второй ленте. Вместо этого она может просто записывать на второй ленте позицию головки входной ленты и использовать , чтобы определить, какой входной символ сканирует головка ленты .]
Покажите, что для любых вещественных чисел и ,
Покажите, что если и — вполне временно-конструируемые функции с и , то влечёт .
Покажите, что .
Покажите, что EXP .
Покажите, что если , то
Найдите контекстно-зависимую грамматику для языка
Найдите контекстно-зависимую грамматику для языка
Постройте контекстно-зависимые грамматики для языков из примеров 4.17 и 4.18, а также для языков из упражнений 3(b)-3(i) раздела 4.5.
Завершите последнюю часть доказательства теоремы 6.35. То есть опишите, как присоединить самый левый и самый правый пробелы к соседним символам, чтобы преобразовать грамматику в контекстно-зависимую грамматику.
Покажите, что класс контекстно-зависимых языков замкнут относительно объединения, пересечения, конкатенации и замыкания Клини.
Найдите рекурсивный язык , не являющийся контекстно-зависимым.
Что не так, если для вычисления в доказательстве теоремы 6.36 использовать следующий более простой алгоритм?
Для каждого , чтобы вычислить , мы порождаем каждую конфигурацию одну за другой и для каждой недетерминированно проверяем, выполнено ли (машиной ), и увеличиваем счётчик для на единицу, если выполнено.
( обозначает множество конфигураций на входе длины , — это НМТ, допускающая с памятью для , а обозначает число конфигураций в , достижимых из фиксированной конфигурации не более чем за ходов. Алгоритм, реально используемый в доказательстве для вычисления из : для каждой угадать, в возрастающем порядке относительно фиксированного линейного порядка на , конфигурации , достижимые из за ходов (каждая проверяется через ), затем установить в ИСТИНА, если выполнено для некоторого — это одно прямо проверяемое условие достижимости за один ход, не требующее дальнейшего угадывания, — и увеличить , если ИСТИНА.)
Вспомним, из упражнения 6 раздела 3.5, понятие 2-стекового PDA. Покажите, что каждый язык, допускаемый 2-стековым PDA, является контекстно-зависимым языком.