Skip to main content

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 ε\varepsilon) 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 ANA_N suivant.

A_N

ANA_N accepte en particulier le mot aabbaabb, notamment sur l'execution suivante

q0ϵq3aq3aq3bq4ϵq3bq4 q_0 \stackrel{\epsilon}{\rightarrow} q_3 \stackrel{a}{\rightarrow} q_3 \stackrel{a}{\rightarrow} q_3 \stackrel{b}{\rightarrow} q_4 \stackrel{\epsilon}{\rightarrow} q_3 \stackrel{b}{\rightarrow} q_4

Nous remarquons que cette exécution contient deux transitions instantanées qui sont toutes les deux indispensables à ANA_N pour accepter aabbaabb (sur cette exécution) puisque d'une part depuis q0q_0 il n'y a aucune transition d'étiquette aa, et d'autre part sans la transition q4ϵq3q_4 \stackrel{\epsilon}{\rightarrow} q_3, l'exécution se terminerait en q3q_3 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 ANA_N sur le mot aabbaabb où nous avons donné l'occasion à ANA_N de franchir autant de transitions instantanées que possible (les symboles de aabbaabb sont séparés par des ϵ\epsilon). Nous voyons en particulier que pour toutes les exécutions acceptantes de ANA_N sur aabbaabb, il est nécessaire de commencer par une transition instantanée : soit q0ϵq1q_0 \stackrel{\epsilon}{\rightarrow} q_1 soit q0ϵq3q_0 \stackrel{\epsilon}{\rightarrow} q_3. Rappelons également que ϵ\epsilon permet de boucler sur tout état. Nous construisons la séquence de transitions d'ensemble d'états en ensemble d'états de ANA_N en regroupant les états suivant leur distance à la racine q0q_0 dans l'arbre

{q0}ϵ{q1,q2,q3}ϵ{q1,q2,q3}a{q1,q2,q3}ϵ \{ q_0\} \stackrel{\epsilon}{\rightarrow} \{q_1, q_2, q_3\} \stackrel{\epsilon}{\rightarrow} \{ q_1,q_2,q_3\} \stackrel{a}{\rightarrow} \{ q_1, q_2, q_3\} \stackrel{\epsilon}{\rightarrow} {q1,q2,q3}b{q1,q4}ϵ{q1,q3,q4}b{q3,q4}ϵ{q3,q4} \{q_1,q_2,q_3\} \stackrel{b}{\rightarrow} \{q_1,q_4\} \stackrel{\epsilon}{\rightarrow} \{q_1,q_3,q_4\} \stackrel{b}{\rightarrow} \{q_3,q_4\} \stackrel{\epsilon}{\rightarrow} \{q_3,q_4\}

Arbre

Dans cette séquence, transition {q0}ϵ{q0,q1,q3}\{q_0\} \stackrel{\epsilon}{\rightarrow} \{q_0,q_1,q_3\} signifie que sans avoir lu aucune lettre du mot aabbaabb, ANA_N peut se déplacer de l'état q0q_0 à l'un des états q0,q1q_0,q_1 ou q3q_3. Puis les deux transitions {q0,q1,q3}a{q1,q2,q3}ϵ{q1,q2,q3}\{q_0,q_1,q_3\} \stackrel{a}{\rightarrow} \{q_1,q_2,q_3\} \stackrel{\epsilon}{\rightarrow} \{q_1,q_2,q_3\} indiquent que depuis un état parmi {q0,q1,q3}\{q_0,q_1,q_3\}, en lisant le symbole aa, ANA_N atteint un état parmi {q1,q2,q3}\{q_1,q_2,q_3\}, puis ANA_N peut se déplacer suivant des transitions instantanées (si possible) pour se trouver dans un état parmi {q1,q2,q3}\{q_1,q_2,q_3\}. Les transitions de la séquence peuvent donc être regroupées de la façon suivante

{q0}ϵ{q0,q1,q3}a.ϵ{q1,q2,q3}a,ϵ{q1,q2,q3}b,ϵ{q1,q3,q4}b,ϵ{q3,q4}\{q_0\} \stackrel{\epsilon}{\rightarrow} \{q_0,q_1,q_3\} \stackrel{a. \epsilon}{\rightarrow} \{q_1,q_2,q_3\} \stackrel{a,\epsilon}{\rightarrow} \{q_1,q_2,q_3\} \stackrel{b, \epsilon}{\rightarrow}\{q_1,q_3,q_4\} \stackrel{b, \epsilon}{\rightarrow} \{q_3,q_4\}

L'ensemble des exécutions d'un automate fini non-déterministe AA sur un mot ω=ω1...ωn\omega=\omega_1 ... \omega_n peut donc être vue comme suit.

  1. AA dbéute dans l'ensemble X0={qQq0I,q0ϵq}deseˊtatsX_0 = \{q \in Q | \exists q_0 \in I, q_0 \stackrel{\epsilon}{\rightarrow} q\} des états qpourlesquelsilexisteuneseˊquence(eˊventuellementvide)detransitionspour lesquels il existe une séquence (éventuellement vide) de transitions\epsilonduneˊtatinitialaˋd'un état initial àq$
  2. Puis AA lit le premier symbole ω1\omega_1 et atteint l'ensemble X1={qQqX0,qω1,ϵq}X_1 = \{q' \in Q | \exists q \in X_0 , q \stackrel{\omega_1, \epsilon}{\rightarrow} q'\} des états qq' pour lesquels il existe une séquence de transition issue d'un état qX0q \in X_0, débutant par w1w_1 et suivie d'une séquence (éventullement vide) de transistions ϵ\epsilon 3. Puis AA lit le second symbole w2w_2 et atteint l'ensemble d'états X2={qQqX1,qqw2,ϵ}X_2 = \{ q' \in Q | \exists q \in X_1, q \stackrel{w_2, \epsilon} q'\} 4. et ainsi de suite

Nous pouvons in fine éliminer les ϵ\epsilon pour obtenir la séquence de transitions qui suit

{q0,q1,q3}a{q1,q2,q3}a{q1,q2,q3}b{q1,q3,q4}b{q3,q4} \{q_0,q_1,q_3\} \stackrel{a}{\rightarrow} \{q_1,q_2,q_3\} \stackrel{a}{\rightarrow}\{q_1,q_2,q_3\} \stackrel{b}{\rightarrow}\{q_1,q_3,q_4\} \stackrel{b}{\rightarrow} \{q_3,q_4\}

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

  1. L'élimination des transitions instantanées
  2. 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 {q0}ϵ{q0,q1,q3}\{q_0\} \stackrel{\epsilon}{\rightarrow} \{q_0,q_1,q_3\} définit l'ensemble des états accessibles depuis {q0}\{q_0\}.

Soit un automate fini A=(Q,Σ,δ,I,F)A=(Q,\Sigma,\delta,I,F) et qq un état de AA. La cloture instantanée de qq notée clϵ(q)cl_{\epsilon}(q) est l'ensemble des états de AA accessibles depuis qq par une séquence (éventuellement vide) de transitions instantanées

clϵ(q)={qQqϵq}cl_\epsilon(q)=\{q' \in Q | q \stackrel{\epsilon}{\rightarrow} q'\}

La cloture instantanée se généralise à un ensemble d'états XQX \subseteq Q

clϵ(X)=qXclϵ(q)cl_\epsilon(X)= \bigcup \limits_{q \in X} cl_\epsilon(q)