Cours 2 : Automate minimal
Automate minimal
Rappel : si $𝒜 = ⟨Q, 𝛴, 𝛿, q_0, F⟩$ est déterministe complet, alors chaque lettre $a∈𝛴$ peut être vue comme une action sur $Q$ :
\(a \cdot q = q'\) si $𝛿(q,a) = q’$
- Morphisme d’automates $𝒜_i = ⟨Q_i, 𝛴_i, 𝛿_i, q_{0,i}, F_i⟩$ pour $i∈ \lbrace 1,2 \rbrace$ :
-
$𝜑 : Q_1 ⟶ Q_2$ est morphisme de $𝒜_1$ à $𝒜_2$ si
- $𝜑(q_{0,1}) = q_{0,2}$
- $∀a∈𝛴, 𝜑(a \cdot q ) = a \cdot 𝜑(q)$
- $q∈F_1 ⟺ 𝜑(q)∈F_2$
- Isomorphisme :
-
morphisme bijectif
- Résiduel $w^{-1}L$ à gauche de $L$ par $w$ :
- \[w^{-1}L ≝ \lbrace v∈𝛴^\ast \mid wv ∈ L\rbrace\]
NB :
- $𝜀^{-1} L = L$
- $(ua)^{-1}\cdot L = a^{-1}(u^{-1} \cdot L)$
- $a∈𝛴, u∈𝛴^\ast$
Si $𝒜$ est dét. comp. :
\[a^{-1}\cdot L = L(𝒜_a)\]où $𝒜_a ≝ ⟨Q, 𝛴, 𝛿, a\cdot q_0, F⟩$ et, en général :
\[w^{-1}\cdot L = L(𝒜_w)\]où $𝒜_w ≝ ⟨Q, 𝛴, 𝛿, w\cdot q_0, F⟩$
Si $𝒜$ est un automate, on pose :
\[L_q(𝒜) ≝ \lbrace v∈𝛴^\ast \mid q⟶^v_𝒜 q_f∈F \rbrace\]NB :
\[\bigcup\limits_{q∈I} L_q(𝒜) = L(𝒜)\]LEMME : Si $𝒜$ est déterministe complet, alors
\[∀w∈𝛴^\ast, w^{-1}\cdot L(𝒜) = L_{w \cdot q_0}(𝒜)\]
D’où :
\[\vert \lbrace w^{-1} \cdot L \mid w∈𝛴^\ast \rbrace \vert ≤ \vert Q \vert\]Corollaire : Si $L$ est régulier, alors l’ensemble des résiduels à gauche de $L$ est fini.
- Automate $𝒜_L$ des résiduels de $L$ :
- \[𝒜_L ≝ ⟨Q_L, 𝛴, 𝛿_L, 𝜀^{-1}\cdot L, F⟩\]
où
\[Q_L ≝ \lbrace w^{-1} \cdot L \mid w∈𝛴^\ast \rbrace\] \[∀a∈𝛴, a(w^{-1}\cdot L) ≝ (wa)^{-1} \cdot L\] digraph {
rankdir=LR;
w1[label="w^{-1} L"];
w2[label="(wa)^{-1} L"];
w1 -> w2[label="a"];
}
\[F_L ≝ \lbrace w^{-1} \cdot L \mid w∈L \rbrace = \lbrace w^{-1} \cdot L \mid 𝜀∈w^{-1} \cdot L \rbrace\]
Lemme : \(L(𝒜_L) = L\)
Preuve :
NB :
-
$∀w∈𝛴^\ast, L_{w^{-1} \cdot L}(𝒜_L) = w^{-1}\cdot L$
-
$L_{(wa)^{-1}\cdot L}$
Preuve (laborieuse) : par double inclusion :
-
Si $w∈L$ :
- si $w=𝜀$ : alors $w^{-1}L = L$ état initial de $𝒜_L$, donc $w∈L(𝒜_L)$
- sinon si $w=av$ : $v∈a^{-1} L$ donc $v∈ L_{v^{-1}L}(𝒜_L)$ (hypothèse d’induction), et donc $av ∈L_{(av)^{-1}L}(𝒜_L)$
-
Si $w∈L(𝒜_L)$ :
- Si $w=𝜀$, $L$ état initial de $𝒜_L$ est final, donc $𝜀=w∈L$
- sinon, si $w= av$ : $v∈L_{a\cdot(v^{-1}L)}(𝒜_L)$ donc $v∈a^{-1}L$, et $av∈L$
MIEUX :
Lemme : \(w(L) = w^{-1}L\)
Par induction sur $w$.
- Si $w∈L$ alors $𝜀∈w^{-1}L$ et donc $w∈L(𝒜_L)$
- Si $w∈L(𝒜_L)$ alors $𝜀∈w^{-1}L$, et donc $w∈L$
Ex :
digraph {
rankdir=LR;
aL[label="a^+ L'"];
aEtL[label="a^* L'", shape="doublecircle"];
L[shape = "hexagon"]
L -> aL[label="b"];
L -> ∅[label="a"];
aL -> ∅[label="b"];
aL -> aEtL[label="a"];
aEtL -> aL[label="b"];
aEtL -> aEtL[label="a"];
}
$L = (ba^+)^+$, $L’ = (ba^+)^\ast$
Lemme : Soit $𝒜$ dét. comp.
Alors $𝜑 : q \mapsto L_q$ est un morphisme surjectif d’automates.
Preuve :
- $L_{q_0}(𝒜) = L$
- $L_{a\cdot q} = a^{-1} L_q = a(L_q)$
- $𝜀∈L_q ⟺ q∈F$
Donc l’automate des résiduels est l’unique automate dét. comp. minimal à isomorphisme près.
NB : par contre, le problème de l’égalité entre deux langages réguliers (en l’occurrence, ici : les résiduels) est PSPACE-complet : l’algo n’est pas du tout efficace !
Algorithme de minimisation
Soit $≡$ une relation d’équivalence sur $Q$.
- Automate quotient $𝒜_≡$ de $𝒜$ par $≡$ :
- \[𝒜_≡ ≝ ⟨Q_≡, 𝛴_≡, 𝛿_≡, q_≡, F_≡⟩\]
où :
- $𝛿_≡ ≝ \lbrace ([q]≡, a, [q’]≡) \mid (q, a, q’)∈𝛿\rbrace$
- $F_≡ ≝ \lbrace [q]_≡ \mid q∈F\rbrace$
alors
\[L(𝒜) ⊆ L(𝒜_≡)\]-
En effet : Soit $w∈L(𝒜)$ : $w = a_1 ⋯ a_n$
\[I \ni q_0 ⟶^{a_1}_𝒜 q_1 ⟶^{a_2}_𝒜 ⋯ ⟶^{a_n}_𝒜 q_n ∈F\]on a donc :
\[I_≡ \ni [q_0] ⟶^{a_1}_{𝒜_≡} [q_1] ⟶^{a_2}_𝒜 ⋯ ⟶^{a_n}_{𝒜_≡} [q_n] ∈F_≡\]et $w∈L(𝒜_≡)$
- Congruence $\sim$ sur $𝒜$ dét. comp. :
-
une rel. d’éq. tq :
- $q \sim q’ ⟹ a\cdot q \sim a\cdot q’$
- $q \sim q’ ⟹ (q∈F ⟺ q’∈F)$
Lemme : Si $\sim$ est une congruence, alors \(L(𝒜) = L(𝒜/\sim)\)
Preuve :
La seule chose à montrer est \(L(𝒜/\sim) ⊆ L(𝒜)\)
Soit $w=a_1 ⋯ a_n ∈ L(𝒜/\sim)$.
\[I_\sim \ni [q_0] ⟶^{a_1} [q_1] ⟶^{a_2}_𝒜 ⋯ ⟶^{a_n} [q_n] ∈F_\sim\]On montre que : $∀i ∈⟦1, n⟧$, il existe
$q’_i ∈ [q_i]$ tq
\[q_0 ⟶^{a_1 ⋯ a_n} q'_i\]-
Pour $i=0$ : $q’_0 = q_0$ convient
-
Induction :
\[[q_{i}] ⟶^{a_i} [q_{i+1}]\]et par HR :
\[q_0 ⟶^{a_1 ⋯ a_i} q'_i \sim q_i\]donc
\[a_i \cdot q'_i \sim a_i \cdot q_i \sim q_{i+1}\]donc \(q'_{i+1} ≝ a_i \cdot q'_i\) convient.
Enfin : $q_n ∈ F$ ssi $q’_n∈F$
et donc l’exécution $q’_0 ⟶^w q’_n$ est acceptante.
- Congruence de Nérode :
-
$q ≡ q’$ ssi $L_q(𝒜) = L_{q’}(𝒜)$
NB :
-
on vérifie aisément que c’est une congruence
-
$A/≡$ est isomorphe à l’automate minimal : $𝜑 : q \mapsto L_q$ devient injective
Algorithme de Moore
On définit une famille \((≡_i)_{i∈ℕ}\) d’équivalences sur $𝒜$ dét. comp. :
- $q ≡_0 q’$ ssi $(q∈F ⟺ q’∈F)$
- $∀i, q ≡_{i+1} q’$ ssi $q ≡_i q’$ et $∀a∈𝛴, a \cdot q ≡_i a \cdot q’$
Lemme :
\(∃k; ∀i, ≡_k \, = \, ≡_{i+k}\) et $≡_k$ est la congruence de Nérode
-
La décroissance de la suite est claire
-
Si $≡i \, = \, ≡{i+1}$, alors \(∀j, ≡_i \, = \, ≡_{i+j}\)
Donc $∃k ≤ \vert Q \vert$;
\[∀j, ≡_k \, = \, ≡_{k+j}\]- On note $\sim$ l’équivalence de Nérode : montrons que \(\sim ⊆ ≡_i ∀i\)
Si $L_q = L_{q’}$, alors :
-
pour $i=0$ : $q∈F ⟺ q’∈F$ donc le résultat s’ensuit.
-
pour $i>0$ : $\sim ⊆ ≡_i$ par HR, donc
\[q ≡_i q'\]et
\[a \cdot q \sim a \cdot q' ∀a\]implique
\[aq ≡_i aq'\]donc
\[\sim ⊆ ≡_{i+1}\]
- \[≡_i ⊆ \sim\]
Soit $q ≡_{k+\vert w \vert} q’$
et donc
\[w \cdot q ≡_k w \cdot q'\]et donc
\(w ∈L_q\) implique $w \cdot q∈F$ implique $w \cdot q’∈F$ implique $w∈L_{q’}$
Ex :
$𝒜_n$ “circulaire” avec $n$ états, d’état initial et final $0$
Partitions :
-
$≡_0 = \lbrace 0 \rbrace \lbrace 1, ⋯, n-1 \rbrace$
-
$≡_1 = \lbrace 0 \rbrace \lbrace n-1 \rbrace \lbrace 1, ⋯, n-2 \rbrace$
-
$≡_2 = \lbrace 0 \rbrace \lbrace n-1 \rbrace \lbrace n-2 \rbrace \lbrace 1, ⋯, n-3 \rbrace$
-
$\sim = \lbrace 0 \rbrace \lbrace n-1 \rbrace \lbrace n-2 \rbrace ⋯ \lbrace 1 \rbrace$
⟶ L’algorithme naïf en $O(\vert Q \vert^3 \cdot \vert 𝛴 \vert)$
$P_i$ déjà construite,
\[P_i = B_1, ⋯, B_k\]Concrètement, on associe à chaque $q∈Q$ un entier
\[bloc(q)≤max\]tq $q ≡_i q’$ ssi $bloc(q) = bloc(q’)$
Pour tout a∈𝛴:
Pour tout q∈Q:
bloc(q) = max × bloc(q) + bloc(a \cdot q)
max = 2max +1
algo en $O(\vert Q \vert^2 \cdot \vert 𝛴 \vert)$
NB :
-
alogrithme d’Hopcroft en $O(n \log n)$
-
union find : pas très bon ici
-
En TD : un algorithme en $2^{O(n)}$ dit de “double renversement” de BROZOZWSKI
fonctionne sur un automate non dét. !
NB :
- mais en pratique : tous ces algos sont plutôt efficace (MOORE, BROZOZWSKI, HOPCROPFT)
-
très souvent : BROZOZWSKI est même plus efficace que MOORE et HOPCROPFT ! (car les opérations de renversement sont très faciles à faire en pratique)
- En espérance : MOORE est en $𝛳(n \log n)$ : donc en moyenne, MOORE est aussi bon qu’HOPCROPFT.
Leave a comment