2012-02-09 2 views
12

Je savais que convertir une expression régulière en NFA, il y a un algorithme.Comment convertir NFA en Expression Régulière

Mais je me demandais s'il existe un algorithme pour convertir un NFA en expression régulière. S'il y a, qu'est-ce que c'est?

Et s'il n'y en a pas, je me demande aussi si tous les NFA peuvent convertir en une expression régulière. Existe-t-il une NFA qu'une expression régulière ne peut pas représenter?

Merci! : D

+0

Une expression régulière peut exprimer * tout * langue régulière, donc il devrait exister au moins une expression régulière pour chaque NFA possible. Cependant, je ne connais pas d'algorithme pour passer d'une NFA à une expression régulière au-dessus de ma tête. –

+0

En outre, votre timing est vraiment étrange - mon ami m'a demandé exactement la même question en classe aujourd'hui. Je ne me souviens pas de la réponse alors soit :( –

+2

Voir une variété de réponses à votre question ici: http://cs.stackexchange.com/questions/2016/how-to-convert-finite-automata-to-regular- expressions – Masterfool

Répondre

8

Voici un algorithme où chaque transition est progressivement remplacée par une expression régulière, jusqu'à ce qu'il n'y est qu'un état initial et final: https://courses.engr.illinois.edu/cs373/sp2009/lectures/lect_08.pdf [PDF]

+0

c'est correct mais ça ne marche pas si vous aviez beaucoup de nœuds, c'est bon pour un simple et quelques nœuds, y at-il une autre suggestion? –

+2

Le lien est mort pour moi.J'ai trouvé ce lien pensé: https://courses.engr.illinois.edu/cs373/sp2009/lectures/lect_08.pdf –

Questions connexes