Théorie des langages Automate fini minimal Elise Bonzon [email protected] LIPADE - Université Paris Descartes http://www.math-info.univ-paris5.fr/vbonzon/ 1 Automate fini minimal 1. Minimisation 2. Automate des résiduels 3. Test de minimalité 4. Algorithme de Moore 2 Minimisation Un exemple • Automate déterministe • Le langage reconnu est L = {ac, bc} 1 c a 0 3 c b 2 • Il existe d’autres automates qui reconnaissent L • On souhaite trouver le plus petit automate, c’est à dire l’automate complet ayant le plus petit nombre d’états qui reconnaı̂t L 3 Un exemple • Ici, tous les mots reconnus à partir de l’état 2 le sont aussi à partir de l’état 1 ⇒ on fusionne ces deux états, et on complète 1 c a 0 3 c b 2 4 Un exemple • Ici, tous les mots reconnus à partir de l’état 2 le sont aussi à partir de l’état 1 ⇒ on fusionne ces deux états, et on complète 1 c a 0 3 c b 0 a,b c 1, 2 c 3 a,b,c a,b 2 P a,b,c 4 Minimisation Théorème Tout langage rationnel est reconnu par un unique automate déterministe minimal. 5 Minimisation Théorème Tout langage rationnel est reconnu par un unique automate déterministe minimal. → La minimalité porte sur le nombre d’états d’un automate complet ! 5 Deux problèmes de minimisation Donnée : Une expression régulière • On veut construire l’automate minimal qui reconnait le langage décrit par cette expression régulière ⇒ Les résiduels Donnée : Un automate fini déterministe M • On veut construire l’automate minimal qui reconnait le langage L(M) ⇒ L’équivalence d’états 6 Automate des résiduels Résiduels Résiduels à gauche Soit un alphabet Σ, un langage L ⊆ Σ∗ et un mot w ∈ Σ∗ . Le résiduel à gauche (ou quotient à gauche) de L par rapport à w est le langage : w −1 L = {u ∈ Σ∗ | w .u ∈ L} v ∈L w u 7 Résiduels Résiduels à gauche Soit un alphabet Σ, un langage L ⊆ Σ∗ et un mot w ∈ Σ∗ . Le résiduel à gauche (ou quotient à gauche) de L par rapport à w est le langage : w −1 L = {u ∈ Σ∗ | w .u ∈ L} v ∈L Pour L = {ab, ba, aab}, on a w u • a−1 L = {b, ab} • b−1 L = {a} • c −1 L = ∅ • (ab)−1 L = {} 7 Résiduels Résiduels à gauche Soit un alphabet Σ, un langage L ⊆ Σ∗ et un mot w ∈ Σ∗ . Le résiduel à gauche (ou quotient à gauche) de L par rapport à w est le langage : w −1 L = {u ∈ Σ∗ | w .u ∈ L} v ∈L Pour L = {ab, ba, aab}, on a w u Pour L = aa(bb + c)∗ , on a • a−1 L = {b, ab} • a−1 L = a(bb + c)∗ • b−1 L = {a} • b−1 L = ∅ • c −1 L = ∅ • c −1 L = ∅ • (ab)−1 L = {} • (aab)−1 L = b(bb + c)∗ 7 Résiduels : propriétés • −1 L = L • ∅−1 L = ∅ • (uv )−1 L = v −1 (u −1 L) 8 Résiduels : propriétés • −1 L = L • ∅−1 L = ∅ • (uv )−1 L = v −1 (u −1 L) (uv )−1 L = {w ∈ Σ∗ | uvw ∈ L} = {w ∈ Σ∗ | vw ∈ u −1 L} = {w ∈ Σ∗ | w ∈ v −1 (u −1 L)} = v −1 (u −1 L) uvw ∈ L u v w 8 Rappel : langage généré à partir d’un état Langage généré à partir d’un état par un automate Le langage généré à partir d’un état q par un automate M = hQ, Σ, δ, q0 , F i, noté L(q) est l’ensemble des mots acceptés à partir de cet état. ∗ L(q) = Lq = {w ∈ Σ∗ |(q, w ) 7→ (qf , ) et qf ∈ F } Le langage généré par un automate M est défini par L(M) = L(q0 ) 9 Rappel : langage généré à partir d’un état Langage généré à partir d’un état par un automate Le langage généré à partir d’un état q par un automate M = hQ, Σ, δ, q0 , F i, noté L(q) est l’ensemble des mots acceptés à partir de cet état. ∗ L(q) = Lq = {w ∈ Σ∗ |(q, w ) 7→ (qf , ) et qf ∈ F } Le langage généré par un automate M est défini par L(M) = L(q0 ) Etat accessible Un état q est accessible s’il existe un chemin de qo à q dans M. 9 Langage Lq d’un automate Si M = hQ, Σ, δ, q0 , F i est déterministe, avec L(M) = L, on a pour tout w ∈ Σ∗ , et q ∈ Q ∗ (q0 , w ) 7→ (q, ) ⇒ w −1 L = Lq Preuve : x ∈ w −1 L ⇔ wx ∈ L ∗ ⇔ ∃qf ∈ F : (q0 , wx) 7→ (qf , ) ∗ ∗ ⇔ ∃qf ∈ F : (q0 , wx) 7→ (q, x) 7→ (qf , ) ∗ ⇔ ∃qf ∈ F : (q, x) 7→ (qf , ) ⇔ x ∈ Lq 10 Langage Lq et résiduels Théorème L’ensemble des résiduels à gauche de L, noté R(L) est fini. 11 Langage Lq et résiduels Théorème L’ensemble des résiduels à gauche de L, noté R(L) est fini. Proposition Soit M = hQ, Σ, δ, q0 , F i un automate déterministe et complet dont tous les états sont accessibles. On a : R(L) = {Lq (M), q ∈ Q} 11 Langage Lq et résiduels Théorème L’ensemble des résiduels à gauche de L, noté R(L) est fini. Proposition Soit M = hQ, Σ, δ, q0 , F i un automate déterministe et complet dont tous les états sont accessibles. On a : R(L) = {Lq (M), q ∈ Q} Conséquence immédiate : A partir d’une expression régulière pour L, on peut construire l’automate minimal qui reconnaı̂t L et dont chaque état correspond à un élément de R(L). 11 Construction de l’automate minimal 1. Un langage L est reconnaissable si et seulement si le nombre de ses résiduels est fini 2. L’automate déterministe minimal complet reconnaissant L est l’automate tel que : • les états sont numérotés de 0 à n − 1, où n est le nombre de résiduels de L ; • chaque résiduel Li correspond à un état noté i ; • l’état initial 0 correspond au résiduel de L par rapport à , c’est-à-dire L lui-même (L0 = −1 L = L) ; • il existe une transition (i; a; j) si et seulement si Lj = a−1 Li ; • i est un état final si et seulement si ∈ Li . L’automate défini ainsi est appelé automate des résiduels. 12 Exemple L = b∗ a(a + b)(= L0 ) δ → L0 a b 13 Exemple L = b∗ a(a + b)(= L0 ) a−1 L0 = a + b = L1 b−1 L0 = L0 δ → L0 a b 13 Exemple L = b∗ a(a + b)(= L0 ) a−1 L0 = a + b = L1 b−1 L0 = L0 δ → L0 a L1 = a + b b L0 13 Exemple L = b∗ a(a + b)(= L0 ) a−1 L0 = a + b = L1 b−1 L0 = L0 δ → L0 L1 a L1 = a + b b L0 a−1 L1 = = L2 b−1 L1 = = L2 13 Exemple L = b∗ a(a + b)(= L0 ) a−1 L0 = a + b = L1 b−1 L0 = L0 δ → L0 L1 a L1 = a + b L2 = b L0 L2 = a−1 L1 = = L2 b−1 L1 = = L2 13 Exemple L = b∗ a(a + b)(= L0 ) a−1 L0 = a + b = L1 b−1 L0 = L0 a−1 L1 = = L2 δ → L0 L1 ← L2 a L1 = a + b L2 = b L0 L2 = b−1 L1 = = L2 a−1 L2 = ∅ = L3 b−1 L2 = ∅ = L3 13 Exemple L = b∗ a(a + b)(= L0 ) a−1 L0 = a + b = L1 b−1 L0 = L0 a−1 L1 = = L2 δ → L0 L1 ← L2 a L1 = a + b L2 = L3 = ∅ b L0 L2 = L3 = ∅ b−1 L1 = = L2 a−1 L2 = ∅ = L3 b−1 L2 = ∅ = L3 13 Exemple L = b∗ a(a + b)(= L0 ) a−1 L0 = a + b = L1 b−1 L0 = L0 a−1 L1 = = L2 b−1 L1 = = L2 δ → L0 L1 ← L2 L3 a L1 = a + b L2 = L3 = ∅ b L0 L2 = L3 = ∅ a−1 L2 = ∅ = L3 b−1 L2 = ∅ = L3 a−1 L3 = ∅ = L3 b−1 L3 = ∅ = L3 13 Exemple L = b∗ a(a + b)(= L0 ) a−1 L0 = a + b = L1 b−1 L0 = L0 a−1 L1 = = L2 b−1 L1 = = L2 δ → L0 L1 ← L2 L3 a L1 = a + b L2 = L3 = ∅ L3 = ∅ b L0 L2 = L3 = ∅ L3 = ∅ a−1 L2 = ∅ = L3 b−1 L2 = ∅ = L3 a−1 L3 = ∅ = L3 b−1 L3 = ∅ = L3 13 Exemple L = b∗ a(a + b)(= L0 ) a−1 L0 = a + b = L1 b−1 L0 = L0 a−1 L1 = = L2 b−1 L1 = = L2 a −1 δ → L0 L1 ← L2 L3 a L1 = a + b L2 = L3 = ∅ L3 = ∅ 0 L2 = ∅ = L3 a b L0 L2 = L3 = ∅ L3 = ∅ 1 b−1 L2 = ∅ = L3 a,b b a−1 L3 = ∅ = L3 b−1 L3 = ∅ = L3 a,b 3 a,b 2 13 Un autre exemple L = (a + b)∗ ab δ a b 14 Un autre exemple L = (a + b)∗ ab a−1 L0 = (a + b)∗ ab + b = L1 b−1 L0 = (a + b)∗ ab = L0 δ → L0 a b 14 Un autre exemple L = (a + b)∗ ab a−1 L0 = (a + b)∗ ab + b = L1 b−1 L0 = (a + b)∗ ab = L0 δ → L0 a L1 b L0 14 Un autre exemple L = (a + b)∗ ab a−1 L0 = (a + b)∗ ab + b = L1 b−1 L0 = (a + b)∗ ab = L0 δ → L0 L1 a L1 b L0 a−1 L1 = (a + b)∗ ab + b + ∅ = L1 b−1 L1 = (a + b)∗ ab + = L2 14 Un autre exemple L = (a + b)∗ ab a−1 L0 = (a + b)∗ ab + b = L1 b−1 L0 = (a + b)∗ ab = L0 δ → L0 L1 a L1 L1 b L0 L2 a−1 L1 = (a + b)∗ ab + b + ∅ = L1 b−1 L1 = (a + b)∗ ab + = L2 14 Un autre exemple L = (a + b)∗ ab a−1 L0 = (a + b)∗ ab + b = L1 b−1 L0 = (a + b)∗ ab = L0 a−1 L1 = (a + b)∗ ab + b + ∅ = L1 δ → L0 L1 ← L2 a L1 L1 b L0 L2 b−1 L1 = (a + b)∗ ab + = L2 a−1 L2 = (a + b)∗ ab + b + ∅ = L1 b−1 L2 = (a + b)∗ ab + ∅ = L0 14 Un autre exemple L = (a + b)∗ ab a−1 L0 = (a + b)∗ ab + b = L1 b−1 L0 = (a + b)∗ ab = L0 a−1 L1 = (a + b)∗ ab + b + ∅ = L1 δ → L0 L1 ← L2 a L1 L1 L1 b L0 L2 L0 b−1 L1 = (a + b)∗ ab + = L2 a−1 L2 = (a + b)∗ ab + b + ∅ = L1 b−1 L2 = (a + b)∗ ab + ∅ = L0 14 Un autre exemple L = (a + b)∗ ab a−1 L0 = (a + b)∗ ab + b = L1 b−1 L0 = (a + b)∗ ab = L0 a−1 L1 = (a + b)∗ ab + b + ∅ = L1 b−1 L1 = (a + b)∗ ab + = L2 δ → L0 L1 ← L2 b ∗ L2 = (a + b) ab + ∅ = L0 b L0 L2 L0 b a a−1 L2 = (a + b)∗ ab + b + ∅ = L1 −1 a L1 L1 L1 a 0 1 a b b 2 14 Test de minimalité Minimisation : 2ème problème Donnée : Un automate fini déterministe M • On veut construire l’automate minimal qui reconnait le langage L(M) ⇒ Fusionner les états équivalents 15 Etats séparés Intuition Deux états sont séparés par un mot si le chemin étiqueté par ce mot et partant de l’un des deux états aboutit dans un état final, tandis que le chemin étiqueté par ce mot et partant de l’autre état aboutit dans un état qui n’est pas final. 16 Etats séparés Intuition Deux états sont séparés par un mot si le chemin étiqueté par ce mot et partant de l’un des deux états aboutit dans un état final, tandis que le chemin étiqueté par ce mot et partant de l’autre état aboutit dans un état qui n’est pas final. b a • sépare les états 1 et 2 b 0 a 2 • aab ne sépare pas 1 et 2 • sépare les états 0 et 1 a • a sépare les états 0 et 2 1 b 16 Test de minimalité Minimalité Un automate déterministe complet est minimal si et seulement si pour tout couple d’états p et q, il existe un mot qui sépare p et q. • Ce résultat donne un moyen de montrer qu’un automate est minimal → Il suffit d’exhiber pour chaque paire d’états p et q un mot qui les sépare • Par exemple, l’automate précédent est minimal • Deux états qui ne sont séparés par aucun mot seront dit équivalents 17 Algorithme de Moore Congruence de Nérode Equivalence d’états Etant donné un automate fini déterministe M, deux états p et q sont équivalents si leurs langages associés respectifs sont identiques : p ≈ q si et seulement si Lp (M) = Lq (M) Autrement dit, ∗ ∗ Soient p 0 , q 0 définis ∀w ∈ Σ∗ , par (q, w ) 7→ (q 0 , ) et (p, w ) 7→ (p 0 , ). Alors ( q 0 ∈ F et p 0 ∈ F , ou (p ≈ q) ⇔ ∀w ∈ Σ∗ , q 0 6∈ F et p 0 6∈ F • p ≈ q signifie que p et q ne sont séparés par aucun mot • On note p ≈n q le fait que p et q ne sont séparés par aucun mot de longueur inférieure ou égale à n 18 Congruence de Nérode • La relation ≈ est une relation d’équivalence appelée congruence de Nérode. • Rappel : une relation d’équivalence est réflexive, symétrique et transitive • ∀n ≥ 0, la relation ≈n est également une relation d’équivalence • Si q est un état, on note [q] l’ensemble des états qui lui sont équivalents 19 Exemple b 1 3 a b a 0 a a a 5 b b 2 b 4 a,b 20 Exemple • 0 ≈ 3? b 1 3 a b a 0 a a a 5 b b 2 b 4 a,b 20 Exemple • 0 ≈ 3 ? Non, 0 6∈ F , 3 ∈ F b 1 3 a b a 0 a a a 5 b b 2 b 4 a,b 20 Exemple • 0 ≈ 3 ? Non, 0 6∈ F , 3 ∈ F • 0 ≈ 1? b 1 3 a b a 0 a a a 5 b b 2 b 4 a,b 20 Exemple • 0 ≈ 3 ? Non, 0 6∈ F , 3 ∈ F • 0 ≈ 1 ? Non, b sépare 0 et 1 b 1 3 a b a 0 a a a 5 b b 2 b 4 a,b 20 Exemple • 0 ≈ 3 ? Non, 0 6∈ F , 3 ∈ F • 0 ≈ 1 ? Non, b sépare 0 et 1 b 1 • 3 ≈ 4? 3 a b a 0 a a a 5 b b 2 b 4 a,b 20 Exemple • 0 ≈ 3 ? Non, 0 6∈ F , 3 ∈ F • 0 ≈ 1 ? Non, b sépare 0 et 1 b 1 • 3 ≈ 4 ? Oui 3 a b a 0 a a a 5 b b 2 b 4 a,b • 3 ∈ F , 4 ∈ F , et • ∀w ∈ Σ∗ , ∗ (3, aw ) 7→ (p, ), ∗ (4, aw ) 7→ (q, ), avec p, q ∈ F ; • ∀w ∈ Σ∗ , ∗ (3, bw ) 7→ (p, ), ∗ (4, bw ) 7→ (q, ), avec p, q 6∈ F ; 20 Automate minimal Automate minimal Soit M = hQ, Σ, δ, q0 , F i un automate complet déterministe dont tous les états sont accessibles. L’automate minimal associé à M est Mmin = hQ 0 , Σ, δ 0 , [q0 ], F 0 i, avec • Q 0 = {[q], q ∈ Q} • δ 0 = {([p], x, [q] | ∃p 0 ∈ [p], ∃q 0 ∈ [q] tels que (p 0 , x, q 0 ) ∈ δ} • F 0 = {[f ], f ∈ F } 21 Algorithme de Moore Donnée : un automate complet déterministe accessible Résultat : la congruence de Nérode et l’automate minimal reconnaissant le langage reconnu par l’automate donné en entrée Principe : l’algorithme calcule lettre par lettre les mots séparant les états, et attribue un numéro (en chiffre romain) à chaque classe d’équivalence d’états. 22 Algorithme de Moore 1. Construire un tableau dont les colonnes sont les différents états de l’automate 2. Séparer les états finaux et non finaux en deux classes : • Numéroter par I l’état de la première colonne ; • Numéroter par I ou II chaque état, de façon à associer le même numéro à tous les états finaux, et l’autre numéro à tous les états non finaux 3. Créer une ligne pour chaque x ∈ Σ. Associer à chaque état p le numéro correspondant à l’état q tel que δ(p, x) = q 4. Bilan : on compare les numéro obtenus sur chaque ligne pour chaque état : deux colonnes différentes donnent deux classes d’équivalences différentes • Numéroter par I l’état de la première colonne • Si la seconde colonne est identique à la première, lui associer le numéro I . Sinon, lui associer le numéro II. • Poursuivre jusqu’à ce que toutes les colonnes soient numérotées 5. Recommencer les étapes 3. et 4. jusqu’à obtenir deux bilans successifs identiques 23 Algorithme de Moore • Les états de l’automate minimal complet sont les classes obtenues dans le dernier bilan • Les transitions sont celles trouvées lors de la dernière application de l’étape 3. • L’état initial de l’automate minimal est la classe d’équivalence contenant l’état initial de l’automate donné en entrée • Les états finaux sont les classes d’équivalences qui contiennent des états finaux de l’automate donné en entrée 24 Exemple 0 1 a a 0 b b 3 aa 2 b 2 3 4 5 b a 4 1 5 b a,b 25 Exemple 1 a a 0 b b 3 aa 2 b 1 I 2 I 3 II 4 II 5 I b a 4 0 I 5 b a,b 25 Exemple 1 a a 0 b b 3 aa 2 b b a 4 a 0 I 1 I 2 I 3 II 4 II 5 I 5 b a,b 25 Exemple 1 a a 0 b b 3 aa 2 b b a 4 a 0 I I 1 I I 2 I I 3 II II 4 II II 5 I I 5 b a,b 25 Exemple 1 a a 0 b b 3 aa 2 b b a 4 a b 0 I I I 1 I I II 2 I I II 3 II II I 4 II II I 5 I I I 5 b a,b 25 Exemple 1 a a 0 b b 3 aa 2 b b a 4 5 a b Bilan 0 I I I I 1 I I II 2 I I II 3 II II I 4 II II I 5 I I I b a,b 25 Exemple 1 a a 0 b b 3 aa 2 b b a 4 5 a b Bilan 0 I I I I 1 I I II II 2 I I II 3 II II I 4 II II I 5 I I I b a,b 25 Exemple 1 a a 0 b b 3 aa 2 b b a 4 5 a b Bilan 0 I I I I 1 I I II II 2 I I II II 3 II II I 4 II II I 5 I I I b a,b 25 Exemple 1 a a 0 b b 3 aa 2 b b a 4 5 a b Bilan 0 I I I I 1 I I II II 2 I I II II 3 II II I III 4 II II I III 5 I I I I b a,b 25 Exemple 1 a a 0 b b 3 aa 2 b b a 4 5 b a b Bilan a 0 I I I I II 1 I I II II II 2 I I II II II 3 II II I III III 4 II II I III III 5 I I I I I a,b 25 Exemple 1 a a 0 b b 3 aa 2 b b a 4 5 b a,b a b Bilan a b 0 I I I I II II 1 I I II II II III 2 I I II II II III 3 II II I III III I 4 II II I III III I 5 I I I I I I 25 Exemple 1 a a 0 b b 3 aa 2 b b a 4 5 b a,b a b Bilan a b Bilan 0 I I I I II II I 1 I I II II II III II 2 I I II II II III II 3 II II I III III I III 4 II II I III III I III 5 I I I I I I IV 25 Exemple 1 a a 0 b b 3 aa 2 b b a 4 5 b a,b a b Bilan a b Bilan a b Bilan 0 I I I I II II I II II I 1 I I II II II III II II III II 2 I I II II II III II II III II 3 II II I III III I III III IV III 4 II II I III III I III III IV III 5 I I I I I I IV IV IV IV 25 Exemple On obtient : a b Bilan a b Bilan a b Bilan 0 I I I I II II I II II I 1 I I II II II III II II III II 2 I I II II II III II II III II 3 II II I III III I III III IV III 4 II II I III III I III III IV III 5 I I I I I I IV IV IV IV I a a,b II b IV a,b b III a 25 Un autre exemple a b 0 a 1 b 3 a b 2 a,b 26 Un autre exemple a b 0 a a 1 II 2 II 3 II 1 b 3 0 I b 2 a,b 26 Un autre exemple a b 0 a 1 b 3 a a 0 I II 1 II II 2 II II 3 II II b 2 a,b 26 Un autre exemple a b 0 a 1 b 3 a a b 0 I II I 1 II II II 2 II II II 3 II II II b 2 a,b 26 Un autre exemple a b 0 a 1 b 3 a b a b Bilan 0 I II I I 1 II II II II 2 II II II II 3 II II II II 2 a,b 26 Un autre exemple a b 0 a 1 b 3 a b 2 a b Bilan a b Bilan 0 I II I I II I I 1 II II II II II II II 2 II II II II II II II 3 II II II II II II II a,b 26 Un autre exemple a b Bilan a b Bilan 0 I II I I II I I 1 II II II II II II II 2 II II II II II II II 3 II II II II II II II On obtient : b 0 a,b a 1 26