Скільки часу розпізнавати паліндри в логарифмічному просторі?


20

Загальновідомо, що паліндроми можна розпізнати в лінійному часі на -стрічкових машинах Тюрінга, але не на односмугових машинах Тюрінга (у цьому випадку необхідний час є квадратичним). Алгоритм лінійного часу використовує копію введення, а отже, також використовує лінійний простір.2

Чи можемо ми розпізнати паліндроми в лінійний час багатоступеневої машини Тьюрінга, використовуючи лише логарифмічний простір? Загалом, яка компромісність у просторі та часі відома паліндромами?

Відповіді:


22

Використовуючи послідовність схрещування або складність зв'язку, легко отримати компроміс для послідовної машини Тьюрінга, використовуючи час і простір .T(n)S(n)=Ω(n2)O ( S ( n ) )O(T(n))O(S(n))

Цей результат вперше отримав Алан Кобхем, використовуючи схрещувальні послідовності в роботі Проблема розпізнавання для безлічі досконалих квадратів, що з'явилися в SWAT (пізніше FOCS) 1966 року.


25

Ви можете використовувати той самий аргумент, який використовується для доказу часу пов'язаного на одній стрічці.Ω(n2)

Припустимо, у вас є TM з простором який розпізнає паліндроми (де - реверс ) у часі . Коли головка (вхід) перетинає середину вона може нести лише біти інформації. Отже, для цього потрібно зробити хрестики, і кожен хрест потребує часу.{ xS(n)xRxT(n)0n/3S(n)Ω(n/S(n))n/3{x0n3xR|x|=n/3}xRxT(n)0n/3S(n)Ω(n/S(n))n/3

Отже .T(n)S(n)=Ω(n2)


Ой ... після написання відповіді я побачив, що Крістофер вже розмістив рішення. Приймаю його відповідь, я залишаю свою лише тому, що в ній є ще кілька деталей.
Marzio De Biasi

5
Я думаю, це було практично одночасно.
Крістофер Арнсфельт Хансен

Як ви запропонували, я прийняв відповідь Крістофера, оскільки він був трохи раніше ... Дякую обом!
Бруно

1
{x0n{x0n3xR|x|=|y|=n/3} виглядає дивно. Краще примітка, що - оператор зворотного рядка. {x0n3xR|x|=n/3}R
чудо173

2

На додаток до інших відповідей, варто зазначити, що якщо дозволена рандомізація, паліндроми можна розпізнати за допомогою пробілу O (1) та часу O (n), переміщуючи ліву частину рядка, переміщуючи перенесення правої сторони рядок та перевірка рівності хешів. Це не повинно бути важко зробити на машині Тьюрінга.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.