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.