Combien de temps pour reconnaître les palindromes dans l'espace logarithmique?


20

Il est bien connu que les palindromes peuvent être reconnus en temps linéaire sur des machines de Turing à bandes, mais pas sur des machines de Turing à bande unique (auquel cas le temps nécessaire est quadratique). L'algorithme de temps linéaire utilise une copie de l'entrée et utilise donc également un espace linéaire.2

Peut-on reconnaître des palindromes en temps linéaire d'une machine de Turing multitape, en utilisant uniquement un espace logarithmique? Plus généralement, quel type de compromis espace-temps est connu pour les palindromes?

Réponses:


22

En utilisant des séquences croisées ou la complexité de la communication, il est simple de dériver le compromis pour une machine séquentielle de Turing en utilisant le temps et l'espace .O ( T ( n ) ) O ( S ( n ) )T(n)S(n)=Ω(n2)O(T(n))O(S(n))

Ce résultat a été obtenu pour la première fois par Alan Cobham en utilisant des séquences de croisements dans le document The problem problem for the set of perfect squares paru au SWAT (plus tard FOCS) 1966.


25

Vous pouvez utiliser le même argument utilisé pour prouver la limite de temps sur une seule bande.Ω(n2)

Supposons que vous ayez une MT avec un espace qui reconnaisse les palindromes { xS(n){x0n3xR|x|=n/3}xRxT(n)0n/3S(n)Ω(n/S(n))n/3

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


Ops ... après avoir écrit la réponse, j'ai vu que Kristoffer avait déjà publié la solution. Accepte sa réponse, je ne laisse la mienne que parce qu'elle contient quelques détails supplémentaires.
Marzio De Biasi

5
Je suppose que c'était pratiquement simultané.
Kristoffer Arnsfelt Hansen

Comme vous l'avez suggéré, j'ai accepté la réponse de Kristoffer puisqu'il était un peu plus tôt ... Merci à vous deux!
Bruno

1
{x0n3xR|x|=|y|=n/3}{x0n3xR|x|=n/3}R

2

En plus des autres réponses, il convient de noter que si la randomisation est autorisée, les palindromes peuvent être reconnus avec un espace O (1) et un temps O (n) en hachant le côté gauche de la chaîne, en hachant la transposition du côté droit de la chaîne et vérifier si les hachages sont égaux. Cela ne devrait pas être difficile à faire sur une machine de Turing.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.