Je n'ai pas eu le temps d'écrire cela auparavant mais j'ai trouvé une réponse. Voici ce que j'ai fait:
Soit le origine . Nous allons construire un nouveau , appelons-le ( signifie modifié).OPD APD AMM
Pour trouver le complément de , nous pouvons inverser les états finaux en états non finaux et vice-versa. C'est la même procédure que pour les automates finis. Cependant, il y a une subtilité. Le problème principal est que dans le PDA l'entrée peut conduire à un état qui n'est pas un état final mais pourrait effectuer un et atteindre un état acceptant . Le basculement des états, comme mentionné ci-dessus, ferait que termine par avec l'entrée qui serait un état final (obligeant à accepter d'accepter l'entrée) même s'il fera plus tard un versOOwSϵ - m o v eS′MSwMϵ−moveS′, un état non acceptant. Par conséquent, et accepteront tous les deux . Quelque chose de similaire se produit si était un état final et un état non final accessible depuis via un .OMwSS′Sϵ−move
Afin de surmonter ce problème, nous devons nous assurer que tous les mouvements se produisent avant de lire le symbole suivant. Autrement dit, nous n'entrerons dans un état de lecture que lorsqu'un chemin de -moves est suivi et nous atteindrons un état qui n'a pas de -move disponible. Nous appelons ces derniers états des états de lecture , car ils ont besoin d'un symbole réel pour effectuer une nouvelle transition.ϵϵϵ
Définissez les états de comme des tuples de la forme où ( est l'ensemble des états du origine ) et .M<q,n>q∈QQPDAn∈{1,2,3,4}
Si dans , soit dans si .δ(q,ϵ,X)=<q′,α>Oδ(<q,3>,ϵ,X)=<<q′,2>,α>Mq∈FO
Si dans , soit dans si .δ(q,ϵ,X)=<q′,α>Oδ(<q,3>,ϵ,X)=<<q′,3>,α>Mq∉FO
Si dans , soit dans .δ(q,ϵ,X)=<q′,α>Oδ(<q,2>,ϵ,X)=<<q′,2>,α>M
Si n'est dans , dansδ(q,ϵ,X)undefinedOδ(<q,2>,ϵ,X)=<<q,1>,X>M
Si n'est dans , dansδ(q,ϵ,X)undefinedOδ(<q,3>,ϵ,X)=<<q,4>,X>M
Dans ces définitions, nous laissons les états de la forme et consommer -moves imitant -moves de jusqu'à ce qu'il n'y en ait plus. Ensuite, effectuez un -move à un état de lecture. Maintenant pour les états de lecture,<q,2><q,3>ϵϵOϵ
- Si dans , soit en .δ(q,a,X)=<q′,α>Oδ(<q,1>,a,X)=δ(<q,4>,a,X)=<<q′,3>,α>M
En faisant cette définition, nous consommons un symbole de l'entrée et passons à un état de la forme pour commencer une nouvelle série de -moves.<q,3>ϵ
Enfin, faire des états de la forme accepter des états de si . En outre, make l'état initial de si est l'état initial d' .<q,4>Mq∉FO<q0,3>Mq0O
Ce que nous avons fait est le suivant:
Créez 4 "étages" d'états (le deuxième élément du tuple dans les états de détermine dans quel étage nous sommes). Etage 3 imite -moves de pouvant atteindre un état acceptant d' . Si tel est le cas, nous passons à l'étage 2; sinon, nous restons à l'étage 3. Lorsqu'il n'y a plus de -moves à suivre de , nous définissons -moves de pour atteindre un état de lecture. Les étages 1 et 4 correspondent aux états de lecture. Si nous étions à l'étage 3, nous allons à l'étage 4. Si nous étions à l'étage 2, nous atteignons l'étage 1. Seuls les états (les états qui sont à l'étage 4) acceptent les états deMϵOqOϵOϵM<q,4>M , à condition que ne sont pas accepter un état de .qO
Veuillez me faire savoir si j'ai fait une faute de frappe lors de l'écriture de ceci. J'aurais pu facilement me tromper. De plus, mon anglais n'est pas très bon, alors n'hésitez pas à modifier et à reformuler les choses mieux.