¿Cuánto tiempo para reconocer palíndromos en el espacio logarítmico?


20

Es bien sabido que los palíndromos se pueden reconocer en tiempo lineal en máquinas Turing de cintas, pero no en máquinas Turing de cinta única (en cuyo caso el tiempo necesario es cuadrático). El algoritmo de tiempo lineal usa una copia de la entrada y, por lo tanto, también usa un espacio lineal.2

¿Podemos reconocer palíndromos en tiempo lineal de una máquina de Turing multitapa, utilizando solo un espacio logarítmico? En términos más generales, ¿qué tipo de compensación espacio-tiempo se conoce para los palíndromos?

Respuestas:


22

El uso de secuencias cruzadas o la complejidad de la comunicación es simple para derivar la compensación para una máquina de Turing secuencial usando el tiempo y el espacio .T(n)S(n)=Ω(n2)O(T(n))O(S(n))

Este resultado fue obtenido por primera vez por Alan Cobham usando secuencias cruzadas en el documento El problema de reconocimiento para el conjunto de cuadrados perfectos que apareció en SWAT (más tarde FOCS) 1966.


25

Puede usar el mismo argumento utilizado para probar el límite de tiempo en una sola cinta.Ω(n2)

Suponga que tiene una TM con espacio que reconoce palíndromos (donde es el reverso de ) en el tiempo . Cuando la cabeza (de entrada) cruza el solo puede transportar bits de información. Por lo tanto, debe realizar cruces , y cada cruce requiere tiempo.S(n){x0n3xR|x|=n/3}xRxT(n)0n/3S(n)Ω(n/S(n))n/3

Entonces .T(n)S(n)=Ω(n2)


Ops ... después de escribir la respuesta, vi que Kristoffer ya había publicado la solución. Acepta su respuesta, dejo la mía solo porque tiene algunos detalles más.
Marzio De Biasi

55
Supongo que fue prácticamente simultáneo.
Kristoffer Arnsfelt Hansen

Como sugirió, acepté la respuesta de Kristoffer ya que él fue un poco antes ... ¡Gracias a los dos!
Bruno

1
{x0n3xR|x|=|y|=n/3} ve extraño. Mejor una anotación de que es el operador de cadena inversa. {x0n3xR|x|=n/3}R
milagro173

2

Además de las otras respuestas, vale la pena señalar que si se permite la aleatorización, los palíndromos se pueden reconocer con O (1) espacio y O (n) tiempo haciendo un hash en el lado izquierdo de la cadena, haciendo un hash en la transposición del lado derecho del cadena y comprobar si los hashes son iguales. No debería ser difícil hacer esto en una máquina Turing.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.