Вычислительная длина ввода на одноленточной машине Тьюринга

13

В связи с этим вопросом мне пришло в голову задаться вопросом: какова временная сложность одноленточной машины Тьюринга с одной головкой для вычисления длины ее входных данных? Чтобы быть точным, скажем, что алфавит ленты равен , входные данные представляют собой строку в ( 0 + 1 ) ∗, окруженную пробелами, машина запускается с крайнего левого входного символа и должна заканчиваться на крайний левый символ строки в ( 0 + 1 ) {0,1,b}(0+1)*(0+1)(снова окруженный пробелами), который дает двоичное представление длины ввода. Это также можно рассматривать как проблему преобразования числа из унарного в двоичное.

Это легко решить на двухслойной машине или машине с двумя головками за линейное время (просто отсканируйте вход одной головкой, используя другую головку, чтобы многократно увеличить счетчик; увеличение - это операция с постоянным амортизированным временем). Но решения с одной головкой, которые я могу придумать, это только (например, многократно увеличивать счетчик, а затем сдвигать его на одну позицию вдоль ленты). Есть ли соответствующая нижняя граница?O(nlogn)

Я пробовал некоторые поиски, но фразы типа «одна голова» и «длина ввода» настолько распространены, что затрудняют поиск в литературе известных результатов по этой проблеме.

Дэвид Эппштейн
источник
Интересно .. Это менее очевидно, чем кажется. Мне любопытно, есть ли связь между нижней границей для этого и нижней границей для забытого моделирования ТМ. (Любой TM, решающий эту проблему, по определению был бы забывчивым (или имел бы ненужный код).)
Даниэль Апон

Ответы:

11

Он не может быть вычислен за время .о(NЛ.Г.N)

Пусть будет машиной, которая задает входную строку x с размером x, записанным в двоичном виде на ленте.MИксИкс

Мы можем добавить простой (с нулевым пространственным линейным временем) DFA к чтобы проверить, является ли размер входа степенью двойки: просто убедитесь, что первый бит равен 1, а остальные равны нулю.M

Предположим, что проходит время o ( n lg n ) . Тогда мы можем со временем решить o ( n lg n ), что размер входных данных является степенью двойки. Другими словами, следующий язык разрешим в D T i m e ( n lg n ) . L = { 0 я | K я = 2 K } Из D Т я м е (Mо(NЛ.Г.N)о(NЛ.Г.N)DTяме(NЛ.Г.N)

Lзнак равно{0я|К язнак равно2К}
что L должно быть регулярным. Но легко проверить, что язык не является регулярным. Таким образом, M не может работать за время o ( n lg n ) .DTяме(о(NЛ.Г.N))знак равнореграммLMо(NЛ.Г.N)
Кава
источник
DTяме(о(NЛ.Г.N))знак равнореграмм
DTяме(NЛ.Г.N)знак равнореграмм
Спасибо за указатели, я посмотрел в "Классическая теория рекурсии" том. II. Для факта, что это изменилось, это не так ясно для меня. Например, книга Сипсера использует однослойные ТМ для определения классов сложности времени, но книга Хопкрофта-Уллмана и последние Арора-Барак и Гольдрайх используют многолинейные ТМ.
Бруно
1
@ Бруно, я думаю, что более распространенное определение DTime более сложное. Например, общепринятое утверждение о том, что «теорема о временной иерархии, как известно, не является жесткой», справедливо только для одноленточных машин, а для двухленточных машин известно, что она жесткая с 1982 года.
Каве
DTimе