Question

Notez que par « automate pushdown dans les deux sens », je veux dire un automate pushdown qui peut se déplacer la tête de lecture dans les deux sens sur la bande d'entrée.

J'ai eu récemment la question de la détermination de la puissance de calcul de deux voies PDA dans la hiérarchie de Chomsky. Je ne comprends pas tout à fait PDA dans les deux sens, mais je peux voir comment avec la capacité de lire dans les deux sens sur l'entrée, il pourrait gérer les langues de la forme $ L = \ {0 ^ n ^ 1 n 2 ^ n \ } $. Je ne peux pas dire que, pour sûr, mais il semble que cela ferait assez puissant pour moins poignée langues contextuelles.

Tout cela est une estimation parce que je ne sais pas exactement comment ils fonctionnent. Quelqu'un peut-il expliquer le processus de la façon dont un PDA fonctionne dans les deux sens, peut-être même sur mon exemple?

Mise à jour:

  

Le modèle est une généralisation d'un automate à pile en ce que le mouvement dans les deux sens est autorisé sur la bande d'entrée qui est supposé avoir endmarkers.

Était-ce utile?

La solution

Un PDA bidirectionnel peut accepter la langue contextuelle canonique $ \ {0} ^ {n ^ {1} n 2 ^ {n} | n \ geq 1 \} $. Un tel automate peut fonctionner en vérifiant si le plus grand préfixe de la forme $ 0 ^ {i} 1 ^ {j} $ a $ i = j $, en utilisant la pile, après quoi il pourrait vider la pile, et vérifier si le plus grand suffixe de la forme 1 $ ^ {j} 2 ^ {k} $ eu $ j = k $, en utilisant à nouveau la pile. Donc $ CFL \ subsetneq L (2PDA) $.

Dans le détail, le PDA 2 voies lirait de gauche à droite autant de 0 symboles qu'il trouve, pousser un 0 sur la pile pour chaque 0 il lit sur la bande d'entrée. Si on lit les symboles 0 et 2 trouve un symbole avant de trouver un 1, il se bloque. Quand il est à 1, il change d'état, et commence à lire tous les symboles 1, jusqu'à ce qu'il vienne à 2. Si elle lit un symbole 0 tout en faisant cela, il se bloque. Il apparaît un symbole 0 de la pile pour chaque 1 on peut lire sur la bande d'entrée. Si, quand il atteint la première 2, la pile est vide, le PDA se déplace la tête de ruban à l'extrémité de la bande d'entrée. Dans le cas contraire, il se bloque. Si elle rencontre des 0 ou 1 s, il se bloque. Il lit ensuite la bande d'entrée gauche à droite, poussant un 2 pour chaque 2 il lit sur la bande d'entrée. Quand il est à 1, il passe états et commence à lire 1 et 2 s éclater. Si, quand il arrive à 0, la pile est vide, la chaîne est acceptée.

La machine échouerait si la chaîne d'entrée n'était pas une suite de 0, suivie par 1s, suivie de 2 s; et il aurait écrasé si le plus long préfixe de 0 et de 1 n'étaient pas dans la LCF canonique $ \ {0} ^ {n 1 ^ {n} \} $; et il aurait écrasé si le plus long suffixe de 1 et 2 étaient pas dans la LCF canonique $ \ {1} ^ {n 2 ^ {n} \} $. Dans ce cas, la possibilité de rembobiner la bande vous permet d'accepter des langues qui sont l'intersection des lampes fluorescentes compactes, ainsi que en enfilant essentiellement les PDA et rembobiner la bande entre les deux.

Par conséquent, les langues acceptées par les deux sens PDA sont fermés trivialement par intersection, une propriété non partagée par les langues acceptées par les PDA réguliers.

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top