2017-03-15 3 views
0

Je veux concevoir un automate pushdown pour la langueAppuyez Automates une langue

L = { a^i b^j c^k | i = j or k <= j <= 2k} 

La solution proposée par l'instructeur comme illustré dans le schéma suivant. PDA diagram

Mais mon souci ici est, qu'il ne gère pas la chaîne de la forme lorsque |2c| > |b|. C'est quand dans l'état q8, et si tous les B sont empilés, mais l'entrée C n'est pas encore terminée. Cette transition n'est pas capturée ici.

Est-ce que mon problème est correct? Ou la solution proposée est un PDA correct. Rappelez-vous que j> = k, ce qui signifie | b |

Répondre

0

> = | c |.

Si tous les "b" en entrée étaient lus, alors le nombre de B empilés est supérieur (ou égal) au nombre de "c" à lire dans l'entrée.

  • Si j = k, alors il utilisera la transiction de q8 à q8 jusqu'à la fin de l'entrée. Si j = 2k, il lira un "c" (q8 -> q9) et sortira deux B de la pile (q9 -> q8), donc seulement les chaînes avec | b | = 2 | c | peut être accepté. Si j < 2k, il utilisera q8 -> q9 et q9 -> q8 jusqu'à ce que le nombre de B empilés soit égal au nombre de "c" à lire dans l'entrée. Ensuite, il utilisera q 8-> q8 jusqu'à la fin de l'entrée.
+0

Je comprends ce que vous dites. Dans le PDA proposé, pour q8 -> q8, la condition de transition est: (C, B-> E). Qu'est-ce qui se passe quand le | b | = 6 et le | c | = 4. La chaîne de ce formulaire devrait être acceptable. Mais ce PDA ne s'occupe pas de cette affaire, n'est-ce pas? – yogeshagr

+0

C'est le cas. Après avoir lu tous les "b" dans l'entrée, il y aura 6 B empilés. Ensuite, deux "c" sont lus dans l'entrée en utilisant deux fois les q8 -> q9 et q9 -> q8, ce qui prend 4 B de la pile. Nous avons donc deux "c" à lire dans l'entrée et deux B empilés. Ensuite, q8 -> q8 est utilisé deux fois et la chaîne est acceptée. –

+0

D'accord ouais c'est le cas. Votre troisième point explique correctement cela. J'étais en train d'épuiser tous les Bs en lisant 3 "c" s et empiler 6 Bs. Puis il me restait 1 "c" et 0 B en pile, et je n'avais pas où aller à partir de q8. L'ordre des transitions est-il également important dans une NFA? Pouvons-nous convertir ce PDA en un programme, et puis l'ordinateur peut prendre de l'ordre dans lequel il devrait faire des transitions? Je veux dire que ce PDA aide à écrire un programme correct/meilleur? – yogeshagr