Je rencontre des problèmes 'décrivant chaque étape' lors de la création d'une NFA à partir d'une expression régulière. La question est la suivante:
Convertissez l'expression régulière suivante en un automate à états finis non déterministe, décrivant clairement les étapes de l'algorithme que vous utilisez: (B | a) * b (a | b)
J'ai créé une machine simple à 3 états mais elle provient d'une intuition ..__ Ceci est une question d'un examen passé écrit par mon conférencier, qui a également écrit l'explication suivante de l'algorithme de Thompson: http: // www .cs.may.ie/staff/jpower/Courses/Précédent/Parsing/node5.html
Quelqu'un peut-il expliquer comment "décrire chaque étape clairement"? Cela ressemble à un ensemble de règles de base plutôt qu’à un algorithme avec des étapes à suivre.
Peut-être y a-t-il un algorithme que j'ai survolé quelque part, mais jusqu'à présent je l'ai simplement créé avec une supposition éclairée.
Dans le référentiel GitHub ci-dessous, vous pouvez trouver une implémentation Java de la construction de Thompson dans laquelle un NFA est d'abord créé à partir de l'expression rationnelle, puis une chaîne d'entrée est comparée à ce NFA: