\( %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Mes commandes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\multirows}[3]{\multirow{#1}{#2}{$#3$}}%pour rester en mode math \renewcommand{\arraystretch}{1.3}%pour augmenter la taille des case \newcommand{\point}[1]{\marginnote{\small\vspace*{-1em} #1}}%pour indiquer les points ou le temps \newcommand{\dpl}[1]{\displaystyle{#1}}%megamode \newcommand{\A}{\mathscr{A}} \newcommand{\LN}{\mathscr{N}} \newcommand{\LL}{\mathscr{L}} \newcommand{\K}{\mathbb{K}} \newcommand{\N}{\mathbb{N}} \newcommand{\Z}{\mathbb{Z}} \newcommand{\Q}{\mathbb{Q}} \newcommand{\R}{\mathbb{R}} \newcommand{\C}{\mathbb{C}} \newcommand{\M}{\mathcal{M}} \newcommand{\D}{\mathbb{D}} \newcommand{\E}{\mathcal{E}} \renewcommand{\P}{\mathcal{P}} \newcommand{\G}{\mathcal{G}} \newcommand{\Kk}{\mathcal{K}} \newcommand{\Cc}{\mathcal{C}} \newcommand{\Zz}{\mathcal{Z}} \newcommand{\Ss}{\mathcal{S}} \newcommand{\B}{\mathbb{B}} \newcommand{\inde}{\bot\!\!\!\bot} \newcommand{\Proba}{\mathbb{P}} \newcommand{\Esp}[1]{\dpl{\mathbb{E}\left(#1\right)}} \newcommand{\Var}[1]{\dpl{\mathbb{V}\left(#1\right)}} \newcommand{\Cov}[1]{\dpl{Cov\left(#1\right)}} \newcommand{\base}{\mathcal{B}} \newcommand{\Som}{\textbf{Som}} \newcommand{\Chain}{\textbf{Chain}} \newcommand{\Ar}{\textbf{Ar}} \newcommand{\Arc}{\textbf{Arc}} \newcommand{\Min}{\text{Min}} \newcommand{\Max}{\text{Max}} \newcommand{\Ker}{\text{Ker}} \renewcommand{\Im}{\text{Im}} \newcommand{\Sup}{\text{Sup}} \newcommand{\Inf}{\text{Inf}} \renewcommand{\det}{\texttt{det}} \newcommand{\GL}{\text{GL}} \newcommand{\crossmark}{\text{\ding{55}}} \renewcommand{\checkmark}{\text{\ding{51}}} \newcommand{\Card}{\sharp} \newcommand{\Surligne}[2]{\text{\colorbox{#1}{ #2 }}} \newcommand{\SurligneMM}[2]{\text{\colorbox{#1}{ #2 }}} \newcommand{\norm}[1]{\left\lVert#1\right\rVert} \renewcommand{\lim}[1]{\underset{#1}{lim}\,} \newcommand{\nonor}[1]{\left|#1\right|} \newcommand{\Un}{1\!\!1} \newcommand{\sepon}{\setlength{\columnseprule}{0.5pt}} \newcommand{\sepoff}{\setlength{\columnseprule}{0pt}} \newcommand{\flux}{Flux} \newcommand{\Cpp}{\texttt{C++\ }} \newcommand{\Python}{\texttt{Python\ }} %\newcommand{\comb}[2]{\begin{pmatrix} #1\\ #2\end{pmatrix}} \newcommand{\comb}[2]{C_{#1}^{#2}} \newcommand{\arrang}[2]{A_{#1}^{#2}} \newcommand{\supp}[1]{Supp\left(#1\right)} \newcommand{\BB}{\mathcal{B}} \newcommand{\arc}[1]{\overset{\rotatebox{90}{)}}{#1}} \newcommand{\modpi}{\equiv_{2\pi}} \renewcommand{\Re}{Re} \renewcommand{\Im}{Im} \renewcommand{\bar}[1]{\overline{#1}} \newcommand{\mat}{\mathcal{M}} \newcommand{\und}[1]{{\mathbf{\color{red}\underline{#1}}}} \newcommand{\rdots}{\text{\reflectbox{$\ddots$}}} \newcommand{\Compa}{Compa} \newcommand{\dint}{\dpl{\int}} \newcommand{\intEFF}[2]{\left[\!\left[#1 ; #2\right]\!\right]} \newcommand{\intEFO}[2]{\left[\!\left[#1 ; #2\right[\!\right[} \newcommand{\intEOF}[2]{\left]\!\left]#1 ; #2\right]\!\right]} \newcommand{\intEOO}[2]{\left]\!\left]#1 ; #2\right[\!\right[} \newcommand{\ou}{\vee} \newcommand{\et}{\wedge} \newcommand{\non}{\neg} \newcommand{\implique}{\Rightarrow} \newcommand{\equivalent}{\Leftrightarrow} \newcommand{\Ab}{\overline{A}} \newcommand{\Bb}{\overline{B}} \newcommand{\Cb}{\overline{C}} \newcommand{\Cl}{\texttt{Cl}} \newcommand{\ab}{\overline{a}} \newcommand{\bb}{\overline{b}} \newcommand{\cb}{\overline{c}} \newcommand{\Rel}{\mathcal{R}} \newcommand{\superepsilon}{\varepsilon\!\!\varepsilon} \newcommand{\supere}{e\!\!e} \makeatletter \newenvironment{console}{\noindent\color{white}\begin{lrbox}{\@tempboxa}\begin{minipage}{\columnwidth} \ttfamily \bfseries\vspace*{0.5cm}} {\vspace*{0.5cm}\end{minipage}\end{lrbox}\colorbox{black}{\usebox{\@tempboxa}} } \makeatother \def\ie{\textit{i.e. }} \def\cf{\textit{c.f. }} \def\vide{ { $ {\text{ }} $ } } %Commande pour les vecteurs \newcommand{\grad}{\overrightarrow{Grad}} \newcommand{\Vv}{\overrightarrow{v}} \newcommand{\Vu}{\overrightarrow{u}} \newcommand{\Vw}{\overrightarrow{w}} \newcommand{\Vup}{\overrightarrow{u'}} \newcommand{\Zero}{\overrightarrow{0}} \newcommand{\Vx}{\overrightarrow{x}} \newcommand{\Vy}{\overrightarrow{y}} \newcommand{\Vz}{\overrightarrow{z}} \newcommand{\Vt}{\overrightarrow{t}} \newcommand{\Va}{\overrightarrow{a}} \newcommand{\Vb}{\overrightarrow{b}} \newcommand{\Vc}{\overrightarrow{c}} \newcommand{\Vd}{\overrightarrow{d}} \newcommand{\Ve}[1]{\overrightarrow{e_{#1}}} \newcommand{\Vf}[1]{\overrightarrow{f_{#1}}} \newcommand{\Vn}{\overrightarrow{0}} \newcommand{\Mat}{Mat} \newcommand{\Pass}{Pass} \newcommand{\mkF}{\mathfrak{F}} \renewcommand{\sp}{Sp} \newcommand{\Co}{Co} \newcommand{\vect}[1]{\texttt{Vect}\dpl{\left( #1\right)}} \newcommand{\prodscal}[2]{\dpl{\left\langle #1\left|\vphantom{#1 #2}\right. #2\right\rangle}} \newcommand{\trans}[1]{{\vphantom{#1}}^{t}{#1}} \newcommand{\ortho}[1]{{#1}^{\bot}} \newcommand{\oplusbot}{\overset{\bot}{\oplus}} \SelectTips{cm}{12}%Change le bout des flèches dans un xymatrix \newcommand{\pourDES}[8]{ \begin{itemize} \item Pour la ligne : le premier et dernier caractère forment $#1#2$ soit $#4$ en base 10. \item Pour la colonne : les autres caractères du bloc forment $#3$ soit $#5$ en base 10. \item A l'intersection de la ligne $#4+1$ et de la colonne $#5+1$ de $S_{#8}$ se trouve l'entier $#6$ qui, codé sur $4$ bits, est \textbf{\texttt{$#7$}}. \end{itemize} } \)

Définition


Un automate d'état finis \( \A\) , plus simplement appelé AEF, est la donnée de
\( \bullet\)
un alphabet \( \Sigma_\A\) , appelé l'alphabet de l'automate,

\( \bullet\)
un ensemble fini \( E_\A\) d'état,

\( \bullet\)
un ensemble \( I_\A\subset E_\A\) d'états initiaux,

\( \bullet\)
un ensemble \( F_\A\subset E_\A\) d'états finaux,

\( \bullet\)
une fonction de transition \( \tau_\A : E_\A\times \left(\Sigma_\A\cup\{\varepsilon\}\right) \longrightarrow \mathcal{P}(E_\A)\) .
La différence entre un ADEF et un AEF est que les passages d'un état à un autre ne sont uniquement déterminés par l'alphabet. Un même caractère peut mener à différents états.

Exemple


Considérons l'AEF sur l'alphabet \( \Sigma=\{0,1\}\) ayant comme état \( \{A,B,C\}\) , \( \{A\}\) comme état initial, \( \{C\}\) comme état final et ayant pour fonction suivante pour fonction de transition : \begin{eqnarray*} \tau : E_\A\times\Sigma_\A &\longrightarrow& \mathcal{P}(E_\A)\\ (A,0)&\longmapsto& \{B,C\}\\ (B,0)&\longmapsto& \{B\}\\ (B,1)&\longmapsto& \{A,C\}\\ (C,1)&\longmapsto& \{C\} \end{eqnarray*}
De la même manière on représente un automate de deux manières : matricielle et sagittale.

Exemple


Dans notre exemple nous avons : \[ M_\A=\begin{array}{c|cc} &0&1\\\hline \rightarrow A&B,C& \\ \qquad B \qquad &B&A,C\\ \qquad C\rightarrow &&C \end{array} \] \[\xymatrix@R=0.5cm{ \ar[d]&& \\ A\ar[rd]_0\ar@/^1pc/[rr]^0&&B\ar@/^1pc/[ll]^1\ar@(rd,ru)[]_0\ar[ld]^1\\ &C\ar@(rd,ru)[]_1\ar[d]&\\ && }\]

Proposition


Tout ADEF est un AEF.

Démonstration

On compose la fonction de transition d'un ADEF par le plongement \( X\hookrightarrow \mathcal{P}(X)\) .
Il est également possible de rendre un AEF déterministe.

Proposition [Détermination d'un AEF]


Soit \( \A\) un AEF. Considérons l'automate \( \A_{det}\) défini par les règles suivantes :
\( \bullet\)
\( \Sigma_{\A_{det}}=\Sigma_{\A}\)

\( \bullet\)
\( E_{\A_{det}}=\mathcal{P}(E_{\A})-\{\varnothing\}\)

\( \bullet\)
\( I_{\A_{det}}=\{I_\A\}\)

\( \bullet\)
\( F_{\A_{det}}=\left\{X\subset E_\A\Big|\exists f\in F_\A, f\in X\right\}\)

\( \bullet\)
\begin{eqnarray*} \tau_{\A_{det}} : E_{\A_{det}} \times \Sigma_{\A_{det}} &\longrightarrow & E_{\A_{det}}\\ (X,\sigma)&\longmapsto& \dpl{\bigcup_{x\in X}\tau_\A(x,\sigma)} \end{eqnarray*}
Alors \( \A_{det}\) est un automate déterministe.

Démonstration

Il suffit de voir que la fonction de transition ainsi défini est bien une fonction ce qui se déduit trivialement de la construction.

Remarque

Si l'AEF est un automate à \( n\) états alors l'ADEF associé a \( 2^n-1\) états. Cet automate est donc exponentiellement plus grand que le premier. Cependant il conserve un avantage qui sera résumé plus tard à travers le théorème de Rabin-Scott.
L'ADEF correspondant à la détermination d'un AEF possède parfois de nombreux états inaccessibles comme nous pouvons le voir sur l'exemple précédent dont l'ADEF associé est : \[ \xymatrix{ &&&&&&\\ \{A\}\ar@{{<}-}[u]\ar[rr]^0&&\{B,C\}\ar[u]\ar[rd]_0\ar@/^1pc/[rr]^1&&\{A,C\}\ar[u]\ar@/^1pc/[ll]^0\ar[rr]^1&&\{C\}\ar[u]\ar@(rd,ru)[]_1\\ &&&\{B\}\ar[ru]_1\ar@(ld,rd)[]_0&&& } \] Les ensembles \( \{A,B\}\) et \( \{A,B,C\}\) ne sont pas utilisés. L'algorithme suivant permet de construire progressivement l'ADEF associé à un AEF.
§ Détermination d'un AEF
Initialiser \( E_{\A_{det}}\) à \( \{I_\A\}\)
Tant que \( E_{\A_{det}}\) contient des éléments non marqué
Sélectionner un élément \( X\) de \( E_{\A_{det}}\) non marqué.
Marquer \( X\) .
Pour chaque \( \sigma\in \Sigma_{\A_{det}}\)
Considérer \( \dpl{X'=\bigcup_{x\in X} \tau_\A(x,\sigma)}.\)
Ajouter \( X'\) à \( E_{\A_{det}}\) si ce n'est pas déjà le cas.
Ajouter un arc entre \( X\) et \( X'\) valué par \( \sigma\) .
Fin Pour
Fin Tant Que

Exemple


Faisons tourner cet algorithme sur l'AEF \[\xymatrix{ \ar[d]&& \\ A\ar[rd]_0\ar@/^1pc/[rr]^0&&B\ar@/^1pc/[ll]^1\ar@(rd,ru)[]_0\ar[ld]^1\\ &C\ar@(rd,ru)[]_1\ar[d]&\\ && }\]
Initialisation.
\[ \xymatrix{ &&&&&&\\ \{A\}\ar@{{<}-}[u]&&&&&&\\ &&&&&& } \]

On choisis \( \{A\}\) .
On le marque (en mettant un petit point par exemple). Pour chaque élément composant cet ensemble (ici uniquement \( A\) ), on construit l'image par \( 0\) par \( \tau_\A\) : \( \{B,C\}\) . Cet ensemble n'existant pas on le rajoute et on met un arc entre \( \{A\}\) et \( \{B,C\}\) valué par \( 0\) . On fait de même pour \( 1\) mais il n'y a pas d'image. On arrive donc à \[ \xymatrix{ &&&&&&\\ \{A\}_{\bullet}\ar@{{<}-}[u]\ar[rr]^0&&\{B,C\}&&&&\\ &&&&&& } \]

On choisis \( \{B,C\}\) .
On le marque. Pour chaque élément composant cet ensemble (à savoir \( B\) et \( C\) ), on construit l'image par \( 0\) par \( \tau_\A\) : \( B\) donne \( B\) et \( C\) ne donne rien. On arrive donc à l'ensemble \( \{B\}\) . Cet ensemble n'existant pas on le rajoute et on met un arc entre \( \{B,C\}\) et \( \{B\}\) valué par \( 0\) . On fait de même pour \( 1\) : \( B\) donne \( A\) et \( C\) et \( C\) donne \( C\) , il s'agit donc de l'ensemble \( \{A,C\}\) . Au final : \[ \xymatrix{ &&&&&&\\ \{A\}_\bullet\ar@{{<}-}[u]\ar[rr]^0&&\{B,C\}_{\bullet}\ar[rd]_0\ar@/^1pc/[rr]^1&&\{A,C\}\\ &&&\{B\}&&& } \]

On choisis \( \{B\}\) .
(on aurait également pu choisir \( \{A,C\}\) ). On le marque. On construit l'image de \( B\) par \( 0\) via \( \tau_\A\) : \( \{B\}\) . Par \( 1\) on arrive \( \{A,C\}\) \[ \xymatrix{ &&&&&&\\ \{A\}_\bullet\ar@{{<}-}[u]\ar[rr]^0&&\{B,C\}_\bullet\ar[rd]_0\ar@/^1pc/[rr]^1&&\{A,C\}&&\\ &&&\{B\}_\bullet\ar[ru]_1\ar@(ld,rd)[]_0&&& } \]

On choisis \( \{A,C\}\) .
On le marque. On construit l'image de \( A\) et \( C\) par \( 0\) via \( \tau_\A\) : \( \{B,C\}\) . Par \( 1\) on arrive \( \{C\}\) \[ \xymatrix{ &&&&&&\\ \{A\}_\bullet\ar@{{<}-}[u]\ar[rr]^0&&\{B,C\}_\bullet\ar[rd]_0\ar@/^1pc/[rr]^1&&\{A,C\}_\bullet\ar@/^1pc/[ll]^0\ar[rr]^1&&\{C\}\\ &&&\{B\}_\bullet\ar[ru]_1\ar@(ld,rd)[]_0&&& } \]

On choisis \( \{C\}\) .
On le marque. L'image de \( C\) par \( 0\) via \( \tau_\A\) n'existe pas et l'image de \( C\) par \( 1\) via \( \tau_\A\) donne \( \{C\}\) \[ \xymatrix{ &&&&&&\\ \{A\}_\bullet\ar@{{<}-}[u]\ar[rr]^0&&\{B,C\}_\bullet\ar[rd]_0\ar@/^1pc/[rr]^1&&\{A,C\}_\bullet\ar@/^1pc/[ll]^0\ar[rr]^1&&\{C\}_\bullet\ar@(rd,ru)[]_1\\ &&&\{B\}_\bullet\ar[ru]_1\ar@(ld,rd)[]_0&&& } \]

FIN.
Tous les sommets sont marqués. C'est fini. On rajoute les états de sortie dès qu'un éléments d'un sommet possède un élément de \( F_\A\) ; ici il n'y a que \( C\) . \[ \xymatrix{ &&&&&&\\ \{A\}_\bullet\ar@{{<}-}[u]\ar[rr]^0&&\{B,C\}_\bullet\ar[u]\ar[rd]_0\ar@/^1pc/[rr]^1&&\{A,C\}_\bullet\ar[u]\ar@/^1pc/[ll]^0\ar[rr]^1&&\{C\}_\bullet\ar[u]\ar@(rd,ru)[]_1\\ &&&\{B\}_\bullet\ar[ru]_1\ar@(ld,rd)[]_0&&& } \]

Exercice


Pour chacun des automates suivants, donner une représentation sagittale et construire l'automate déterministe associé.
  1. \( \begin{array}{|c*{2}{|c}|}\hline&0&1\\\hline A\rightarrow &C&C\\\hline \rightarrow B&A,B,C&B\\\hline C&B,C&A,C\\\hline \end{array}\)
  2. \( \begin{array}{|c*{2}{|c}|}\hline&0&1\\\hline A\rightarrow &A&C\\\hline B&B,C&A\\\hline \rightarrow C&A,B,C&B\\\hline \end{array}\)
  3. \( \begin{array}{|c*{2}{|c}|}\hline&0&1\\\hline A&B,C&A\\\hline \rightarrow B&B&A\\\hline C\rightarrow &A&B\\\hline \end{array}\)
  4. \( \begin{array}{|c*{2}{|c}|}\hline&0&1\\\hline \rightarrow A&B&C\\\hline B&C&C\\\hline C\rightarrow &A&B,C\\\hline \end{array}\)
  5. \( \begin{array}{|c*{2}{|c}|}\hline&0&1\\\hline \rightarrow A\rightarrow &C&A\\\hline B&C&C\\\hline C&A&A,B\\\hline \end{array}\)
  6. \( \begin{array}{|c*{2}{|c}|}\hline&0&1\\\hline \rightarrow A&C&B\\\hline B\rightarrow &C&A,C\\\hline C&A&A\\\hline \end{array}\)
  7. \( \begin{array}{|c*{3}{|c}|}\hline&a&b&c\\\hline A&C&D&D\\\hline B\rightarrow &A,D&A,B,C,D&A,B,D\\\hline C&A,B,C,D&C&A\\\hline \rightarrow D&A&A&A\\\hline \end{array}\)
  8. \( \begin{array}{|c*{3}{|c}|}\hline&a&b&c\\\hline \rightarrow A\rightarrow &C&A,C,D&D\\\hline B&A,B&C&A,B,C,D\\\hline C&D&C&B,C\\\hline D&B&A,B,D&B\\\hline \end{array}\)