diff options
author | David A. Madore <david+git@madore.org> | 2016-12-01 12:25:36 +0100 |
---|---|---|
committer | David A. Madore <david+git@madore.org> | 2016-12-01 12:25:36 +0100 |
commit | 27971c9ffc49a6ca6b227ac445d463549e06ad7a (patch) | |
tree | 1be9b2ce486055ffae65062d79992c31b190a3fb | |
parent | af0d7fb5e770459ea3a468af12a4371730fa6098 (diff) | |
download | inf105-27971c9ffc49a6ca6b227ac445d463549e06ad7a.tar.gz inf105-27971c9ffc49a6ca6b227ac445d463549e06ad7a.tar.bz2 inf105-27971c9ffc49a6ca6b227ac445d463549e06ad7a.zip |
Various clarifications. Try to explicitate when DFAs need to be complete.
-rw-r--r-- | notes-inf105.tex | 124 |
1 files changed, 72 insertions, 52 deletions
diff --git a/notes-inf105.tex b/notes-inf105.tex index 3e2e511..e027205 100644 --- a/notes-inf105.tex +++ b/notes-inf105.tex @@ -1049,8 +1049,10 @@ eux. \thingy Un \textbf{automate fini déterministe à spécification incomplète} ou \textbf{...partielle}, ou simplement \textbf{automate - fini déterministe incomplet}, en abrégé \textbf{DFAI}, sur un -alphabet $\Sigma$ est la donnée + fini déterministe incomplet}\footnote{Le mot « incomplet » signifie + en fait « non nécessairement complet », i.e., l'automate a le droit + de manquer certaines transitions, il peut très bien être complet.}, +en abrégé \textbf{DFAI}, sur un alphabet $\Sigma$ est la donnée \begin{itemize} \item d'un ensemble fini $Q$ d'états, \item d'un état initial $q_0 \in Q$, @@ -1059,7 +1061,8 @@ alphabet $\Sigma$ est la donnée « fonction partielle » $f\colon X\dasharrow Y$, où $X, Y$ sont deux ensembles est, par définition, la même chose qu'une fonction $f\colon D\to Y$ où $D\subseteq X$ est un sous-ensemble de $X$ - appelé \textbf{ensemble de définition} de $f$.} $\delta \colon + appelé \textbf{ensemble de définition} de $f$. (Lorsque en fait + $D=X$, la fonction est dite « totale ».)} $\delta \colon Q\times\Sigma \dasharrow Q$, \end{itemize} autrement dit, la seule différence avec la définition faite @@ -1228,6 +1231,10 @@ co-accessibles (on les dit aussi \textbf{utiles}) est parfois appelé \textbf{émondé}. On peut émonder un DFAI en ne conservant que ses états utiles : ainsi, tout DFAI est équivalent à un DFAI émondé. +\thingy Il faut prendre garde au fait que certains auteurs définissent +les automates finis déterministes comme étant complets, d'autres comme +étant incomplets. + \subsection{Automates finis non-déterministes (=NFA)} @@ -1254,7 +1261,7 @@ la relation de transition du NFA comme le graphe de la fonction de transition du DFAI (c'est-à-dire $(q,x,q') \in \delta_{\mathrm{NFA}}$ lorsque $\delta_{\mathrm{DFAI}}(q,x)$ est défini et vaut $q'$). -\thingy Graphiquement, on représente un NFA comme un DFA comme un +\thingy Graphiquement, on représente un NFA comme un DFA : comme un graphe orienté dont les nœuds sont les éléments de $Q$, et où on place une arête étiquetée $x$ de $q$ vers $q'$ pour chaque triplet $(q,x,q') \in \delta$ ; comme précédemment, on marque les états initiaux par une @@ -1716,11 +1723,11 @@ plus, un DFA reconnaissant l'un se déduit algorithmiquement d'un DFA reconnaissant l'autre. \end{prop} \begin{proof} -Par hypothèse, il existe un DFA $A = (Q,q_0,F,\delta)$ tel que $L = -L_A$. Considérons le DFA $A'$ défini par l'ensemble d'états $Q' = Q$, -l'état initial $q'_0 = q_0$, la fonction de transition $\delta' = -\delta$ et pour seul changement l'ensemble d'états finaux $F' = Q -\setminus F$ complémentaire de $F$. +Par hypothèse, il existe un DFA (complet !) $A = (Q,q_0,F,\delta)$ tel +que $L = L_A$. Considérons le DFA $A'$ défini par l'ensemble d'états +$Q' = Q$, l'état initial $q'_0 = q_0$, la fonction de transition +$\delta' = \delta$ et pour seul changement l'ensemble d'états finaux +$F' = Q \setminus F$ complémentaire de $F$. Si $w \in \Sigma^*$, on a $w \in L_{A'}$ si et seulement si $\delta^{\prime*}(q_0,w) \in F'$, c'est-à-dire $\delta^*(q_0,w) \in @@ -1732,7 +1739,11 @@ L_A$. Ceci montre bien que $L_{A'}$ est le complémentaire de $L_A$. \thingy Cette démonstration a utilisé la caractérisation des langages reconnaissables par les DFA : il était crucial de le faire, et les autres sortes d'automates définis plus haut n'auraient pas permis -d'arriver (simplement) à la même conclusion. Pourquoi ? +d'arriver (simplement) à la même conclusion. Il est intéressant de +réfléchir à pourquoi. (Essentiellement, dans un NFA, un mot est +accepté dès qu'\emph{il existe} un chemin qui l'accepte, or +l'existence d'un chemin aboutissant à un état non-final n'est pas la +même chose que l'inexistence d'un chemin aboutissant à un état final.) \begin{prop}\label{dfa-union-and-intersection} Si $L_1,L_2$ sont des langages reconnaissables (sur un même @@ -1742,36 +1753,45 @@ l'un comme l'autre se déduit algorithmiquement de DFA reconnaissant $L_1$ et $L_2$. \end{prop} \begin{proof} -Par hypothèse, il existe des DFA $A_1 = (Q_1,q_{0,1},F_1,\delta_1)$ et -$A_2 = (Q_2,q_{0,2},F_2,\delta_2)$ tels que $L_1 = L_{A_1}$ et $L_2 = +Traitons le cas de l'intersection. Par hypothèse, il existe des DFA +(complets !) $A_1 = (Q_1,q_{0,1},F_1,\delta_1)$ et $A_2 = +(Q_2,q_{0,2},F_2,\delta_2)$ tels que $L_1 = L_{A_1}$ et $L_2 = L_{A_2}$. Considérons le DFA $A'$ défini par l'ensemble d'états $Q' = -Q_1 \times Q_2$, l'état initial $q'_0 = (q_{0,1},q_{0,2})$, la -fonction de transition $\delta' \colon ((p_1,p_2),x) \mapsto -(\delta_1(p_1,x), \delta_2(p_2,x))$ et pour ensemble d'états finaux -$F' = (F_1\times Q_2) \cup (Q_1 \times F_2)$ (si on cherche à -reconnaître $L_1\cup L_2$) respectivement $F' = F_1\times F_2$ (si on -cherche à reconnaître $L_1\cap L_2$). Remarquons que $(p_1,p_2) \in -Q'$ appartient à $F' = (F_1\times Q_2) \cup (Q_1 \times F_2)$ -respectivement $F' = F_1\times F_2$ si et seulement si $p_1 \in F_1$ -ou $p_2 \in F_2$ respectivement $p_1 \in F_1$ et $p_2 \in F_2$. Par -ailleurs, si $w\in \Sigma^*$, on a $\delta'(q_0',w) = -(\delta_1(q_{0,1},w), \delta_2(q_{0,2},w))$. On voit donc qu'un mot -$w$ appartient à $L_{A'}$ si et seulement il appartient à $L_1 \cup -L_2$ respectivement $L_1 \cap L_2$, ce qu'il fallait démontrer. +Q_1 \times Q_2$ (c'est-à-dire l'ensemble des couples formés d'un état +de $A_1$ et d'un état de $A_2$), l'état initial $q'_0 = +(q_{0,1},q_{0,2})$, la fonction de transition $\delta' \colon +((p_1,p_2),x) \mapsto (\delta_1(p_1,x), \delta_2(p_2,x))$ et pour +ensemble d'états finaux $F' = F_1\times F_2$. Remarquons que +$(p_1,p_2) \in Q'$ appartient à $F' = F_1\times F_2$ si et seulement +si $p_1 \in F_1$ \emph{et} $p_2 \in F_2$ (i.e., $F' \subseteq Q'$ est +l'ensemble des couples dont les deux composantes sont finales). Par +ailleurs, si $w\in \Sigma^*$, on a $\delta^{\prime*}(q_0',w) = +(\delta_1^*(q_{0,1},w), \delta_2^*(q_{0,2},w))$, et par ce qui vient +d'être dit, ceci appartient à $F'$ si et seulement +$\delta_1^*(q_{0,1},w) \in F_1$ et $\delta_2^*(q_{0,2},w) \in F_2$. +On voit donc qu'un mot $w$ appartient à $L_{A'}$ si et seulement il +appartient à la fois à $L_1$ et à $L_2$, ce qu'il fallait démontrer. + +Pour la réunion, on peut invoquer le fait que la réunion est le +complémentaire de l'intersection des complémentaires, et +utiliser \ref{dfa-complement} ; si on déroule cette démonstration, on +voit qu'on construit un DFA $A''$ exactement égal à $A'$ construit +ci-dessus, à la seule différence près que son ensemble d'états finaux +est $F'' = (F_1\times Q_2) \cup (Q_1\times F_2)$, qui est le +sous-ensemble de $Q'' = Q_1\times Q_2$ formé des couples dont +\emph{l'une au moins} des deux composantes est finale. \end{proof} -\thingy On pouvait aussi traiter uniquement l'une des deux opérations -booléennes et déduire l'autre par complémentaire, mais le gain de -place est faible (et la construction est exactement la même). +\thingy La construction $A'$ ci-dessus est parfois appelée +\emph{produit} des DFA $A_1$ et $A_2$. -La construction ci-dessus est un \emph{produit} de DFA (que ce soit -pour prendre la réunion ou l'intersection). La construction produit -fonctionnerait encore avec les NFA \emph{pour la réunion de langages - mais pas pour l'intersection} : il est intéressant de réfléchir à -pourquoi (essentiellement, ce qui casse la symétrie est que dans un -NFA, un mot est accepté dès qu'\emph{il existe} un chemin qui -l'accepte, or le quantificateur $\exists$ distribue sur les -disjonctions mais pas sur les conjonctions). +La construction de l'automate produit pour fabriquer le langage +intersection utilise la caractérisation des langages reconnaissables +par les DFA : elle aurait aussi fonctionné pour les DFAI mais pas pour +les NFA ; il est intéressant de réfléchir à pourquoi. (Une +construction du type produit pourrait fonctionner sur les NFA pour le +langage réunion, mais elle n'a aucun intérêt par rapport à la +construction présentée en \ref{nfa-union}.) \begin{prop}\label{nfa-mirror} Si $L$ est un langage reconnaissable sur un alphabet $\Sigma$, alors @@ -2259,12 +2279,12 @@ factorisation $t = uvw$ en trois facteurs $u,v,w$ où : \end{itemize} \end{prop} \begin{proof} -Soit $A$ un DFA qui reconnaît $L$, et soit $k$ son nombre d'états : on -va montrer que $k$ vérifie les propriétés énoncées. Pour cela, soit -$t = x_1 \cdots x_n$ un mot de $L$ de longueur $n \geq k$, et soient -$q_0,\ldots,q_n$ les états traversés par $A$ pendant la consommation -de $t$, autrement dit, $q_0$ est l'état initial, et $q_j = -\delta(q_{j-1}, x_j)$ pour chaque $1\leq j\leq n$ ; l'état $q_n = +Soit $A$ un DFA (complet) qui reconnaît $L$, et soit $k$ son nombre +d'états : on va montrer que $k$ vérifie les propriétés énoncées. Pour +cela, soit $t = x_1 \cdots x_n$ un mot de $L$ de longueur $n \geq k$, +et soient $q_0,\ldots,q_n$ les états traversés par $A$ pendant la +consommation de $t$, autrement dit, $q_0$ est l'état initial, et $q_j += \delta(q_{j-1}, x_j)$ pour chaque $1\leq j\leq n$ ; l'état $q_n = \delta^*(q_0, t)$ est final puisque $t \in L$. Comme $n+1 > k$ et comme l'automate $A$ a $k$ états, par le principe des tiroirs, il existe $j_1\neq j_2$ tels que $q_{j_1} = q_{j_2}$ : pour être plus @@ -2384,11 +2404,11 @@ Alors : \item le langage $L$ est rationnel si et seulement si la relation d'équivalence $\equiv$ possède un nombre \emph{fini} $k$ de classes d'équivalence, -\item lorsque c'est le cas, il existe un DFA ayant $k$ états qui - reconnaît $L$, il est unique à renommage des +\item lorsque c'est le cas, il existe un DFA (complet) ayant $k$ états + qui reconnaît $L$, il est unique à renommage des états\footnote{C'est-à-dire, si on préfère ce terme, isomorphisme - d'automates.} près, et il n'existe pas de DFA ayant $<k$ états qui - reconnaisse $L$. + d'automates.} près, et il n'existe pas de DFA (complet) ayant $<k$ + états qui reconnaisse $L$. \end{itemize} \end{thm} \begin{proof} @@ -2456,12 +2476,12 @@ isomorphisme d'automates (un renommage des états). \end{proof} \thingy Ce théorème affirme donc qu'il existe (à renommage des états -près) un unique DFA ayant un nombre minimal d'états parmi ceux qui -reconnaissent le langage rationnel $L$ : on l'appelle \textbf{automate - canonique} ou \textbf{automate minimal} du langage $L$. La -démonstration ci-dessus en donne une construction à partir d'une -relation d'équivalence, mais cette démonstration n'est pas -algorithmique : on va voir comment on peut le construire de fącon +près) un unique DFA (complet) ayant un nombre minimal d'états parmi +ceux qui reconnaissent le langage rationnel $L$ : on l'appelle +\textbf{automate canonique} ou \textbf{automate minimal} du +langage $L$. La démonstration ci-dessus en donne une construction à +partir d'une relation d'équivalence, mais cette démonstration n'est +pas algorithmique : on va voir comment on peut le construire de fącon algorithmique à partir d'un DFA quelconque qui reconnaît $L$. \begin{prop} |