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.
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 |
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
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. –
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