В связи с этим вопросом мне пришло в голову задаться вопросом: какова временная сложность одноленточной машины Тьюринга с одной головкой для вычисления длины ее входных данных? Чтобы быть точным, скажем, что алфавит ленты равен , входные данные представляют собой строку в ( 0 + 1 ) ∗, окруженную пробелами, машина запускается с крайнего левого входного символа и должна заканчиваться на крайний левый символ строки в ( 0 + 1 ) ∗(снова окруженный пробелами), который дает двоичное представление длины ввода. Это также можно рассматривать как проблему преобразования числа из унарного в двоичное.
Это легко решить на двухслойной машине или машине с двумя головками за линейное время (просто отсканируйте вход одной головкой, используя другую головку, чтобы многократно увеличить счетчик; увеличение - это операция с постоянным амортизированным временем). Но решения с одной головкой, которые я могу придумать, это только (например, многократно увеличивать счетчик, а затем сдвигать его на одну позицию вдоль ленты). Есть ли соответствующая нижняя граница?
Я пробовал некоторые поиски, но фразы типа «одна голова» и «длина ввода» настолько распространены, что затрудняют поиск в литературе известных результатов по этой проблеме.