Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Théorie des Langages Formels Chapitre 5 : Automates minimaux Florence Levé [email protected] Année 2014-2015 1/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Introduction Les algorithmes vus précédemment peuvent mener à des automates relativement gros. On souhaite obtenir des automates les plus petits possible, en gardant l’avantage des automates déterministes. Nous nous intéressons donc ici à l’automate déterministe ayant le moins d’états possible : I I Nous allons voir qu’il est unique. Nous verrons deux méthodes pour l’obtenir : une directement à partir d’une expression rationnelle ; l’autre à partir d’un automate déjà connu. 2/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Automate minimal Théorème : Tout langage reconnaissable est reconnu par un unique (au renommage près des états) automate déterministe complet tel que tout autre automate déterministe complet a au moins autant d’états que lui. L’automate décrit ci-dessus est appelé automate minimal complet ou plus simplement automate minimal reconnaissant le langage. 3/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Résiduel Soient A un alphabet, L ⊆ A∗ un langage et u ∈ A∗ un mot. Le résiduel (à gauche ou quotient à gauche) de L par rapport à u est le langage u −1 L = {v ∈ A∗ | uv ∈ L}. Exemple : L = {ab, ba, aab} I I I a−1 L = {b, ab}, b −1 L = {a}, c −1 L = ∅ Méthode : I u −1 L est l’ensemble X tel que L ∩ uA∗ = uX I Pour calculer un résiduel u −1 L sur un exemple simple : 1. Trouver les mots de L commençant par u : L ∩ uA∗ ; 2. Enlever les préfixes u −→ u −1 L. 4/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Lemme A∗ Soit L ⊆ un langage reconnu par un automate déterministe complet Aut = < A, Q, {d }, F , δ >. Soit u un mot. Il existe un unique chemin dans Aut partant de d et étiqueté par u : soit p l’état dans lequel aboutit ce chemin. Alors : u −1 L = Lp Preuve : uLp ⊆ L implique Lp ⊆ u −1 L Pour v appartenant à u −1 L, uv ∈ L. Puisque l’automate est déterministe, l’unique chemin reconnaissant uv dans Aut est un chemin qui après avoir reconnu u arrive en p et donc v ∈ Lp . Ainsi u −1 L ⊆ Lp . Corollaire : Tout langage reconnaissable a un nombre fini de résiduels. 5/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Lemme Pour tous mots u et v et pour tout langage L, (uv )−1 L = v −1 (u −1 L) Preuve : (uv )−1 L = {w | uvw ∈ L} = {w | vw ∈ u −1 L} = v −1 (u −1 L) 6/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Approche On peut calculer les résiduels u −1 L pour les longueurs de u successives : 0, 1, 2,. . . Comme il y a un nombre fini de résiduels, le calcul ne peut que s’arrêter. 7/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Calcul des résiduels Donnée : un langage L ; Hypothèse : le langage L a un nombre fini de résiduels ; Résultats : les résiduels de L (notés L0 , . . . , Lk−1 où k est le nombre de résiduels de L). Premier résiduel : ε−1 L = L (le noter L0 ) tant que de nouveaux ensembles apparaissent : I I calculer les résiduels par rapport aux lettres de l’alphabet en partant des ensembles précédemment obtenus ; numéroter au fur et à mesure les langages distincts rencontrés. 8/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Formules utiles Dans le formulaire suivant a est une lettre, L, L1 et L2 sont des ensembles. 1. a−1 (L1 ∪ L2 ) = a−1 L1 ∪ a−1 L2 2. a−1 (L1 L2 ) = (a−1 L1 )L2 si ε 6∈ L1 3. a−1 (L1 L2 ) = (a−1 L1 )L2 ∪ a−1 L2 si ε ∈ L1 4. a−1 (L∗ ) = (a−1 L)L∗ 5. a−1 (L1 ∩ L2 ) = a−1 L1 ∩ a−1 L2 6. a−1 (A∗ \ L) = A∗ \ (a−1 L) 7. a−1 (L1 \ L2 ) = (a−1 L1 ) \ (a−1 L2 ) 9/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Exemple Résiduels du langage A∗ ab sur alphabet {a, b}. L0 = ε−1 L = L a−1 L0 = a−1 (A∗ ab) = (a−1 A∗ )ab ∪ a−1 {ab} = (a−1 A)A∗ ab ∪ {b} = εA∗ ab ∪ {b} = A∗ ab + b := L1 b−1 L0 = L0 a−1 L1 = L1 b−1 L1 = ε + A∗ ab := L2 a−1 L2 = L1 b−1 L2 = L0 10/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Remarques La méthode de calcul précédente n’est pas implémentable dans tous les cas : problème 1. Comment est donné le langage L ? Pas nécessairement par le biais d’une expression rationnelle ? problème 2. Comment tester l’égalité d’un langage par rapport aux précédents déjà calculés, en particulier si le langage n’est pas reconnaissable.... et même quand il l’est. L’hypothèse “nombre de résiduels fini” n’est pas toujours évaluable et, sans elle, le calcul précédent ne finit pas. Par contre, quand elle est implémentable, elle donne directement un automate déterministe (avec le moins d’états possibles). 11/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Construction de l’automate minimal Proposition : 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 : I I I I I 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 de départ 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 d’acceptation si et seulement si ε ∈ Li . L’automate défini ainsi est appelé automate des résiduels. 12/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Exemple A∗ ab L0 = L = a−1 L0 = L1 = A∗ ab + b b−1 L0 = L0 a−1 L1 = L1 b−1 L1 = L2 = ε + A∗ ab a−1 L2 = L1 b−1 L2 = L0 b L0 (ε ∈ L2 ⇒ L2 état d’acceptation) a a L1 b L2 a b 13/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Preuve de la proposition 1. Un langage L est reconnaissable si et seulement si le nombre de ses résiduels est fini. ⇐ on donne une construction de l’automate résiduel. ⇒ Le premier lemme du chapitre implique que le nombre de résiduels d’un langage reconnu par un automate fini est fini puisqu’il est majoré par le nombre d’états de cet automate. 2. L’automate déterministe minimal complet reconnaissant L est l’automate des résiduels. Remarquons également que le même lemme associe à chaque résiduel au moins un état. Ainsi, le nombre d’états d’un automate déterministe complet reconnaissant un langage est minoré par le nombre de résiduels (de ce fait, à un état n’est associé qu’un seul résiduel). Donc l’automate des résiduels a un nombre minimal d’état. 14/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Preuve de la proposition 2. L’automate déterministe minimal complet reconnaissant L est l’automate des résiduels. L’automate des résiduels est déterministe et complet : par construction, pour chaque état (un résiduel) on calcule une transition et une seule par chaque lettre. L’automate des résiduels reconnaît le langage L. Idée : Si u = a1 . . . an est un mot, il existe un chemin (L0 , a1 , a1−1 L), (a1−1 L, a2 , a2−1 (a1−1 L) = (a1 a2 )−1 L), ((a1 a2 )−1 L, a3 , (a1 a2 a3 )−1 L), ..., (a1 a2 a3 . . . an−1 )−1 L, an , (a1 a2 a3 . . . an−1 an )−1 L dans l’automate des résiduels. On a : a1 . . . an ∈ L si et seulement si ε ∈ (a1 a2 a3 . . . an−1 an )−1 L. 15/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Preuve de la proposition Il reste à vérifier que tout automate minimal déterministe complet est isomorphe à l’automate des résiduels i.e. à un renommage des états est l’automate des résiduels. Soit donc un automate Aut ayant le même nombre d’états que l’automate des résiduels. I I I I On a vu que chaque résiduel est associé à un unique état Le résiduel par ε est nécessairement l’état initial. Les états terminaux correspondent nécessairement aux résiduels qui contiennent le mot vide. Considérons à présent une transition (Li , a, Lj ). Cette transition existe puisque l’automate est complet et est unique puisque l’automate est déterministe. Par association des langages aux état, aLj ⊆ Li et donc a−1 Li ⊆ Lj . Soit v un mot dans Lj , av est alors l’étiquette d’un chemin partant de Li allant dans un état final : av ∈ Li . Ainsi Lj ⊆ a−1 Li . Donc les transitions de l’automate Aut sont les mêmes que celles de l’automate des résiduels. 16/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Une manière de tester la minimalité Idée : nous avons vu que, pour tout automate déterministe, tout état était associé à un unique résiduel. Mais la réciproque n’est pas vraie : deux états peuvent être associés à un même résiduel. Si c’est le cas l’automate n’est pas minimal. 17/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore États séparés Soit Aut = < A, Q, {d }, F , δ > un automate fini déterministe complet. Deux états s, t ∈ Q sont séparés par le mot u ∈ A∗ si l’une des deux conditions suivantes est vérifiée : I I u ∈ Ls=init et u ∈ 6 Lt=init ; u 6∈ Ls=init et u ∈ Lt=init . Autrement dit, 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 d’acceptation, tandis que le chemin étiqueté par ce mot et partant de l’autre état aboutit dans un état qui n’est pas d’acceptation. Exemple : < {a, b}, {1, 2, 3}, {1}, {2}, {(1, a, 2), (1, b, 1), (2, a, 3), (2, b, 2), (3, a, 3), (3, b, 1)} >. Le mot vide sépare les états 1 et 2. Le mot aab ne les sépare pas. 18/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Test de minimalité Proposition : Un automate déterministe complet est minimal si et seulement si pour tout couple d’états (p, q) il existe un mot qui sépare p et q. Conséquence : Le résultat précédent donne un moyen de montrer qu’un automate est minimal. Il suffit d’exhiber pour chaque couple d’état (p, q) un mot qui les sépare. Par exemple, l’automate précédent est minimal : le mot vide sépare les états 1 et 2 ; il sépare aussi les états 2 et 3 ; le mot ab sépare les états 1 et 3. 19/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Équivalence de Nérode Définition : Étant donnés un automate Aut, des états p et q et un entier n ≥ 0, notons : 1. p ≡ q le fait que p et q ne sont séparés par aucun mot 2. p ≡n q le fait que p et q ne sont séparés par aucun mot de longueur inférieure ou égale à n. La relation ≡ (définie sur les états de Aut) est appelée Relation de Nérode. Lemme : Étant donné un automate Aut, les relations ≡ et ≡n (pour tout entier n ≥ 0) sont des relations d’équivalence (i.e. réflexive, symétrique et transitive). 20/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Partitionnement des états d’un automate Lemme : Pour un automate de k états : 1. pour tout entier n ≥ 0, p ≡n+1 q si et seulement si p ≡n q et pour toute lettre a, δ(p, a) ≡n δ(q, a) ; 2. il existe un entier n avec 0 ≤ n ≤ k tel que ≡n =≡n+1 (i.e. pour tous états p et q, p ≡n q si et seulement si p ≡n+1 q) et pour tout entier m ≥ n, ≡m =≡n =≡ ; 3. Si ≡n =≡n+1 alors ≡n+1 =≡n+2 . 21/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Algorithme de Moore Donnée : un automate complet déterministe accessible Résultat : l’équivalence de Nérode et l’automate minimal reconnaissant le langage reconnu par l’automate donné Principe général : l’algorithme calcule lettre par lettre les mots séparant des états (il calcule donc les classes d’équivalences des relations ≡n ). Après examen de chaque longueur de mot possible, un bilan est fait : il consiste à attribuer un numéro (en chiffre romain) à chaque classe de ≡n . 22/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Algorithme de Moore Construire un tableau dont les colonnes sont les différents états de l’automate de départ. La première ligne de bilan s’obtient en séparant (par ε) les états d’acceptation et les autres en deux classes. I I Numéroter I l’état de la première colonne ; Numéroter I ou II les états des autres colonnes de manière que tous les états d’acceptation soient numérotés de la même manière, et que tous les états non d’acceptation soient numérotées de l’autre manière. Les lignes suivantes du tableau sont construites une par une en regardant, pour chaque état, dans quel état mène la transition par une lettre de A et en notant la classe à laquelle appartient cet état dans la ligne bilan précédente. Cette opération est réalisée à raison d’une ligne par lettre de A. 23/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Algorithme de Moore Un nouveau bilan est effectué qui prend en compte le bilan précédent et toutes les lignes que l’on vient de calculer : deux colonnes différentes donnent deux classes différentes. La ligne obtenue fait le bilan de tout ce qui précède et c’est avec elle que l’on recommence. Là encore, les classes sont numérotées en chiffres romains à partir de la gauche. On répète les deux opérations qui précèdent jusqu’à obtenir deux lignes de bilan successives identiques. 24/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Algorithme de Moore Les états de l’automate minimal complet sont les classes de la dernière ligne de bilan. Les transitions se trouvent dans le tableau entre l’avant-dernière et la dernière ligne de bilan. L’état de départ est la classe contenant l’état de départ de l’automate déterministe. Les états d’acceptation sont les classes contenant des états d’acceptation de l’automate initial ; puisque ε sépare les états d’acceptation des autres, une classe ne contient soit que des états d’acceptation, soit aucun état d’acceptation. 25/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Exemple b b a 0 a 2 a 3 a 5 6 a a b 1 b a b 4 b a b 7 b 26/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Exemple b b a 0 a 2 a 3 a 5 6 a a b 1 b 0 ε I a II b II bilan I a III b II bilan I On s’arrête a b 1 2 3 4 II II I I II I II II II II I I II III IV IV III IV III III II III IV IV II III IV IV car on a deux fois le a 4 b 5 6 7 II I I I II II II I I III IV IV IV III III III IV IV III IV IV même bilan. b 7 b 27/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Exemple : automate minimal 0 I II II I III II I ε a b bilan a b bilan 1 II II II II III II II 2 II I II III IV III III 3 I II I IV III IV IV 4 I II I IV III IV IV 5 II I II III IV III III 6 I II I IV III IV IV 7 I II I IV III IV IV b b a I a IV III a a b II b 28/29 Automate minimal Automate des résiduels Test de minimalité Algorithme de Moore Remarques L’application de l’algorithme de Moore peut éventuellement mener à la conclusion que tous les états sont séparés. Cela constitue une preuve que l’automate initial est minimal. Du point de vue complexité, il y a plus n étapes dans l’algorithme. Chaque étape fait un calcul en Θ(n × card (A)) (si les transitions données par une table de transitions avec accès direct). L’algorithme a une complexité en Θ(n2 ) (mais il peut être appliqué sur des automates très grand par exemple issus d’une déterminisation. 29/29