Quanto tempo para reconhecer palíndromos no espaço logarítmico?


20

É sabido que os palíndromos podem ser reconhecidos em tempo linear em máquinas de Turing de fitas, mas não em máquinas de Turing de fita única (nesse caso, o tempo necessário é quadrático). O algoritmo de tempo linear usa uma cópia da entrada e, portanto, também usa um espaço linear.2

Podemos reconhecer palíndromos no tempo linear de uma máquina de Turing multitape, usando apenas um espaço logarítmico? De maneira mais geral, que tipo de troca espaço-tempo é conhecida pelos palíndromos?

Respostas:


22

Usando sequências cruzadas ou complexidade da comunicação, é simples derivar a compensação para uma máquina de Turing sequencial usando o tempo e o espaço .T(n)S(n)=Ω(n2)O ( S ( n ) )O(T(n))O(S(n))

Este resultado foi obtido pela primeira vez por Alan Cobham usando sequências de cruzamento no artigo O problema de reconhecimento para o conjunto de quadrados perfeitos que apareceu na SWAT (mais tarde FOCS) de 1966.


25

Você pode usar o mesmo argumento usado para provar o tempo associado à fita única.Ω(n2)

Suponha que você tenha uma TM com espaço que reconheça palíndromos (onde é o inverso de ) no tempo . Quando a cabeça (de entrada) cruza o meio ela pode transportar apenas bits de informação. Portanto, ele precisa fazer cruzamentos , e cada cruzamento requer tempo.{ xS(n)xRxT(n)0n/3S(n)Ω(n/S(n))n/3{x0 0n3xR|x|=n/3}xRxT(n)0 0n/3S(n)Ω(n/S(n))n/3

Então .T(n)S(n)=Ω(n2)


Ops ... depois de escrever a resposta, vi que o Kristoffer já havia postado a solução. Aceita a resposta dele, deixo a minha apenas porque tem mais alguns detalhes.
Marzio De Biasi

5
Eu acho que foi praticamente simultâneo.
Kristoffer Arnsfelt Hansen 03/03

Como você sugeriu, aceitei a resposta de Kristoffer, pois ele era um pouco mais cedo ... Obrigado a vocês dois!
Bruno

1
{x0 0n3xR|x|=|y|=n/3}{x0 0n3xR|x|=n/3}R

2

Além das outras respostas, vale ressaltar que, se a aleatorização for permitida, os palíndromos podem ser reconhecidos com O (1) espaço e O (n) tempo, fazendo o hash do lado esquerdo da string, a transposição do lado direito do string e verificando se os hashes são iguais. Não deve ser difícil fazer isso em uma máquina de Turing.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.