Cours 1 : Introduction
Introduction
- Automate :
-
modèle extrêmement réduit de MT : ne peut pas écrire sur le ruban, et va toujours à droite
MAIS : en contrepartie : il y a très peu de propriétés qu’on ne peut pas décider sur les langages rationnels (contrairement aux MT, où Riesz nous condamne)⟶ bonnes propriétés algorithmiques
Langages rationnels = une boîte à outils utilisée en
- Algorithmique
- Logique
- Intelligence artificielle
Différents points de vue équivalents :
-
Reconnaissance par automates :
⟶ opérationnel
-
Expressions rationnelles :
⟶ dénotationnel
-
Logique :
-
Logique du premier ordre : ensemble des modèles considérés = les mots finis
-
ordre + prédicat unaire ⟶ logique du premier ordre
-
quantification sur les ensembles des propositions ⟶ logique monadique du second ordre : équivalent aux langages rationnels
- Algèbre :
- Reconnaissance par monoïdes finis : homomorphisme entre le monoïde libre et des quotients de monoïde (en fonction des états de l’automate)
NB : points de vue équivalents, mais passer d’une représentation à l’autre : plus ou moins difficile :
Exs :
- passer d’un automate à une ER : exponentiel
- passer d’une logique MSO à un automate/ER : tour d’exponentielle
PUIS : extension des langages rationnels qui capturent une classe de langages plus large
⟶ Langages Algébriques :
Différents points de vue :
- Automates à pile
- Grammaires algébriques
- ex: pour les compilateurs : on écrit une grammaire algébrique, puis traduction en automates à piles
Ex :
Programme en assembleur ⟶ pile d’appels ⟶ se modélise naturellement à l’aide d’automates à pile
Automates finis
digraph {
rankdir=LR;
q_0 -> q_F[label="a"];
q_F -> q_F[label="b"];
q_F -> q_0[label="a"];
}
- Automate fini (NFA) :
-
Un tuple $𝒜 = ⟨Q, 𝛴, 𝛿, I, F⟩$ où :
- $Q$ est un ens. fini d’états
- $𝛴$ un alphabet fini
-
$𝛿 ⊆ Q \times (𝛴 ∪ \lbrace 𝜀 \rbrace) \times Q$
NB : inclure $𝜀$ revient à autoriser la MT à rester sur place
- $I, F⊆Q$ ens. d’états intiaux et finals
Sémantique
- Exécution de $𝒜$ :
-
Une séquence $q_0 ⟶^{a_1} ⋯ ⟶^{a_n} q_n$ où :
- $∀i, (q_i, a_{i+1}, q_{i+1})∈𝛿$
- Exécution initiale :
-
$q_0∈I$
- Exécution finale :
-
$q_n∈F$
- Exécution acceptante :
-
initiale et finale
Notations :
- $q_0 ⟶^{a_1 ⋯ a_n} q_n$
- On étend $𝛿$ aux mots : $q_n ∈ 𝛿(q_0, a_1 ⋯ a_n)$
- Langage de $𝒜$ :
- \[\lbrace w∈𝛴^\ast \mid ∃q_0∈I, q_f∈F; q_0 ⟶^{w} q_f \rbrace\]
- Un automate est sans $𝜀$-transitions :
-
si $𝛿 ⊆ Q \times 𝛴 \times Q$
Réprésentation : par listes d’adjacences, donc
\[\vert 𝒜 \vert ≝ \max(\vert Q \vert, \vert 𝛿 \vert)\]Lemme : Pour tout NFA, on peut construire un NFA équivalent sans $𝜀$-transitions de taille $O(n^2)$ en temps $O(n^2)$
Preuve :
Soit $𝒜 = ⟨Q, 𝛴, 𝛿, I, F⟩$.
On construit $𝒜’ = ⟨Q’, 𝛴, 𝛿’, I’, F’⟩$
où :
- $Q’=Q$
- $I’=I$
- $F’= \lbrace q \mid 𝛿(q, 𝜀) ∩ F ≠ ∅ \rbrace$
- $𝛿’ ≝ \lbrace (q, a, q’) \mid ∃q’‘∈ 𝛿(q,𝜀); (q’’, a, q’)∈𝛿 \rbrace$
- $L(𝒜’) = L(𝒜)$
Soit $w=a_1 ⋯ a_n∈L(𝒜)$, $a_i∈𝛴∪ \lbrace 𝜀 \rbrace$ accepté par
\[q_0 ⟶^{a_1} ⟶ ⋯ ⟶^{a_n} q_n\]En identifiant les $a_i=𝜀$, et notant par une notation primée les $a_i=a’_i≠𝜀$, et les états correspondants.
On trouve dans $𝒜’$ l’exécution :
\[q_0 ⟶^{a'_1} ⟶ ⋯ ⟶^{a'_r} q'_r\]et $w$ est accepté.
- $\vert 𝒜’ \vert ∈ O(\vert 𝒜 \vert^2)$ et peut être construit en $O(\vert 𝒜 \vert^2)$
Pour chaque état, on trouve les états accessibles par une séquence d’$𝜀$-transitions ⟹ $O(n^2)$
Exemples :
$𝛴 = \lbrace 1, ⋯, n \rbrace$
Automate $𝒜_n$ qui reconnaît l’ensemble des sous-mots de $1 ⋯ n$ :
digraph {
rankdir=LR;
kplus[label="k+1"];
⋯2[label="⋯"];
0 -> 1[label="1"];
1 -> 2[label="𝜀"];
1 -> 2[label="2"];
1 -> 3[label="𝜀"];
1 -> k[label="𝜀"];
2 -> 3[label="3"];
2 -> 3[label="𝜀"];
2 -> k[label="𝜀"];
3 -> ⋯;
3 -> k[label="𝜀"];
⋯ -> k;
k -> kplus[label="𝜀"];
k -> kplus[label="k+1"];
kplus -> ⋯2;
⋯2 -> N[label="N"];
}
(avec clôture transitive pour les $𝜀$-transitions)
Complexité : $\frac{n(n-1)}{2}$
Propriétés de clôture
Prop : Les langages reconnaissables par automates sont fermés par :
- union (juxtaposition des automates, avec complexité $O(n_1+n_2)$)
- concaténation (on lie les états finals du premier aux états initiaux du second par des $𝜀$-transitions en passant par un état intermédiaire (complexité $O(n_1+n_2)$)
l’étoile de Kleene (on lie les états finals aux états initiaux par des $𝜀$-transitions en passant par un état intermédiaire (complexité $O(n)$)
- NB : on passe par un état intermédiaire pour ne pas rajouter de boucles supplémentaires à l’intérieur de l’automate
NB : pas fermé par complémentation, si l’automate n’est pas déterministe ET complet.
- Déterministe :
-
$∀q, a, 𝛿(q, a) ≤ 1$
- Complet :
-
$∀q, a, 𝛿(q, a) ≥ 1$
Pourquoi ça marche avec les automates déterministes complets ?
- ⟶ car pour tout état $q$, il existe une unique exécution sur $w$ commençant en $a$ :
-
$\vert q \cdot w \vert ≝ \vert 𝛿(q, w) \vert= 1$
Si $𝒜$ est un $DFA$ complet :
\[w∈L(𝒜) ⟺ q_0 \cdot w ∈ F\]DONC
Prop : Pour un automate $𝒜$, on peut construire un automate reconnaissant $𝛴\backslash L(𝒜)$ de taille $O(2^{\vert Q \vert} \vert 𝛴 \vert)$ en temps $O(2^{\vert Q \vert} \vert 𝛴 \vert)$
Déterminiser l’automate prend un temps exponentiel en le nombre d’états, et il n’y a pas moyen de faire mieux.
- Intersection :
On n’est pas fou, on ne va le faire en utilisant l’union et la complémentation (complémentation exponentielle !), il y a bien plus efficace avec l’automate produit (coût quadratique, et on ne peut pas faire mieux) :
$Q = Q_1 \times Q_2, I = I_1 \times I_2, F = F_1 \times F_2$
\[𝛿≝ \lbrace (q_1, q_2), a, (q'_1, q'_2) \mid (q_1, a, q'_1)∈𝛿_1 \text{ et } (q_2, a, q'_2)∈𝛿_2 \rbrace \\ ∪ \lbrace (q_1, q_2), 𝜀, (q_1, q'_2) \mid (q_2, 𝜀, q'_2)∈𝛿_2 \rbrace \\ ∪ \lbrace (q_1, q_2), 𝜀, (q'_1, q'_2) \mid (q_1, 𝜀, q'_1)∈𝛿_1 \rbrace\]- Transposition : en $O(n)$, trivialement
- Morphisme :
- \[𝜇: 𝛴 ⟶ 𝛥^\ast\]
défini sur les générateur $𝜇 : 𝛴 ⟶ 𝛥^\ast$, puis étendu par propriété universelle en $𝜇 : 𝛴^\ast ⟶ 𝛥^\ast$
-
Fermeture par morphisme :
digraph { rankdir=LR; q_0 -> q_1[label="a"]; }
devient
digraph { rankdir=LR; q_0 -> ⋯[label="𝜇(a)"]; ⋯ -> q_1 }
-
Fermeture par morphisme inverses : $L⊆𝛥^\ast$
\[𝜇^{-1}(L) ≝ \lbrace u∈𝛴^\ast \mid 𝜇(u)∈L \rbrace\]digraph { rankdir=LR; q_0 -> ⋯[label="𝜇(a)"]; ⋯ -> q_1 }
devient
\[𝛿' ≝ \lbrace (q,a,q') \mid q'∈𝛿(q,𝜇(a)) \rbrace\]digraph { rankdir=LR; q_0 -> q_1[label="a"]; }
On montre que $𝜇^{-1}(L(𝒜))⊆L(𝒜’)$ (l’autre inclusion étant triviale)
-
Shuffle (mélange) :
\[u \bot v ≝ \lbrace u_1 v_1 ⋯ v_k u_2 ⋯ u_n v_n \mid u_i ∈𝛴^\ast, v_i∈𝛴^\ast, u = u_1 ⋯ u_n, v = v_1 ⋯ v_n \rbrace\] \[L \bot M = \bigcup_{u∈L, v∈M} u \bot v\]Prop : Les langages reconnaissables sont fermés par mélange
Pour $𝒜_1$ et $𝒜_2$, on construit :
$𝒜 ≝ ⟨Q_1 \times Q_2, 𝛴, 𝛿, I_1 \times I_2, F_1 \times F_2⟩$
\[𝛿 ≝ \lbrace ((q_1, q_2), a, (q'_1, q_2)) \mid a∈𝛴 ∪ \lbrace 𝜀 \rbrace , (q_1, a, q'_1) ∈ 𝛿_1, q_2 ∈Q\rbrace \\ ∪ \lbrace ((q_1, q_2), a, (q_1, q'_2)) \mid a∈𝛴 ∪ \lbrace 𝜀 \rbrace , (q_2, a, q'_2) ∈ 𝛿_2, q_1 ∈Q\rbrace\]
Expressions rationnelles
Syntaxe :
L’ensemble des expressions rationnelles sur $𝛴$ est l’ensemble des termes pour la syntaxe
\[E := ∅ \vert 𝜀 \vert a∈𝛴 \vert E\cdot E \vert E+E \vert E^\ast\]NB : les opération d’union, de concaténation et l’étoile de Kleene sont aussi appelées “opérations rationnelles”.
Sémantique :
- $L(E) ⊆ 𝛴^\ast$ est défini inductivement
- $L(∅) ≝ ∅$
- $L(𝜀) ≝ \lbrace 𝜀 \rbrace$
- $L(a) ≝ \lbrace a \rbrace$
- $L(E_1 \cdot E_2) ≝ L(E_1) \cdot L(E_1)$
- $L(E_1 + E_2) ≝ L(E_1) ∪ L(E_1)$
- $L(E_1^\ast) ≝ L(E_1)^\ast$
NB :
-
$L(𝜀) = L(∅^\ast)$
-
l’ensemble des langages rationnels est le plus petit ensemble contenant les langages finis sur $𝛴$ et fermé par union, concaténation, et étoile de Kleene.
-
Clôture par substitution rationnelle : à chaque lettre on associe une expression rationnelle
\[𝜇:𝛴⟶Rat(𝛴^\ast) \\ 𝜇(𝜀)=\lbrace 𝜀 \rbrace \\ 𝜇(uv) = 𝜇(u) \cdot 𝜇(v)\]
Théorème de Kleene
Th de Kleene :
\[\underbrace{Rat(𝛴^\ast)}_{\text{ lang. déf. par expr. rat}} = \underbrace{Rec(𝛴^\ast)}_{\text{ lang. rec. par automates}}\]
$Rat(𝛴^\ast) ⊆ Rec(𝛴^\ast)$ :
Construction de THOMSON par induction sur $E$ : on obtient un automate standard $𝒜_E$ de taille $O(\vert E \vert)$
- automate standard $𝒜_E$ :
-
$\vert I \vert = \vert F \vert = 1$, et pas de transition entrantes dans $I$ ni de transition sortante de $F$
$𝒜_∅$ :
digraph {
rankdir=LR;
q_0; q_f;
}
$𝒜_𝜀$ :
digraph {
rankdir=LR;
q_0 -> q_f[label="𝜀"];
}
$𝒜_a$ :
digraph {
rankdir=LR;
q_0 -> q_f[label="a"];
}
$𝒜_{E_1 \cdot E_2}$ :
digraph {
rankdir=LR;
q_0 -> 𝒜_1;
𝒜_1 -> 𝜀;
𝜀 -> 𝒜_2;
}
$𝒜_{E_1 + E_2}$ :
digraph {
rankdir=LR;
q_0 -> 𝒜_1;
𝒜_1 -> q_f;
q_00 -> 𝒜_2;
𝒜_2 -> q_ff;
q_0 -> q_00[label="𝜀"];
q_ff -> q_f[label="𝜀"];
}
$𝒜_{E^\ast}$ :
digraph {
rankdir=LR;
q_0 -> 𝒜_1;
𝒜_1 -> q_f;
q_00 -> q_0[label="𝜀"];
q_f -> q_ff[label="𝜀"];
q_f -> q_0[label="𝜀"];
q_0 -> q_ff[label="𝜀"];
}
On définit la taille alphabétique $\Vert E \Vert$ d’une ER $E$ par récurrence, de manière naturelle.
- Construction de Thomson par induction sur $E$ : \(\vert Q \vert ∈ O(\vert E \vert)\)
- Construction de Glushkov : \(\vert Q \vert= \Vert E \Vert + 1\)
- Construction d’Antimirov : \(\vert Q \vert ≤ \Vert E \Vert + 1\)
- Construction d’Hromovic : \(O(\vert E \vert \log \log \vert E \vert)\)
$Rec(𝛴^\ast) ⊆ Rat(𝛴^\ast)$ :
Construction par élimination d’états : Mc Naughton Yamada :
\[𝒜 = (Q, 𝛴, 𝛿, I, F)\]La matrice d’adjacence donne une table des
$L_{q,q’} ≝$
- $\lbrace a \rbrace$ si $(q, a, q’)∈𝛿$
- $∅$ sinon
- $\lbrace 𝜀 \rbrace$ si $q=q’$
On ordonne les états de $1$ à $\vert Q \vert$
\[L_{q,q'}^{(k)} ≝ \lbrace a_1 ⋯ a_n ∈ 𝛴^\ast \mid q ⟶^{a_1} q_1 ⟶ ⋯ ⟶^{a_n} q'; ∀i, q_i ≤ k \rbrace\] \[L(𝒜) = \bigcup_{q∈I, q'∈F} L_{q,q'}^{\vert Q \vert}\]Montrons que les langages $L_{q,q’}^{(k)}$ sont rationnels.
Par réc sur $k$, le cas de base étant trivial.
\[L_{q,q'}^{(k+1)}= L_{q,q'}^{(k)} ∪ L_{q,k+1}^{(k)}(L_{k+1,k+1}^{(k)})^\ast L_{k+1,q'}^{(k)}\]Cette construction se fait en $2^{O(\vert Q \vert)}$
\[S_k = \max_{q,q'} \vert L_{q,q'}^{(k)} \vert \\ S_0 ≤ 3 \\ S_{k+1} ≤ 4S_k + 4\]Exemple :
On va construire un automate tel qu’il n’y a pas d’ER de taille inférieure à $2^{𝛺(\vert Q \vert)}$
Automate $𝒜_n$ avec :
\[𝛴_n ≝ \lbrace a_{i,j} \mid 1≤i,j≤n \rbrace \\ Q_n = ⟦1,n⟧ \\ I_n = F_n = \lbrace 1 \rbrace \\ 𝛿_n = \lbrace (i, a_{i,j}) \mid 1 ≤ i,j ≤n \rbrace\]Relations rationnelles
- Transducteur fini :
-
un tuple $𝜏 ≝ ⟨Q, 𝛴, 𝛥, 𝛿, I, F⟩$, où :
- $Q$ ens. fini d’états
- $𝛴,𝛥$ alphabets finis
- $𝛿⊆ Q \times 𝛴^\ast \times 𝛥^\ast \times Q$ fini
- $I,F⊆Q$ ens. intiaux et finals
Sémantique :
Une exécution sur $(w,w’)∈𝛴^\ast \times 𝛥^\ast$
$∃n;$
-
$w = u_1 u_2 ⋯ u_n ∈ 𝛴^\ast$
-
$w’ = v_1 v_2 ⋯ v_n ∈ 𝛥^\ast$
- Exécution acceptante :
-
si $q_0∈I$, $q_n∈F$
La relation définie par $𝜏$ est
\[R(𝜏) = \lbrace (w, w') \mid 𝛿(q_0, w, w')∩F≠∅ ⊆ 𝛴^\ast \times 𝛥^\ast \rbrace\]Exs :
Relation identité :
digraph {
rankdir=LR;
q_0 -> q_0[label="a,a"];
}
Relation $L\times \lbrace 𝜀 \rbrace$ :
On remplace les transitions étiquetées par $a$ dans l’automate d’origine et on les étiquette par $(a, 𝜀)$
Relation $R_𝜇 ≝ \lbrace (u, 𝜇(u)) \mid u∈𝛴^\ast \rbrace$ :
digraph {
rankdir=LR;
q_0 -> q_0[label="a,𝜇(a)"];
}
Relation $R^{-1} ≝ \lbrace (w’, w) \mid (w,w’)∈R \rbrace$ :
On remplace les transitions étiquetées par $(w,w’)$ dans le transducteur d’origine et on les étiquette par $(w’, w)$
Th : Les langages rationnels sont fermés par relations rationnelles.
Preuve :
Soit $𝒜$ tq $L(𝒜) = L$
et $𝜏$ tq $R(𝜏) = R$
on construit $𝒜’$ tq
\[L(𝒜') = R(L) \\ = \lbrace w' \mid ∃ w∈L; (w, w') ∈ R \rbrace\]Lemme : $R=R(𝜏)$, où
\[𝛿 ⊆ Q \times 𝛴 \times \lbrace 𝜀 \rbrace \times Q ∪ Q \times \lbrace 𝜀 \rbrace \times 𝛥 \times Q\]
Dém : trivial
NB : Pour $R(𝛴^\ast)$, il suffit d’oublier la première composante dans le transducteur d’origine.
$Q = Q_1 \times Q_2, I = I_1 \times I_2, F = F_1 \times F_2$
\[𝛿 = \lbrace (q_1, q_2), 𝜀, (q'_1, q_2) \mid ∃a∈𝛴; (q_1, a, q'_1) ∈ 𝛿_1, (q_2, a, 𝜀, q_2) ∈ 𝛿_2 \rbrace \\ ∪ \lbrace (q_1, q_2), b, (q_1, q'_2) \mid (q_2, 𝜀, b, q'_2) ∈ 𝛿_2 \rbrace\]ça généralise ce qu’on a fait précédemment.
Leave a comment