4 Des automates différents peuvent être associés au même langage.\\
6 L'optimisation des programmes d'analyse syntaxique (dont certains sont des réalisations concrètes d'automates finis) rend nécessaire la construction d'un automate minimal (en nombre d'états) qui reconnaissent un langage donné.\\
8 On se limitera dans ce chapitre à la simplification d'un automate de Moore (puisque la méthode de construction par sous-ensemble permet de se ramener d'un AFND à un AFD).
10 \section{Congruences d'automates}
12 Soit $(E,I,t)$ un AFD et $\mathcal{R}$ une relation d'équivalence sur $E$.
14 \subsection{Quelques rappels}
16 On rappelle que $\mathcal{R}$ est une relation binaire sur l'ensemble $E$ des états, qui a en plus les propriétés suivantes...
18 \item[- réfléxivité.] Pour tout état $e \in E, ~ e \mathcal{R} e$,
19 \item[- symétrie.] Pour tout couple d'états $(e_1, e_2) \in E^2$ : si $e_1 \mathcal{R} e_2$, alors $e_2 \mathcal{R} e_1$,
20 \item[- transitivité.] Pour tout triplet d'états $(e_1, e_2, e_3) \in E^3$ : si $e_1 \mathcal{R} e_2$ et $e_2 \mathcal{R} e_3$, alors $e_1 \mathcal{R} e_3$.
27 On considère l'automate :
31 \begin{picture}(143,75)(-50,-75)
33 \node[NLangle=0.0,Nmarks=i](n0)(16.0,-20.0){$e_0$}
35 \node[NLangle=0.0,iangle=128.23](n1)(44.0,-20.0){$e_1$}
37 \node[NLangle=0.0](n2)(16.0,-44.0){$e_2$}
39 \node[NLangle=0.0,Nmarks=r](n3)(44.0,-44.0){$e_3$}
41 \drawloop[ELdist=1.7,loopangle=37.45](n1){1}
43 \drawloop[ELdist=2.2,loopangle=225.0](n2){0}
45 \drawedge[ELdist=2.8](n0,n1){0}
47 \drawedge[ELdist=1.5](n1,n3){0}
49 \drawedge[ELside=r,ELdist=2.7](n2,n3){1}
51 \drawedge[ELside=r,ELdist=3.4](n0,n2){0,1}
53 \drawedge[ELside=r,ELdist=2.1](n0,n3){1}
56 \noindent et la relation binaire $e_i \mathcal{R} e_j$ si et seulement si $i$ et $j$ ont la même parité.
58 Montrez que $\mathcal{R}$ est bien une relation d'équivalence sur $E$.
62 On rappelle encore que $t : E \times I \rightarrow E$ est la fonction de transition. Par la suite, par souci de concision, on notera $t_{x}(e)$ pour $t(e,x)$.
64 \subsection{Définition}
66 \begin{Def}[Congruence d'automates]
67 On dit que $\mathcal{R}$ est une \emph{congruence d'automates}\index{congruence d'automates} si et seulement si
68 $$\forall (r,s) \in E^2, \forall x \in I, (r \mathcal{R} s) \Longrightarrow (t_x(r) \mathcal{R} t_x(s))$$
69 C'est-à-dire si toute paire d'états équivalents modulo $\mathcal{R}$ est transformée par toute entrée en une paire d'états équivalents modulo $\mathcal{R}$.
74 La relation d'équivalence $\mathcal{R}$ de l'exercice précédent est-elle une congruence d'automates ?
77 \subsection{Ensemble quotient}
79 Soit $\mathcal{R}$ une congruence d'automates sur l'AFD $(E,I,t)$.
82 On note $\tilde{E}$, l'ensemble quotient $E/\mathcal{R}$.\\
88 Représenter le graphe de l'automate $M$ dont la table de transition des états est
89 $$\begin{array}{|c|cc|}
103 Soit $\mathcal{R}$ la relation d'équivalence pour laquelle $E/ \mathcal{R} = \{ \{ e_0, e_2 \}, \{ e_1, e_3, e_5 \}, \{ e_4 \} \}.$
106 \item Donner la table de transition d'états de l'automate-quotient.
107 \item Représenter son graphe
114 $$\begin{array}{|c|c|c|}
118 A = \{e_0, e_2\} & \{e_0, e_2\} & \{e_4\} \\
119 B = \{e_1, e_3, e_5 \} & \{e_1, e_3, e_5 \} & \{e_0, e_2\}\\
120 C = \{e_4\} & \{e_4\} & \{e_1, e_3, e_5 \} \\
127 \begin{picture}(74,83)(0,-83)
129 \node[NLangle=0.0](n7)(24.0,-36.0){C}
131 \node[NLangle=0.0](n8)(52.0,-16.0){A}
133 \node[NLangle=0.0](n9)(52.0,-56.0){B}
135 \drawedge[ELdist=2.0](n8,n7){b}
137 \drawedge[ELdist=2.0](n7,n9){b}
141 \drawloop[ELdist=1.7,loopangle=53.62](n8){a}
143 \drawloop[ELdist=1.7,loopangle=-60.55](n9){a}
145 \drawloop[ELdist=1.7,loopangle=176.01](n7){a}
150 Soit $M$ l'automate fini dont la table de transition des états est
152 $$\begin{array}{|c|cc|}
165 Soit $\mathcal{R}$ la relation d'équivalence sur $E = \{1,2,3,4,5\}$ telle que $1 \mathcal{R} 4$ et $3 \mathcal{R} 2$.
167 \item Que vaut $E/\mathcal{R}$?
168 \item Montrer que $\mathcal{R}$ est une congruence d'automates.
169 \item Donner la table de transition des états de l'automate-quotient.
170 \item Représenter son graphe.
177 Soit $M$ l'automate fini dont le graphe est représenté par la figure\\
181 \begin{picture}(103,62)(0,-62)
183 \node[NLangle=0.0](n16)(16.0,-16.0){0}
185 \node[NLangle=0.0](n17)(40.0,-16.0){1}
187 \node[NLangle=0.0](n18)(40.0,-40.0){3}
189 \node[NLangle=0.0](n19)(64.0,-16.0){5}
191 \node[NLangle=0.0](n20)(64.0,-40.0){4}
193 \drawedge[ELside=r,ELdist=2.2](n17,n19){1}
195 \drawedge[ELside=r,ELdist=2.8,syo=1.0,eyo=1.0](n19,n17){ 1}
197 \node[NLangle=0.0](n22)(88.0,-16.0){2}
199 \drawedge[ELdist=2.1](n20,n19){1}
201 \drawedge[ELdist=2.1](n19,n22){O}
203 \drawedge[ELdist=2.1](n22,n20){1}
205 \drawedge[ELdist=2.1](n17,n18){0}
207 \drawedge[ELdist=2.1](n18,n16){1}
209 \drawedge[ELdist=2.1](n16,n17){1}
211 \drawloop[ELside=r,ELdist=2.1](n22){0}
213 \drawloop[ELside=r,ELdist=2.1](n16){0}
215 \drawloop[ELside=r,ELdist=2.1,loopangle=-87.44](n18){0}
217 \drawloop[ELside=r,ELdist=2.1,loopangle=-90.0](n20){0}
224 Le tableau ci-dessous figure une relation binaire $\mathcal{R}$ dans l'ensemble des états $E = \{ 0,1,2,3,4,5 \}$ :
226 $$\begin{array}{|c|cccccc|}
228 & 0 & 1 & 2 & 3 & 4 & 5 \\
230 0 & 1 & 0 & 0 & 0 & 1 & 0 \\
231 1 & 0 & 1 & 0 & 0 & 0 & 1 \\
232 2 & 0 & 0 & 1 & 1 & 0 & 0 \\
233 3 & 0 & 0 & 1 & 1 & 0 & 0 \\
234 4 & 1 & 0 & 0 & 0 & 1 & 0 \\
235 5 & 0 & 1 & 0 & 0 & 0 & 1 \\
240 Un chiffre 1 à l'intersection de la ligne $i$ et de la colonne $j$ signifie que $i \mathcal{R} j$, et un chiffre 0 que ces deux éléments ne sont pas en relation.
242 \item Montrer que $\mathcal{R}$ est une relation d'équivalence sur $E$.
243 \item Montrer que $\mathcal{R}$ est une congruence d'automates.
244 \item Représenter le graphe de l'automate-quotient $M/\mathcal{R}$.
250 $$\begin{array}{c|c|c}
253 A = \{0, 4 \} & \{0, 4 \} & \{1, 5\} \\
254 B = \{1, 5\} & \{3, 2\} & \{1, 5\} \\
255 C = \{3, 2\} & \{3, 2\} & \{0, 4 \}\\
262 \begin{picture}(74,83)(0,-83)
264 \node[NLangle=0.0](n7)(24.0,-36.0){C}
266 \node[NLangle=0.0](n8)(52.0,-16.0){A}
268 \node[NLangle=0.0](n9)(52.0,-56.0){B}
270 \drawedge[ELdist=2.0](n7,n8){1}
272 \drawedge[ELdist=2.0](n9,n7){0}
276 \drawloop[ELdist=1.7,loopangle=53.62](n8){0}
278 \drawloop[ELdist=1.7,loopangle=-60.55](n9){1}
280 \drawloop[ELdist=1.7,loopangle=176.01](n7){0}
285 On peut définir une application $\tilde{t}_x : \tilde{E} \rightarrow \tilde{E}$ par $\tilde{t}_x (\dot{e}) = \dot{[t_x(e)]}$, puis une application $\tilde{t} : \tilde{E} \times I \rightarrow \tilde{E}$ par $(\dot{e},i) \longmapsto \tilde{t}_x(\dot{e})$.
288 \section{\'Equivalence de Nérode}
290 \subsection{L'équivalence}
292 Soit $M = (E,I,t,e_0,A)$ un automate de Moore, deux états $q$ et $s$ de $E$, et $w \in I^*$ un mot d'entrée.
294 \begin{Def}[w-compatibles]
295 $q$ est $s$ sont \emph{$w$-compatible}\index{w-compatible} si et seulement si $$t_w(q) \in A \Longleftrightarrow t_w(s) \in A$$
298 Cette définition permet de définir une relation $\sim$ dans $E$ par
300 $$(q \sim s) \Longleftrightarrow \left(\forall w \in I^*, q \textrm{ et } s \textrm{ sont } w \textrm{-compatibles} \right)$$
302 \begin{Def}[\'Equivalence de Nérode]
303 Cette relation est manifestement une relation d'équivalence, elle est appelée \emph{\'equivalence de N\'erode}\index{équivalence!de Nérode} associée à $M$.
307 On démontre facilement que cette équivalence est une congruence d'automates. Tout automate de Moore peut donc être remplacé par son quotient par l'équivalence de Nérode.
309 Dans ce quotient, le nombre d'états est évidemment plus petit, l'automate obtenu est donc plus \og simple\fg{}.
316 \subsection{L'algorithme}
318 \subsubsection{La théorie}
320 Pour obtenir l'équivalence de Nérode associée à un automate, on dispose de l'algorithme suivant...\\\\
322 Soit $M=\{E,I,t,e_0,A\}$ un automate de Moore.
324 On définit, pour tout $k \in \mathbb{N}$, une relation $\mathcal{R}_k$ sur E en posant
326 $$[ q \mathcal{R}_k s ] \Longleftrightarrow \left[ (\forall w \in I^*), (l(w) \leqslant k \Longrightarrow q \text{ et } s \text{ sont } w\text{-compatibles}) \right]$$
328 Donc $q$ et $s$ sont en relation par $\mathcal{R}_k$ lorsqu'ils sont $w$-compatibles, pour tout mot $w$ de longueur inférieure ou égale à $k$.\\
330 Cette relation est clairement une relation d'équivalence, et $\mathcal{R}_{k+1}$ est plus fine que $\mathcal{R}_k$. L'équivalence de Nérode est l'intersection de ces relations $\mathcal{R}_k$, pour toutes les valeurs de $k$ entier.
332 \subsubsection{La pratique}
334 Cet algorithme n'est pas utilisable dans la pratique. On fait plutôt...
337 \item Prendre comme partition de départ $P_0 = \{A, E \setminus A \}$.
338 \item Si $P_k=\{E_1, \hdots, E_n \} $ est la partition correspondant à la relation $\mathcal{R}_k$, morceler éventuellement chaque classe $E_i$ en sous-classes $E_{i1}, E_{i2}, \hdots, E_{ip}$ de manière que deux états $q$ et $s$ appartiennent à la même sous-classe si, pour toute entrée $x$, les états $t_x(q)$ et $t_x(s)$ appartiennent à la même classe $E_j$ (pouvant dépendre de $x$).
340 L'ensemble des sous-classes obtenues constitue la partition correspondant à la relation $\mathcal{R}_{k+1}$
341 \item Répéter l'étape précédente jusqu'à ce que $P_{k+1}=P_k$. La relation $\mathcal{R}_k$ est alors l'équivalence de Nérode associée à M.
345 L'étape (3) est nécessairement atteinte, puisque les relations $\mathcal{R}_k$ sont de plus en plus fines.
347 Au pire, $P = \{ \{q \} \|q \in E \}$, la relation est l'égalité : ceci signifie que l'automate n'est pas simplifiable.
352 Un automate de Moore et l'automate simplifié.
356 \begin{picture}(174,77)(0,-77)
358 \node[NLangle=0.0,Nmarks=i](n24)(12.0,-12.0){1}
360 \node[NLangle=0.0](n25)(40.0,-12.0){2}
362 \node[NLangle=0.0,Nmarks=r](n26)(68.0,-12.0){3}
364 \node[NLangle=0.0,Nmarks=r](n27)(12.0,-36.0){4}
366 \node[NLangle=0.0](n28)(68.0,-36.0){7}
368 \node[NLangle=0.0,Nmarks=r](n29)(40.0,-60.0){5}
370 \node[NLangle=0.0](n30)(68.0,-60.0){6}
372 \drawedge[ELdist=2.0](n24,n25){a}
374 \drawedge[ELside=r,ELdist=2.0](n24,n27){b}
376 \drawedge[ELdist=2.0](n27,n28){b}
378 \drawedge[ELside=r,ELdist=2.0](n25,n28){b}
380 \drawedge[ELside=r,ELdist=2.0](n26,n28){a}
382 \drawedge[ELdist=2.0](n29,n28){a}
384 \drawedge[ELdist=2.0](n30,n28){b}
386 \drawedge[ELdist=2.0](n27,n29){a}
388 \drawedge[ELside=r,ELdist=3.1,syo=1.0,eyo=1.0](n26,n25){ b}
390 \drawedge[ELside=r,ELdist=2.0](n25,n26){a}
392 \drawedge[ELdist=3.0,syo=1.0,eyo=1.0](n29,n30){ b}
394 \drawedge[ELdist=2.0](n30,n29){a}
396 \drawloop[ELdist=2.5,loopangle=1.1](n28){a,b}
398 \node[NLangle=0.0,Nmarks=i](n31)(96.0,-20.0){1}
400 \node[NLangle=0.0,Nmarks=r](n32)(96.0,-52.0){4}
402 \node[NLangle=0.0,Nmarks=r](n33)(128.0,-52.0){3,5}
404 \node[NLangle=0.0](n34)(128.0,-20.0){2,6}
406 \node[NLangle=0.0](n35)(152.0,-36.0){7}
408 \drawloop[ELdist=2.0,loopangle=0.0](n35){ a,b}
410 \drawedge[ELside=r,ELdist=2.0](n31,n32){b}
412 \drawedge[ELdist=2.0](n31,n34){a}
414 \drawedge[ELdist=2.0](n32,n33){a}
416 \drawedge[ELdist=2.0](n34,n35){b}
418 \drawedge[ELdist=2.0](n33,n35){a}
420 \drawedge[ELdist=2.0,sxo=1.0,exo=1.0](n34,n33){ a}
422 \drawedge[ELdist=2.0](n33,n34){b}
424 \drawbpedge[ELside=r,ELdist=2.0](n32,-90,19.99,n35,-89,37.16){b}
433 On donne un AFD par la table de transition des états suivante :
434 $$\begin{array}{|c||c|c|}
449 \'Etats d'acceptation : 4
452 \noindent Cet automate reconnaît le langage défini par l'expression régulière $(a|bb)bab^*$.
454 \noindent Appliquer la méthode de l'équivalence de Nérode pour trouver l'automate minimal reconnaissant le langage.
459 Faire de même avec l'automate de Moore dont la table de transition est :
460 $$\begin{array}{|c||c|c|}
477 \section{Méthode du dual}
479 \subsection{Dual d'un automate}
481 Soit $M = (E,I,t,S,A)$ un automate quelconque (AFD ou AFND).
484 L'automate dual de $M$ est l'automate $M^{-1} = (E,I,t',A,S)$, où $t'$ est la relation sur $E$ obtenue en renversant toutes les flèches sur le graphe de $M$, c'est-à-dire si $R' \subset (E \times I) \times E$ est le graphe de la relation $t'$, alors que le graphe de $t$ est $R$, on a
485 $$((e,i),e') \in R' \Longleftrightarrow ((e',i),e) \in R$$
488 Il est clair que $M$ reconnaît un mot $w \in I^*$ si et seulement si $M^{-1}$ reconnaît le mot $w^{-1}$ (si $w = a_1 a_2 \hdots a_n$, alors $w^{-1} = a_n a_{n-1} \hdots a_1$).
490 Le dual d'un automate à comportement déterminé n'est pas nécessairement à comportement déterminé.
493 \subsection{Méthode du dual}
495 Soit $M$ un automate de Moore :
498 \item Construire l'automate dual $M^{-1}$ de $M$.
499 \item Appliquer la construction par sous-ensembles à $M^{-1}$ pour le transformer en automate $M'$ de Moore.
500 \item Construire le dual ${M'}^{-1}$ de $M'$.
501 \item Appliquer la construction par sous-ensemble à ${M'}^{-1}$ pour obtenir l'automate de Moore $M''$.
504 L'automate $M''$ est l'automate minimal tel que $\mathcal{L}(M'') = \mathcal{L}(M)$.
509 On donne un AFD par la table de transition des états suivante :
510 $$\begin{array}{|c||c|c|}
533 \'Etats d'acceptation : 0 3 4 5 6 7 8 11 12
536 \noindent Cet automate reconnaît le langage défini par l'expression régulière $((a|b)^2)^* | ((a|b)^3)^*$.
538 \noindent Appliquer la méthode du dual pour trouver l'automate minimal reconnaissant le langage.
544 On donne un automate non déterministe, à transitions instantannées, par la table de transition suivante :
545 $$\begin{array}{|c||c|c|c|}
547 t & \varepsilon & a & b\\
579 \'Etat d'acceptation : 22
583 \noindent Cet automate reconnaît le langage défini par l'expression régulière $ba^* | ab | (a | bb) ab^*$.
585 \noindent Le déterminiser, puis lui appliquer la méthode de votre choix pour obtenir l'automate minimal reconnaissant le langage.
594 On donne la table de transition suivante pour un automate fini :
595 $$\begin{array}{|c||c|c|}
626 L'état initial est 0, et les états d'acceptation sont 4, 5, 9 et 11.\\
628 \noindent Appliquer à cet automate l'algorithme de votre choix pour obtenir l'automate minimal reconnaissant le même langage (équivalence de Nérode ou dual).
630 (L'automate minimal possède 7 états).
637 \subsubsection{Construction par sous-ensemble}
641 \item[Domaine d'application : ] Cette méthode s'applique aux automates finis non déterministes. Il est aussi possible de l'utiliser sur un AFD, mais c'est sans intérêt.
642 \item[Résultat : ] Automate reconnaissant le même langage.
643 \item[But : ] Obtenir un AFD reconnaissant le même langage.
644 \item[Autre utilisation : ] Peut permettre d'obtenir l'automate minimal reconnaissant le même langage (méthode du dual).
647 \subsubsection{\'Equivalence de Nérode}
650 \item[Domaine d'application : ] Cette méthode ne s'applique qu'aux automates finis dé\-ter\-mi\-nis\-tes (AFD).
651 \item[Résultat : ] Le quotient de l'automate considéré par l'équivalence de Nérode ; un automate ne reconnaissant généralement pas le même langage.
652 \item[But : ] Simplifier l'automate considéré, si c'est possible, grâce à la méthode des quotients.
655 \subsection{Méthodes d'optimisation}
657 \subsubsection{Méthode des quotients}
660 \item[Domaine d'application : ] Cette méthode ne s'applique qu'aux automates finis dé\-ter\-mi\-nis\-tes (AFD).
661 \item[Moyens : ] \'Equivalence de Nérode.
662 \item[Résultat : ] On obtient l'automate minimal reconnaissant le même langage.
665 \subsubsection{Méthode du dual}
668 \item[Domaine d'application : ] Cette méthode ne s'applique qu'aux automates finis dé\-ter\-mi\-nis\-tes (AFD).
669 \item[Moyens : ] Construction par sous-ensembles.
670 \item[Résultat : ] L'automate de Moore minimal reconnaissant le même langage.
671 \item[Efficacité : ] \'Elégant, mais pas efficace.
676 \centerline{\x{Fin du Chapitre}}