Quanto tempo per riconoscere i palindromi nello spazio logaritmico?


20

È noto che i palindromi possono essere riconosciuti in tempo lineare su macchine Turing a velocità, ma non su macchine Turing a nastro singolo (nel qual caso il tempo necessario è quadratico). L'algoritmo del tempo lineare utilizza una copia dell'input e quindi utilizza anche uno spazio lineare.2

Possiamo riconoscere i palindromi nel tempo lineare di una macchina Turing multitape, usando solo uno spazio logaritmico? Più in generale, che tipo di compromesso spazio-temporale è noto per i palindromi?

Risposte:


22

Utilizzando sequenze incrociate o complessità comunicativa è semplice derivare il compromesso per una macchina di Turing sequenziale usando il tempo e lo spazio .T(n)S(n)=Ω(n2)O(T(n))O(S(n))

Questo risultato è stato ottenuto per la prima volta da Alan Cobham usando sequenze di incrocio nel documento Il problema del riconoscimento per l'insieme di quadrati perfetti che è apparso a SWAT (successivamente FOCS) 1966.


25

È possibile utilizzare lo stesso argomento utilizzato per dimostrare il tempo associato a un singolo nastro.Ω(n2)

Supponiamo di avere una TM con spazio che riconosca i palindromi (dove è il contrario di ) nel tempo . Quando la testa (input) incrocia il centro può trasportare solo bit di informazioni. Quindi deve effettuare incroci e ogni croce richiede volte.{ 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

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


Ops ... dopo aver scritto la risposta ho visto che Kristoffer aveva già pubblicato la soluzione. Accetta la sua risposta, lascio la mia solo perché ha qualche dettaglio in più.
Marzio De Biasi,

5
Immagino fosse praticamente simultaneo.
Kristoffer Arnsfelt Hansen,

Come mi hai suggerito, ho accettato la risposta di Kristoffer da quando era un po 'prima ... Grazie a entrambi!
Bruno

1
{x0n{x0n3xR|x|=|y|=n/3} sembra strano. Meglio un'annotazione secondo cui è l'operatore di inversione della stringa. {x0n3xR|x|=n/3}R
miracle173

2

Oltre alle altre risposte, vale la pena notare che se la randomizzazione è consentita, i palindromi possono essere riconosciuti con lo spazio O (1) e il tempo O (n) eseguendo l'hashing del lato sinistro della stringa, hashing il recepimento del lato destro del stringa e verifica se gli hash sono uguali. Non dovrebbe essere difficile farlo su una macchina Turing.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.