Non-déterminisme et déterminisation
Nous avons introduit au chapitre 1 une distinction entre automates finis déterministes et automates finis non-déterministes. La notion de non déterministe provient de l'impossiblité de déterminer l'état courant de l'automate, à partir de son état initial et les symboles lus.
Nous avons vu au chapitre 2 l'intérêt des transition instantanées (étiquetées ) pour la construction de Kleene qui construit, pour toute expression régulière, un automate fini non-déterministe qui accepte le même langage. Il se pose alors la question de l'expressivité du non-déterminisme : existe-t-il des langages réguliers qui sont acceptés par des AFN, mais par aucun AFD ? Nous avons en effet montré que tout problème de décision décrit par un langage régulier est décidé par un automate fini non déterministe. Existe-t-il donc des problèmes de décision "réguliers" qui ne peuvent pas être décidées par un automate fini déterministe ?
Élimination du non-déterminisme
Considérons l'automate fini non déterministe suivant.
accepte en particulier le mot , notamment sur l'execution suivante
Nous remarquons que cette exécution contient deux transitions instantanées qui sont toutes les deux indispensables à pour accepter (sur cette exécution) puisque d'une part depuis il n'y a aucune transition d'étiquette , et d'autre part sans la transition , l'exécution se terminerait en qui n'est pas accepteur. En toute généralité, il peut être nécessaire qu'un automate fini non-déterministe franchisse une ou plusieurs transition instantanées avant et après avoir lu chaque symbole du mot d'entrée afin de l'accepter. La figure suivante présente l'arbre des exécutions de sur le mot où nous avons donné l'occasion à de franchir autant de transitions instantanées que possible (les symboles de sont séparés par des ). Nous voyons en particulier que pour toutes les exécutions acceptantes de sur , il est nécessaire de commencer par une transition instantanée : soit soit . Rappelons également que permet de boucler sur tout état. Nous construisons la séquence de transitions d'ensemble d'états en ensemble d'états de en regroupant les états suivant leur distance à la racine dans l'arbre
Dans cette séquence, transition signifie que sans avoir lu aucune lettre du mot , peut se déplacer de l'état à l'un des états ou . Puis les deux transitions indiquent que depuis un état parmi , en lisant le symbole , atteint un état parmi , puis peut se déplacer suivant des transitions instantanées (si possible) pour se trouver dans un état parmi . Les transitions de la séquence peuvent donc être regroupées de la façon suivante
L'ensemble des exécutions d'un automate fini non-déterministe sur un mot peut donc être vue comme suit.
- dbéute dans l'ensemble q\epsilonq$
- Puis lit le premier symbole et atteint l'ensemble des états pour lesquels il existe une séquence de transition issue d'un état , débutant par et suivie d'une séquence (éventullement vide) de transistions 3. Puis lit le second symbole et atteint l'ensemble d'états 4. et ainsi de suite
Nous pouvons in fine éliminer les pour obtenir la séquence de transitions qui suit
Nous présentons maintenant, une construction de déterminisation des automates finis non déterministe qui généralise le principe exposé ci-dessus. Celle-ci requiert donc deux phases
- L'élimination des transitions instantanées
- Et l'élimination des choix non déterministes
Clôture instantanée
Reprenons la séquence des transitions de l'équation. La première transition définit l'ensemble des états accessibles depuis .
Soit un automate fini et un état de . La cloture instantanée
de notée est l'ensemble des états de accessibles depuis par une séquence (éventuellement vide) de transitions instantanées
La cloture instantanée se généralise à un ensemble d'états