INFO-F-302, Cours d’Informatique Fondamentale INFO-F-302, Cours d’Informatique Fondamentale Emmanuel Filiot Département d’Informatique Faculté des Sciences Université Libre de Bruxelles Année académique 2014-2015 INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Automates Finis INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Rappels sur les langages I un alphabet est un ensemble fini, que l’on notera Σ I ses éléments sont appelés lettres ou symboles I un mot est une suite finie de symboles, dénotant le mot vide. I l’ensemble des mots sur Σ est noté Σ∗ I un langage L est un sous-ensemble de Σ∗ , i.e. L ⊆ Σ∗ INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Rappels sur les langages I un alphabet est un ensemble fini, que l’on notera Σ I ses éléments sont appelés lettres ou symboles I un mot est une suite finie de symboles, dénotant le mot vide. I l’ensemble des mots sur Σ est noté Σ∗ I un langage L est un sous-ensemble de Σ∗ , i.e. L ⊆ Σ∗ Exemple : avec Σ = {a, b}, l’ensemble {an | n est un entier pair} est un langage. INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Automates et complexité I les langages permettent de représenter des problèmes de décisions (OUI si le mot est dans le langage, NON sinon) PAIR = {b ∈ {0, 1}∗ | b est un entier pair en binaire} INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Automates et complexité I les langages permettent de représenter des problèmes de décisions (OUI si le mot est dans le langage, NON sinon) PAIR = {b ∈ {0, 1}∗ | b est un entier pair en binaire} I on a vu que certains langages (donc problèmes de décision) sont indécidables HALT = {c#u ∈ UTF8∗ | c est le code d’un programme qui termine sur l’entrée u} I c’est-à-dire qu’il n’existe pas de machine de Turing permettant de les décider INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Automates et complexité I les langages permettent de représenter des problèmes de décisions (OUI si le mot est dans le langage, NON sinon) PAIR = {b ∈ {0, 1}∗ | b est un entier pair en binaire} I on a vu que certains langages (donc problèmes de décision) sont indécidables HALT = {c#u ∈ UTF8∗ | c est le code d’un programme qui termine sur l’entrée u} I c’est-à-dire qu’il n’existe pas de machine de Turing permettant de les décider I les automates, étudiés depuis les années 50, sont des modèles de machines simples, dont le pouvoir de calcul est restreint I initialement, le but était de définir des classes de problèmes/langages/programmes pouvant être analysés algorithmiquement I nous allons voir les automates finis, un modèles très simple d’automates. INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Un premier exemple Un automate fini I lit la séquence des lettres de gauche à droite, I possède un nombre fini d’états, I en fonction de l’état courant et de la lettre lue, se déplace vers un autre état, I possède un état initial (représenté par une flèche sans source), et des états finaux (ou acceptants, représentés par des doubles cercles) I il accepte le mot ssi, lorsqu’il arrive à la fin du mot, il se trouve dans un état final b b a q0 q1 a INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Un premier exemple b b a q0 q1 a Exemple d’exécutions (appelées run en anglais) entrée aabaa abb bbaa exécution accepté INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Un premier exemple b b a q0 q1 a Exemple d’exécutions (appelées run en anglais) entrée q0 aabaa abb bbaa a q 1 a exécution q b q 0 0 accepté a q 1 a q0 oui INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Un premier exemple b b a q0 q1 a Exemple d’exécutions (appelées run en anglais) entrée q0 a q 1 a exécution q b q 0 0 accepté a q 1 q0 bbaa q0 oui aabaa abb a a q 1 b q 1 b q 1 non INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Un premier exemple b b a q0 q1 a Exemple d’exécutions (appelées run en anglais) entrée q0 a q 1 exécution q b q a 0 accepté 0 a q 1 a q0 a q 1 b q 1 b q 1 abb non q0 bbaa q0 oui aabaa b q 0 b q 0 a q 1 a q0 oui INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Un premier exemple b b a q0 q1 a Exemple d’exécutions (appelées run en anglais) entrée q0 a q 1 exécution q b q a 0 accepté 0 a q 1 a q0 oui aabaa q0 a q 1 b q 1 b q 1 abb non q0 b q 0 b q 0 a q 1 a q0 oui bbaa q0 oui INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Un premier exemple b b a q0 q1 a Langage accepté (ou reconnu) Le langage accepté (ou reconnu) par l’automate A ci-dessous, noté L(A), est l’ensemble des mots qui contiennent un nombre pair de lettres a : L(A) = {w ∈ {a, b}∗ | w contient un nombre pair de a} INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Question Question Donner un automate dont le langage reconnu est l’ensemble des mots sur l’alphabet Σ = {a, b} qui contiennent au moins une lettre. INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Question Question Donner un automate dont le langage reconnu est l’ensemble des mots sur l’alphabet Σ = {a, b} qui contiennent au moins une lettre. Réponse a a q0 q1 b b INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Quelques applications I nombreuses applications en informatique théorique I modélisation de protocoles réseau I analyse de texte, recherche textuelle I compilation (analyseur lexicaux) I preuve automatique de programmes (théorie du model-checking) I jeux vidéos (chaque agent est un automate) I ... INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Autres exemple : Recherche Textuelle I on veut trouver toutes les occurrences de 101 dans une séquence de bits INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Autres exemple : Recherche Textuelle I on veut trouver toutes les occurrences de 101 dans une séquence de bits 0 0 I à chaque fois qu’on va dans l’état 101, on sort la position correspondante dans le mot. INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Autres exemple : Recherche Textuelle I on veut trouver toutes les occurrences de 101 dans une séquence de bits 0 0 I 1 1 à chaque fois qu’on va dans l’état 101, on sort la position correspondante dans le mot. INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Autres exemple : Recherche Textuelle I on veut trouver toutes les occurrences de 101 dans une séquence de bits 1 0 0 I 1 1 à chaque fois qu’on va dans l’état 101, on sort la position correspondante dans le mot. INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Autres exemple : Recherche Textuelle I on veut trouver toutes les occurrences de 101 dans une séquence de bits 1 0 0 I 1 1 0 10 à chaque fois qu’on va dans l’état 101, on sort la position correspondante dans le mot. INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Autres exemple : Recherche Textuelle I on veut trouver toutes les occurrences de 101 dans une séquence de bits 1 0 0 1 1 0 10 0 I à chaque fois qu’on va dans l’état 101, on sort la position correspondante dans le mot. INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Autres exemple : Recherche Textuelle I on veut trouver toutes les occurrences de 101 dans une séquence de bits 1 0 1 0 1 1 0 10 0 I à chaque fois qu’on va dans l’état 101, on sort la position correspondante dans le mot. 101 INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Autres exemple : Recherche Textuelle I on veut trouver toutes les occurrences de 101 dans une séquence de bits 1 0 1 0 1 1 0 10 0 0 I à chaque fois qu’on va dans l’état 101, on sort la position correspondante dans le mot. 101 INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Autres exemple : Recherche Textuelle I on veut trouver toutes les occurrences de 101 dans une séquence de bits 1 0 1 0 1 1 0 I 0 10 0 1 à chaque fois qu’on va dans l’état 101, on sort la position correspondante dans le mot. 101 INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Avantages/Inconvénients des automates Avantages I I classe de programmes simples mais ayant de nombreuses applications beaucoup de problèmes indécidables pour les machines de Turing deviennent décidables pour les automates. Exemples : I I est-ce que deux automates font la même chose (i.e. reconnaissent le même langage) ? étant donné un automate, est-ce qu’il en existe un plus petit (un nombre d’état) qui fait la même chose ? I “plus petite” classe de machines avec laquelle on peut définir et étudier de manière précise des notions importantes en théorie de la calculabilité : non-déterminisme, alternance, ambiguité, etc. I bien compris, nombreux résultats, nombreux algorithmes pour les analyser I robustes : beaucoup de caractérisations (expressions rationnelles, logique, régularité, algébrique ...), clôture par opérations Booléennes INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Avantages/Inconvénients des automates Inconvénients I peu puissants I peu compacts INFO-F-302, Cours d’Informatique Fondamentale Automates Finis Introduction Dans ce cours ... I définition, exemples I opérations Booléennes I minimisation I expressions rationnelles INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Définition Définition Un automate fini 1 A sur un alphabet Σ est un 4-uplet (Q, q0 , F , δ) où I Q est un ensemble fini d’éléments appelé états, I q0 ∈ Q est appelé état initial, I F ⊆ Q est un ensemble d’états dits finaux (ou acceptants), I δ : Q × Σ → Q est une fonction (pas nécessairement totale) appelé fonction de transition. 1. Par la suite, on dira simplement automate INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Définition Définition Un automate fini 1 A sur un alphabet Σ est un 4-uplet (Q, q0 , F , δ) où I Q est un ensemble fini d’éléments appelé états, I q0 ∈ Q est appelé état initial, I F ⊆ Q est un ensemble d’états dits finaux (ou acceptants), I δ : Q × Σ → Q est une fonction (pas nécessairement totale) appelé fonction de transition. Lorsqu’il lit une entrée w ∈ Σ∗ , l’automate A commence son exécution dans l’état q0 , et suit la fonction de transition δ, qui lui indique, en fonction de l’état où il se trouve et de la lettre qu’il lit, l’état suivant où il doit aller (si la fonction n’est pas définie, alors l’automate d’arrête et le mot n’est pas accepté). Si, à la fin de son exécution, il atteint un état final, alors le mot est accepté, sinon il est rejeté. 1. Par la suite, on dira simplement automate INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Exécution Définition Une exécution de A est une suite finie e = p0 σ1 p1 σ2 . . . pn−1 σn pn (n ≥ 0) telle que : I p0 = q0 I pour tout i ∈ {0, . . . , n}, pi ∈ Q I pour tout i ∈ {1, . . . , n}, σi ∈ Σ I pour tout i ∈ {0, . . . , n − 1}, δ(pi , σi+1 ) est définie et vaut pi+1 . On dit l’exécution e est une exécution sur le mot σ1 . . . σn , et que e est acceptante si l’état atteint est final, i.e. pn ∈ F . Remarque : la suite q0 est une exécution sur le mot vide . Elle est acceptante ssi q0 est final. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Langage accepté par un automate fini Définition Etant donné un automata A, le langage accepté (ou reconnu) par A, noté L(A), est l’ensemble des mots pour lesquels il existe une exécution acceptante de A. L(A) = {w ∈ Σ∗ | il existe une exécution acceptante de A sur w } INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Exemples Σ = {0, 1}. 0 0 1 1 1 0 10 1 101 0 Question Quel est le langage accepté par cet automate ? L(A) = {w ∈ {0, 1}∗ | w contient le facteur 101} INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Exemples Σ = {0, 1}. 0 0 0 1 1 1 0 0 10 1 101 1 INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Exemples Σ = {0, 1}. 0 0 0 1 1 1 0 10 0 Question Quel est le langage accepté par cet automate ? 1 101 1 INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Exemples Σ = {0, 1}. 0 0 0 1 1 1 0 10 1 101 0 Question Quel est le langage accepté par cet automate ? L(A) = {w ∈ {0, 1}∗ | w contient le facteur 101} 1 INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Exemples Σ = {a, b}. q7 a q8 a q4 b q5 a q6 q1 a q2 a q3 a q0 b INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Exemples Σ = {a, b}. q7 a q8 a q4 b q5 a q6 q1 a q2 a q3 a q0 b Question Quel est le langage accepté par cet automate ? INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Exemples Σ = {a, b}. q7 a q8 a q4 b q5 a q6 q1 a q2 a q3 a q0 b Question Quel est le langage accepté par cet automate ? L(A) = {a, ba, aa, aba, baa, aaa} INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Complétion d’un automate Définition Un automate A est dit complet si sa fonction de transition est totale. Exemple : l’automate précédent n’est pas complet, alors que l’automate qui accepte les mots contenant 101 est complet. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Complétion d’un automate Définition Un automate A est dit complet si sa fonction de transition est totale. Exemple : l’automate précédent n’est pas complet, alors que l’automate qui accepte les mots contenant 101 est complet. Lemme On peut toujours transformer un automate A en un automate B complet qui accepte le même langage, i.e. tel que L(A) = L(B). INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Complétion d’un automate Définition Un automate A est dit complet si sa fonction de transition est totale. Exemple : l’automate précédent n’est pas complet, alors que l’automate qui accepte les mots contenant 101 est complet. Lemme On peut toujours transformer un automate A en un automate B complet qui accepte le même langage, i.e. tel que L(A) = L(B). Idée de la preuve : ajouter un état supplémentaire (appelé état puits) non final et ajouter les transitions manquantes vers cet état. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Complétion d’un automate : Exemple q7 a q8 a q4 b q5 a q6 q1 a q2 a q3 a q0 I b les nouvelles transitions sont indiquées en pointillés. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Complétion d’un automate : Exemple b q7 a q8 a, b b a a, b q4 b q5 a q6 a, b a q0 b q1 a q2 a q3 b I b les nouvelles transitions sont indiquées en pointillés. p a, b INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Test du vide Test du vide Problème Le problème VIDE est le suivant. I ENTREE : un automate A sur un alphabet Σ, I SORTIE : est-ce que L(A) = ∅ ? INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Test du vide Test du vide : comment feriez-vous avec l’automate suivant ? INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Test du vide Test du vide Définition (Etats atteignables) Soit A = (Q, q0 , F , δ) un automate sur un alphabet Σ. Un état q ∈ Q est dit atteignable s’il existe un mot w ∈ Σ∗ et une exécution de A sur w qui se termine en q. Remarque : l’ensemble des états atteignables d’un graphe peut être calculer en temp O(n + m) par des algorithmes de graphe classiques (parcours en largeur par exemple), où n est le nombre d’états de l’automate, et m le nombre de transitions. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Test du vide Test du vide Définition (Etats atteignables) Soit A = (Q, q0 , F , δ) un automate sur un alphabet Σ. Un état q ∈ Q est dit atteignable s’il existe un mot w ∈ Σ∗ et une exécution de A sur w qui se termine en q. Remarque : l’ensemble des états atteignables d’un graphe peut être calculer en temp O(n + m) par des algorithmes de graphe classiques (parcours en largeur par exemple), où n est le nombre d’états de l’automate, et m le nombre de transitions. Théorème Etant donné un automate A avec n états m transitions, on peut tester en O(n + m) si L(A) 6= ∅. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Test du vide Test du vide Définition (Etats atteignables) Soit A = (Q, q0 , F , δ) un automate sur un alphabet Σ. Un état q ∈ Q est dit atteignable s’il existe un mot w ∈ Σ∗ et une exécution de A sur w qui se termine en q. Remarque : l’ensemble des états atteignables d’un graphe peut être calculer en temp O(n + m) par des algorithmes de graphe classiques (parcours en largeur par exemple), où n est le nombre d’états de l’automate, et m le nombre de transitions. Théorème Etant donné un automate A avec n états m transitions, on peut tester en O(n + m) si L(A) 6= ∅. Algorithme 1. calculer l’ensemble des états atteignables R de A 2. tester si R ∩ F 6= ∅. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Opérations Booléennes sur les langages Définition (Complément) Le complément d’un langage L ⊆ Σ∗ est le langage, noté L, défini par L = {w ∈ Σ∗ | w 6∈ L} = Σ∗ \ L. Exemple : si L est l’ensemble des mots sur {a, b} qui contiennent au moins un a, alors L est l’ensemble des mots qui contiennent au moins deux a, ou pas de a. Définition (Union, Intersection) Soient L1 , L2 ⊆ Σ∗ deux langages. L’union et l’intersection de L1 et L2 sont définies respectivement par : L1 ∪ L2 L1 ∩ L2 = {w ∈ Σ∗ | w ∈ L1 ou w ∈ L2 } = {w ∈ Σ∗ | w ∈ L1 et w ∈ L2 } INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Clôture des automates par opérations Booléennes Théorème Soient A, A1 , A2 des automates finis sur un alphabet Σ. Il existe des automates Ac , U et I tels que : L(Ac ) L(U) L(I ) = L(A) = L(A1 ) ∪ L(A2 ) = L(A1 ) ∩ L(A2 ) Dans la suite, nous allons montrer comment construire Ac , U et I à partir de A, A1 et A2 . INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Clôture par complément I Si A = (Q, q0 , F , δ) est complet, alors il suffit de prendre Ac = INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Clôture par complément I Si A = (Q, q0 , F , δ) est complet, alors il suffit de prendre Ac = (Q, q0 , Q \ F , δ). INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Clôture par complément I Si A = (Q, q0 , F , δ) est complet, alors il suffit de prendre Ac = (Q, q0 , Q \ F , δ). I Si A n’est pas complet, alors il faut le compléter avant. I Par exemple, si A = b b a q0 q1 a I alors Ac = b b a q0 q1 a INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Clôture par complément I Par exemple, si A = 0 0 1 1 1 0 10 1 101 0 I alors Ac = 0 0 1 1 1 0 0 0 10 1 101 1 INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Clôture par complément I Par exemple, si A = 0 0 0 1 1 1 0 10 1 0 I 101 1 alors Ac = 0 0 1 1 1 0 0 0 10 1 101 1 INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Clôture par complément Exercice Donner un exemple d’automate A = (Q, q0 , F , δ) non complet sur un alphabet Σ, tel que l’automate B = (Q, q0 , Q \ F , δ) ne satisfait pas L(B) = L(A). INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Clôture par complément Exercice Donner un exemple d’automate A = (Q, q0 , F , δ) non complet sur un alphabet Σ, tel que l’automate B = (Q, q0 , Q \ F , δ) ne satisfait pas L(B) = L(A). q0 On prend Σ = {a} et A = I L(A) = {}, L(B) = ∅ 6= {} q0 Alors B = . a a q0 0 Il faut d’abord compléter A en A = . a q0 Et on obtient Ac = q1 a q1 . INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Produit d’Automates On appelera pré-automate sur Σ un triplet (Q, q0 , δ), où Q est un ensemble fini, q0 ∈ Q, et δ : Q × Σ → Q est une fonction. Définition Soient A1 = (Q1 , q01 , F1 , δ1 ) et A2 = (Q2 , q02 , F2 , δ2 ) deux automates sur Σ. Le produit de A1 et A2 , noté A1 ⊗ A2 , est le pré-automate défini par : A1 ⊗ A2 = (Q1 × Q2 , (q01 , q02 ), δ12 ) où, pour tout (q1 , q2 ) ∈ Q1 × Q2 , pour tout σ ∈ Σ, si δ1 (q1 , σ) est indéfinie indéfini indéfini si δ2 (q2 , σ) est indéfinie δ12 ((q1 , q2 ), σ) = (δ1 (q1 , σ), δ2 (q2 , σ)) sinon. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Exemple de produit b A2 b a q0 a p0 A1 b b p1 a a q1 INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Exemple de produit A2 b b a q0 q1 a a a p0 , q0 p0 p0 , q1 a A1 b b p1 b b a b p1 , q0 p1 , q1 a A1 ⊗ A2 a b INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Exemple de produit I L(A1 ) est l’ensemble des mots qui contiennent un nombre pair de b I L(A2 ) est l’ensemble des mots qui contiennent un nombre pair de a INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Exemple de produit I L(A1 ) est l’ensemble des mots qui contiennent un nombre pair de b I L(A2 ) est l’ensemble des mots qui contiennent un nombre pair de a toute exécution de A1 ⊗ A2 sur un mot w simule en parallèle l’exécution de A1 sur w , ainsi que celle de A2 . I I I I I exemple avec w = abba sur A1 , on a e1 = p0 a p0 b p1 b p0 a p0 sur A2 , on a e2 = q0 a q1 b q1 b q1 a q0 sur A1 ⊗ A2 , on a (p0 , q0 )a(p0 , q1 )b(p1 , q1 )b(p0 , q1 )a(p0 , q0 ). INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Exemple de produit I L(A1 ) est l’ensemble des mots qui contiennent un nombre pair de b I L(A2 ) est l’ensemble des mots qui contiennent un nombre pair de a toute exécution de A1 ⊗ A2 sur un mot w simule en parallèle l’exécution de A1 sur w , ainsi que celle de A2 . I I I I I I exemple avec w = abba sur A1 , on a e1 = p0 a p0 b p1 b p0 a p0 sur A2 , on a e2 = q0 a q1 b q1 b q1 a q0 sur A1 ⊗ A2 , on a (p0 , q0 )a(p0 , q1 )b(p1 , q1 )b(p0 , q1 )a(p0 , q0 ). comment définir, à partir du produit, un automate qui accepte L(A1 ) ∩ L(A2 ) ? et L(A1 ) ∪ L(A2 ) ? INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Exemple de produit I L(A1 ) est l’ensemble des mots qui contiennent un nombre pair de b I L(A2 ) est l’ensemble des mots qui contiennent un nombre pair de a toute exécution de A1 ⊗ A2 sur un mot w simule en parallèle l’exécution de A1 sur w , ainsi que celle de A2 . I I I I I exemple avec w = abba sur A1 , on a e1 = p0 a p0 b p1 b p0 a p0 sur A2 , on a e2 = q0 a q1 b q1 b q1 a q0 sur A1 ⊗ A2 , on a (p0 , q0 )a(p0 , q1 )b(p1 , q1 )b(p0 , q1 )a(p0 , q0 ). I comment définir, à partir du produit, un automate qui accepte L(A1 ) ∩ L(A2 ) ? et L(A1 ) ∪ L(A2 ) ? I pour avoir L(A1 ) ∩ L(A2 ), il suffit de prendre F∩ = F1 × F2 pour états finaux de A1 ⊗ A2 , I pour avoir L(A1 ) ∪ L(A2 ), il suffit de prendre F∪ = (F1 × Q2 ) ∪ (Q1 × F2 ) pour états finaux de A1 ⊗ A2 . INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Clôture par intersection A2 b b a q0 q1 a a a p0 p0 , q0 p0 , q1 a A1 b b p1 b b a b p1 , q0 p1 , q1 a A1 ⊗ A2 a b INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Clôture par union A2 b b a q0 q1 a a a p0 p0 , q0 p0 , q1 a A1 b b p1 b b a b p1 , q0 p1 , q1 a A1 ⊗ A2 a b INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Clôture par union et intersection Théorème Soient A1 = (Q1 , q01 , F1 , δ1 ) et A2 = (Q2 , q02 , F2 , δ2 ) deux automates. Soit A1 ⊗ A2 = (Q1 × Q2 , (q01 , q02 ), δ12 ) le pré-automate produit. I Si A1 et A2 sont complets 2 , et U = (Q1 × Q2 , (q01 , q02 ), (F1 × Q2 ) ∪ (Q1 × F2 ), δ12 ), alors L(U) = L(A1 ) ∪ L(A2 ). I Si I = (Q1 × Q2 , (q01 , q02 ), F1 × F2 δ12 ), alors L(I ) = L(A1 ) ∩ L(A2 ). La preuve est laissée en exercice. 2. sinon on les complète avant de faire le produit INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Inclusion et Equivalence I on peut se servir des résultats précédents pour définir un automate permettant de tester si deux automates définissent le même langage (équivalence) INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Inclusion et Equivalence I on peut se servir des résultats précédents pour définir un automate permettant de tester si deux automates définissent le même langage (équivalence) Définition Soient A1 et A2 deux automates sur un alphabet Σ. On dit que A1 et A2 sont équivalents si L(A1 ) = L(A2 ). INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Inclusion et Equivalence I on peut se servir des résultats précédents pour définir un automate permettant de tester si deux automates définissent le même langage (équivalence) Définition Soient A1 et A2 deux automates sur un alphabet Σ. On dit que A1 et A2 sont équivalents si L(A1 ) = L(A2 ). Théorème Etant donnés deux automates A1 et A2 , il est décidable en temps polynomial si L(A1 ) ⊆ L(A2 ), et si L(A1 ) = L(A2 ). INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Inclusion et Equivalence Idée de l’algorithme ? INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Inclusion et Equivalence Idée de l’algorithme ? L(A1 ) = L(A2 ) ssi L(A1 ) ⊆ L(A2 ) et L(A2 ) ⊆ L(A1 ). On peut donc se concentrer sur l’inclusion. Si les automates A1 et A2 ne sont pas complets, on commence par les complèter. Ensuite, on a : L(A1 ) ⊆ L(A2 ) ssi L(A1 ) ∩ L(A2 ) = ∅ INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Inclusion et Equivalence Idée de l’algorithme ? L(A1 ) = L(A2 ) ssi L(A1 ) ⊆ L(A2 ) et L(A2 ) ⊆ L(A1 ). On peut donc se concentrer sur l’inclusion. Si les automates A1 et A2 ne sont pas complets, on commence par les complèter. Ensuite, on a : L(A1 ) ⊆ L(A2 ) ssi L(A1 ) ∩ L(A2 ) = ∅ 1. construire Ac tel que L(Ac ) = L(A2 ) (temps polynomial) 2. construire I tel que L(I ) = L(A1 ) ∩ L(Ac ) avec le produit A1 ⊗ Ac (temps polynomial) 3. tester le vide de I (temps polynomial) INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Exemple INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Exemple INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Opérations Booléennes Exemple L(A1 ) ⊆ L(A2 ) ? On peut vérifier sur le produit ci-dessus que L(A1 ) ∩ L(A2 ) = ∅, donc on a bien L(A1 ) ⊆ L(A2 ). INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Minimisation I étant donné un automate A, l’objectif de la minimisation est de construire un automate complet M tel que M a un nombre d’états minimal, et M est équivalent à A. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Minimisation I étant donné un automate A, l’objectif de la minimisation est de construire un automate complet M tel que M a un nombre d’états minimal, et M est équivalent à A. [ Question ?] 1. est-ce qu’il existe un automate minimal complet unique ? 2. si oui, comment le calculer à partir de A ? INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Minimisation I étant donné un automate A, l’objectif de la minimisation est de construire un automate complet M tel que M a un nombre d’états minimal, et M est équivalent à A. [ Question ?] 1. est-ce qu’il existe un automate minimal complet unique ? 2. si oui, comment le calculer à partir de A ? Nous allons d’abord répondre à la première question, puis à la deuxième. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Exemples INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Exemples INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Relation de Myhill-Nerode Remarque Soit L ⊆ Σ∗ un langage, et u, v ∈ L deux mots de L. I I I si pour tout mot w ∈ Σ∗ , on a uw ∈ L si et seulement si vw ∈ L, alors cela veut dire que peut importe la manière de compléter u et v par un mot w , les deux extensions uw et vw seront rejetées en même temps, ou acceptées en même temps. ⇒ un automate déterministe minimale, après avoir lu u, ou v , devrait arriver dans le même état. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Relation de Myhill-Nerode Remarque Soit L ⊆ Σ∗ un langage, et u, v ∈ L deux mots de L. I I I si pour tout mot w ∈ Σ∗ , on a uw ∈ L si et seulement si vw ∈ L, alors cela veut dire que peut importe la manière de compléter u et v par un mot w , les deux extensions uw et vw seront rejetées en même temps, ou acceptées en même temps. ⇒ un automate déterministe minimale, après avoir lu u, ou v , devrait arriver dans le même état. Exemple : Avec PAIR = {w ∈ {a, b}∗ | w contient un nombre pair de a}. Soit u = ababb et v = baa. Clairement, pour tout mot w ∈ {a, b}∗ , I uw ∈ L ssi w contient un nombre pair de a (car u contient un nombre pair de a) ssi vw ∈ L (car v contient un nombre pair de a). I uw 6∈ L ssi w contient un nombre impar de a ssi vw 6∈ L. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Relation de Myhill-Nerode Définition Soit L ⊆ Σ∗ un langage, et u, v ∈ L deux mots de L. Les mots u et v sont dits équivalents pour L, noté u ≡L v , si pour tout w ∈ Σ∗ , uw ∈ L ssi vw ∈ L. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Relation de Myhill-Nerode Définition Soit L ⊆ Σ∗ un langage, et u, v ∈ L deux mots de L. Les mots u et v sont dits équivalents pour L, noté u ≡L v , si pour tout w ∈ Σ∗ , uw ∈ L ssi vw ∈ L. Exemple : les mots u = ababb et v = baa sont équivalents pour le langage PAIR. Pour ce langage, deux mots sont équivalents si et seulement si il contiennent tous les deux un nombre pair de a, ou tous les deux un nombre impair de a. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Relation de Myhill-Nerode Définition Soit L ⊆ Σ∗ un langage, et u, v ∈ L deux mots de L. Les mots u et v sont dits équivalents pour L, noté u ≡L v , si pour tout w ∈ Σ∗ , uw ∈ L ssi vw ∈ L. Exemple : les mots u = ababb et v = baa sont équivalents pour le langage PAIR. Pour ce langage, deux mots sont équivalents si et seulement si il contiennent tous les deux un nombre pair de a, ou tous les deux un nombre impair de a. Proposition La relation ≡L est une relation d’équivalence. Preuve : I symmétrie (u ≡L v ssi v ≡L u) : immédiat. I réflexivité (u ≡L u) : immédiat. I transitivité : soit u1 , u2 , u3 ∈ Σ∗ tels que u1 ≡L u2 et u2 ≡L u3 . Alors, pour tout w ∈ Σ∗ , u1 w ∈ L ssi u2 w ∈ L (car u1 ≡L u2 ), et u2 w ∈ L ssi u3 w ∈ L (car u2 ≡L u3 ), donc u1 ≡L u3 . INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Théorème de Myhill-Nerode Rappel : étant donné un mot u ∈ Σ∗ , la classe d’équivalence de u pour ≡L , notée [u]L , est l’ensemble des mots équivalents à u : ∀u ∈ Σ∗ , [u]L = {v ∈ Sigma∗ | u ≡L v }. On note Σ∗ /≡L l’ensemble quotient de Σ∗ par ≡L , i.e. l’ensemble des classes d’équivalences. Théorème Soit L ⊆ Σ∗ . Alors L est reconnaissable par un automate si et seulement si Σ∗ /≡L est un ensemble fini. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Théorème de Myhill-Nerode Rappel : étant donné un mot u ∈ Σ∗ , la classe d’équivalence de u pour ≡L , notée [u]L , est l’ensemble des mots équivalents à u : ∀u ∈ Σ∗ , [u]L = {v ∈ Sigma∗ | u ≡L v }. On note Σ∗ /≡L l’ensemble quotient de Σ∗ par ≡L , i.e. l’ensemble des classes d’équivalences. Théorème Soit L ⊆ Σ∗ . Alors L est reconnaissable par un automate si et seulement si Σ∗ /≡L est un ensemble fini. Exemple : Avec le langage PAIR, on a exactement deux classes d’équivalences : {a, b}∗ /≡PAIR = = {{, aa, aba, baa, aaaa, . . .}, {a, ab, ba, aaa, aaba, baaba, . . .}} {[]≡PAIR , [a]≡PAIR } INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Application du Théorème de Myhill-Nerode On note an = aa . . . a (n fois), avec a0 = . Prenons le langage suivant : L = {an b n | n ≥ 0} I Pour tout i 6= j ≥ 0, ai 6≡L aj . En effet, il suffit de prendre w = b i , et on a ai b i ∈ L mais aJ b i 6∈ L, car i 6= j. I Conséquence : {a, b}∗ /≡L est infini, donc L n’est reconnaissable par aucun automate. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Automate Quotient Soit L ⊆ Σ∗ un langage reconnaissable par un automate. Donc Σ∗ /≡L est un ensemble fini. Définition L’automate quotient de L est l’automate complet AL = (Q, q0 , F , δ) où I Q = Σ∗ /≡L est l’ensemble des états, I q0 = []L est l’état initial, I F = {[u]L | u ∈ L} sont les états finaux, I δ est la fonction de transition définie par δ([u]L , a) = [ua]L . INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Automate Quotient Soit L ⊆ Σ∗ un langage reconnaissable par un automate. Donc Σ∗ /≡L est un ensemble fini. Définition L’automate quotient de L est l’automate complet AL = (Q, q0 , F , δ) où I Q = Σ∗ /≡L est l’ensemble des états, I q0 = []L est l’état initial, I F = {[u]L | u ∈ L} sont les états finaux, I δ est la fonction de transition définie par δ([u]L , a) = [ua]L . Ainsi, l’automate quotient est initialisé à la classe du mot , puis, s’il lit un a, va dans la classe de a, puis s’il lit un b va dans la classe de ab, etc. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Automate Quotient Soit L ⊆ Σ∗ un langage reconnaissable par un automate. Donc Σ∗ /≡L est un ensemble fini. Définition L’automate quotient de L est l’automate complet AL = (Q, q0 , F , δ) où I Q = Σ∗ /≡L est l’ensemble des états, I q0 = []L est l’état initial, I F = {[u]L | u ∈ L} sont les états finaux, I δ est la fonction de transition définie par δ([u]L , a) = [ua]L . Ainsi, l’automate quotient est initialisé à la classe du mot , puis, s’il lit un a, va dans la classe de a, puis s’il lit un b va dans la classe de ab, etc. Il reste à démontrer que la fonction δ est bien définie, i.e. que c’est bien une fonction. Autrement dit, il faut démontrer que sa définition ne dépend pas du choix de u. Lemme Pour tout u, v ∈ Σ∗ et a ∈ Σ, on a u ≡L v =⇒ ua ≡L va. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Automate quotient Lemme Pour tout u, v ∈ Σ∗ et a ∈ Σ, on a u ≡L v =⇒ ua ≡L va. Preuve. Comme u ≡L v , on sait que pour tout w ∈ Σ∗ , uw ∈ L ssi vw ∈ L. On veut démontrer que pour tout w 0 ∈ Σ∗ , on a uaw 0 ∈ L ssi vaw 0 ∈ L. Soit un tel w 0 , alors en appliquant l’hypothèse avec w = aw 0 , on obtient ce qu’on veut. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Automate Quotient Théorème Soit L ⊆ Σ∗ . L’automate quotient AL est le plus petit automate complet (en nombre d’états) qui reconnaı̂t L, et il est unique (modulo renommage des états). INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Exemples d’automates quotients I Avec L = PAIR, on avait exactement deux classes, []L et [a]L . On peut vérifier que [b]L = []L , donc δ([]L , b) = []L . On a aussi δ([]L , a) = [a]L . On a [ab]L = [a]L , donc δ([a]L , b) = [a]L . Enfin δ([a]L , a) = []L . Finalement, []L ∈ F car ∈ L, et [a]L 6∈ F car a 6∈ L. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Exemples d’automates quotients I Avec L = PAIR, on avait exactement deux classes, []L et [a]L . On peut vérifier que [b]L = []L , donc δ([]L , b) = []L . On a aussi δ([]L , a) = [a]L . On a [ab]L = [a]L , donc δ([a]L , b) = [a]L . Enfin δ([a]L , a) = []L . Finalement, []L ∈ F car ∈ L, et [a]L 6∈ F car a 6∈ L. I Avec L = {a, b}∗ , on a u ≡L v pour tout u, v ∈ Σ∗ . Donc l’automate minimal complet n’a qu’un seul état : INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Idée sur la preuve du théorème I Pourquoi l’automate quotient pour ≡L est minimal ? Supposons qu’il y ait un automate complet B avec strictement moins d’états que AL qui reconnaı̂t L. Nécessairement, il existe deux mots u et v tels que u 6≡L v tels que B les envoie dans le même état q. Comme u 6≡L v , il existe aussi un mot w tel que uw ∈ L et vw 6∈ L, ou uw 6∈ L et vw ∈ L. Prenons le premier cas (l’autre état symétrique). On a alors uw ∈ L(B), donc à partir de l’état q, il existe une exécution de B sur w qui va dans un état accepteur. Mais alors, comme B envoie u et v dans le même état q, le mot vw est aussi accepté par B, donc L(B) 6= L. Contradiction. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Calcul de l’automate minimal à partir d’un automate I I ce qu’on a vu précédemment ne donne pas un moyen effectif de calculer l’automate complet minimal pour un langage nous allons définir une procédure qui, étant donné un automate complet A, construite l’automate minimal qui accepte L(A) INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Calcul de l’automate minimal à partir d’un automate I I ce qu’on a vu précédemment ne donne pas un moyen effectif de calculer l’automate complet minimal pour un langage nous allons définir une procédure qui, étant donné un automate complet A, construite l’automate minimal qui accepte L(A) Définition Soit A = (Q, q0 , F , δ) un automate complet sur un alphabet Σ. Pour tout mot u ∈ Σ∗ , pour tout état q ∈ Q, on note : I q · u l’état atteint par A après lecture de u à partir de q (il existe car A est complet) I Lq le langage formé des mots u tels que q · u ∈ F , i.e. Lq = {u ∈ Σ∗ | q · u ∈ F } est le langage des mots acceptés à partir de q. I pour tout p, q ∈ Q, p ≡A q si Lp = Lq . INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Calcul de l’automate minimal à partir d’un automate I I ce qu’on a vu précédemment ne donne pas un moyen effectif de calculer l’automate complet minimal pour un langage nous allons définir une procédure qui, étant donné un automate complet A, construite l’automate minimal qui accepte L(A) Définition Soit A = (Q, q0 , F , δ) un automate complet sur un alphabet Σ. Pour tout mot u ∈ Σ∗ , pour tout état q ∈ Q, on note : I q · u l’état atteint par A après lecture de u à partir de q (il existe car A est complet) I Lq le langage formé des mots u tels que q · u ∈ F , i.e. Lq = {u ∈ Σ∗ | q · u ∈ F } est le langage des mots acceptés à partir de q. I pour tout p, q ∈ Q, p ≡A q si Lp = Lq . Remarques : Lq0 = INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Calcul de l’automate minimal à partir d’un automate I I ce qu’on a vu précédemment ne donne pas un moyen effectif de calculer l’automate complet minimal pour un langage nous allons définir une procédure qui, étant donné un automate complet A, construite l’automate minimal qui accepte L(A) Définition Soit A = (Q, q0 , F , δ) un automate complet sur un alphabet Σ. Pour tout mot u ∈ Σ∗ , pour tout état q ∈ Q, on note : I q · u l’état atteint par A après lecture de u à partir de q (il existe car A est complet) I Lq le langage formé des mots u tels que q · u ∈ F , i.e. Lq = {u ∈ Σ∗ | q · u ∈ F } est le langage des mots acceptés à partir de q. I pour tout p, q ∈ Q, p ≡A q si Lp = Lq . Remarques : Lq0 = L, INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Calcul de l’automate minimal à partir d’un automate I I ce qu’on a vu précédemment ne donne pas un moyen effectif de calculer l’automate complet minimal pour un langage nous allons définir une procédure qui, étant donné un automate complet A, construite l’automate minimal qui accepte L(A) Définition Soit A = (Q, q0 , F , δ) un automate complet sur un alphabet Σ. Pour tout mot u ∈ Σ∗ , pour tout état q ∈ Q, on note : I q · u l’état atteint par A après lecture de u à partir de q (il existe car A est complet) I Lq le langage formé des mots u tels que q · u ∈ F , i.e. Lq = {u ∈ Σ∗ | q · u ∈ F } est le langage des mots acceptés à partir de q. I pour tout p, q ∈ Q, p ≡A q si Lp = Lq . Remarques : Lq0 = L, ∈ Lq pour tout q ∈ F . INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Calcul de l’automate minimal à partir d’un automate I I ce qu’on a vu précédemment ne donne pas un moyen effectif de calculer l’automate complet minimal pour un langage nous allons définir une procédure qui, étant donné un automate complet A, construite l’automate minimal qui accepte L(A) Définition Soit A = (Q, q0 , F , δ) un automate complet sur un alphabet Σ. Pour tout mot u ∈ Σ∗ , pour tout état q ∈ Q, on note : I q · u l’état atteint par A après lecture de u à partir de q (il existe car A est complet) I Lq le langage formé des mots u tels que q · u ∈ F , i.e. Lq = {u ∈ Σ∗ | q · u ∈ F } est le langage des mots acceptés à partir de q. I pour tout p, q ∈ Q, p ≡A q si Lp = Lq . Remarques : Lq0 = L, ∈ Lq pour tout q ∈ F . Pensez-vous que ≡A est une relation d’équivalence ? INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Calcul de l’automate minimal à partir d’un automate I I ce qu’on a vu précédemment ne donne pas un moyen effectif de calculer l’automate complet minimal pour un langage nous allons définir une procédure qui, étant donné un automate complet A, construite l’automate minimal qui accepte L(A) Définition Soit A = (Q, q0 , F , δ) un automate complet sur un alphabet Σ. Pour tout mot u ∈ Σ∗ , pour tout état q ∈ Q, on note : I q · u l’état atteint par A après lecture de u à partir de q (il existe car A est complet) I Lq le langage formé des mots u tels que q · u ∈ F , i.e. Lq = {u ∈ Σ∗ | q · u ∈ F } est le langage des mots acceptés à partir de q. I pour tout p, q ∈ Q, p ≡A q si Lp = Lq . Remarques : Lq0 = L, ∈ Lq pour tout q ∈ F . Pensez-vous que ≡A est une relation d’équivalence ? oui. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Equivalence entre états, et équivalence entre mots Proposition Soit A un automate complet. Alors pour tout u, v ∈ Σ∗ , u ≡L(A) v ssi q0 · u ≡A q0 · v . INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Equivalence entre états, et équivalence entre mots Proposition Soit A un automate complet. Alors pour tout u, v ∈ Σ∗ , u ≡L(A) v ssi q0 · u ≡A q0 · v . Preuve I supposons que u ≡L(A) v , alors soit p = q0 · u et q = q0 · v . On veut démontrer que p ≡A q, i.e. Lp = Lq . Soit w ∈ Lp . On a donc uw ∈ L, donc par hypothèse, vw ∈ L, donc w ∈ Lq . La réciproque est symétrique. I supposons que p = q0 · u ≡A q0 · v = q. Alors Lp = Lq . On veut démontrer que u ≡L(A) v . Soit w ∈ Σ∗ tel que uw ∈ L(A), alors w ∈ Lp , donc w ∈ Lq , donc vw ∈ L(A). La réciproque est symétrique. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Equivalence entre états, et équivalence entre mots Proposition Soit A un automate complet. Alors pour tout u, v ∈ Σ∗ , u ≡L(A) v ssi q0 · u ≡A q0 · v . Cette proposition suggère qu’il existe une bijection φ de Σ∗ /≡L(A) vers Q/≡A . En effet, et elle est donnée par φ([u]L(A) ) = [q0 · u]≡A , où [q0 · u]≡A est la classe de l’état q0 · u. =⇒ les états de l’automate minimal sont les classes d’équivalence, pour ≡A de Q. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Calcul de l’automate minimal à partir d’un automate I il suffit de calculer les classes d’équivalences de Q pour ≡A , ce qui donnera les états I la classe de q0 est l’état initial I toute classe qui contient un état final est finale (en fait, si une classe contient un état final, alors tous ces états sont finaux) I on met une transition de l’état [q]≡A à l’état [q · a]≡A en lisant a, pour tout a ∈ Σ, et tout q ∈ Q. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Calcul de l’automate minimal à partir d’un automate I il suffit de calculer les classes d’équivalences de Q pour ≡A , ce qui donnera les états I la classe de q0 est l’état initial I toute classe qui contient un état final est finale (en fait, si une classe contient un état final, alors tous ces états sont finaux) I on met une transition de l’état [q]≡A à l’état [q · a]≡A en lisant a, pour tout a ∈ Σ, et tout q ∈ Q. La fonction de transition est-elle bien définie ? Autrement dit, est-elle indépendante du choix du représentant dans la classe ? INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Calcul de l’automate minimal à partir d’un automate I il suffit de calculer les classes d’équivalences de Q pour ≡A , ce qui donnera les états I la classe de q0 est l’état initial I toute classe qui contient un état final est finale (en fait, si une classe contient un état final, alors tous ces états sont finaux) I on met une transition de l’état [q]≡A à l’état [q · a]≡A en lisant a, pour tout a ∈ Σ, et tout q ∈ Q. La fonction de transition est-elle bien définie ? Autrement dit, est-elle indépendante du choix du représentant dans la classe ? oui Proposition Si p ≡A q, alors p · a ≡A q · a pour tout a ∈ Σ. Preuve : Si p ≡A q, alors Lp = Lq par définition. Soit a ∈ Σ. Soit p 0 = p · a et q 0 = q · a. Soit w ∈ Lp0 , alors aw ∈ Lp , donc aw ∈ Lq , donc w ∈ Lq0 . La réciproque est symétrique. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Exemples de calcul de l’automate minimal à partir d’un automate INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Exemples de calcul de l’automate minimal à partir d’un automate INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Exemples de calcul de l’automate minimal à partir d’un automate INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Exemples de calcul de l’automate minimal à partir d’un automate INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Exemples de calcul de l’automate minimal à partir d’un automate INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation Exemples de calcul de l’automate minimal à partir d’un automate INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Minimisation En pratique ... I pour décider si p ≡A q, on peut tester l’équivalence de l’automate A où on remplace l’état initial par p, et de l’automate A où on remplace l’état initial par q ; I en pratique ce n’est pas très efficace, et on peut faire mieux, sans passer par le test d’équivalence, et par raffinement successif de relations d’équivalence qui convergent vers ≡A . Cela est même possible en O(n.log2 n) où n est le nombre d’états de l’automate. I cette dernière méthode, non abordée dans le cours, donne aussi une autre façon de tester l’équivalence de deux automates A et B : construire l’automate minimal pour L(A), l’automate minimal pour L(B), et tester qu’ils sont égaux (à renommage des états près). INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Expressions Rationnelles Définition Une expression rationnelle E sur un alphabet Σ est une expression qui respecte la grammaire suivante : E ::= | a | ∅ | (E + E ) | (E .E ) | E ∗ pour tout a ∈ Σ. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Expressions Rationnelles Définition Une expression rationnelle E sur un alphabet Σ est une expression qui respecte la grammaire suivante : E ::= | a | ∅ | (E + E ) | (E .E ) | E ∗ pour tout a ∈ Σ. Exemple : ((a + b)∗ .a) INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Autres opérations sur les langages Afin de donner une sémantique en terme de langage aux expressions rationnelles, nous définissons des nouvelles opérations : Définition Soient L, L1 , L2 ⊆ Σ∗ trois langages. Alors I L1 .L2 = {u1 u2 | u1 ∈ L1 ∧ u2 ∈ L2 } (on écrira aussi L1 L2 ) I L∗ = {u n | u ∈ L ∧ n ≥ 0} (en particulier ∈ L∗ si L 6= ∅) INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Autres opérations sur les langages Afin de donner une sémantique en terme de langage aux expressions rationnelles, nous définissons des nouvelles opérations : Définition Soient L, L1 , L2 ⊆ Σ∗ trois langages. Alors I L1 .L2 = {u1 u2 | u1 ∈ L1 ∧ u2 ∈ L2 } (on écrira aussi L1 L2 ) I L∗ = {u n | u ∈ L ∧ n ≥ 0} (en particulier ∈ L∗ si L 6= ∅) Exemples : Si L1 = PAIR, alors L1 L1 = L1 . Si L1 = {a, b} et L2 = {a, bb}, alors L1 L2 = {aa, abb, ba, bbb}. Si L = {a}, alors L∗ = {an | n ≥ 0}. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Sémantique des expressions rationnelles Définition La sémantique d’une expression rationnelle E sur Σ est donnée par un langage, noté L(E ), défini inductivement par : I L() = {}, I L(a) = {a} pour tout a ∈ Σ, I L(∅) = ∅, I L((E1 + E2 )) = L(E1 ) ∪ L(E2 ), I L((E1 .E2 )) = L(E1 ).L(E2 ), I L(E ∗ ) = L(E )∗ . INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Sémantique des expressions rationnelles Définition La sémantique d’une expression rationnelle E sur Σ est donnée par un langage, noté L(E ), défini inductivement par : I L() = {}, I L(a) = {a} pour tout a ∈ Σ, I L(∅) = ∅, I L((E1 + E2 )) = L(E1 ) ∪ L(E2 ), I L((E1 .E2 )) = L(E1 ).L(E2 ), I L(E ∗ ) = L(E )∗ . On pourra omettre les parenthèses dans les expressions régulières lorsque cela est possible. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Exemples Sur Σ = {a, b}. I L((a + b)∗ a(a + b)∗ ) est INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Exemples Sur Σ = {a, b}. I L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au moins un a, INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Exemples Sur Σ = {a, b}. I L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au moins un a, I L((b ∗ ab ∗ ab ∗ )∗ ) = INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Exemples Sur Σ = {a, b}. I L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au moins un a, I L((b ∗ ab ∗ ab ∗ )∗ ) = PAIR, INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Exemples Sur Σ = {a, b}. I L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au moins un a, I L((b ∗ ab ∗ ab ∗ )∗ ) = PAIR, I L(aa∗ ) est INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Exemples Sur Σ = {a, b}. I L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au moins un a, I L((b ∗ ab ∗ ab ∗ )∗ ) = PAIR, I L(aa∗ ) est l’ensemble des mots qui ne contiennent que des a, et au moins un INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Exemples Sur Σ = {a, b}. I L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au moins un a, I L((b ∗ ab ∗ ab ∗ )∗ ) = PAIR, I L(aa∗ ) est l’ensemble des mots qui ne contiennent que des a, et au moins un I L(a∗ b ∗ ) est INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Exemples Sur Σ = {a, b}. I L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au moins un a, I L((b ∗ ab ∗ ab ∗ )∗ ) = PAIR, I L(aa∗ ) est l’ensemble des mots qui ne contiennent que des a, et au moins un I L(a∗ b ∗ ) est l’ensemble des mots qui sont des séquences de a suivies des séquences de b. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Exemples Sur Σ = {a, b}. I L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au moins un a, I L((b ∗ ab ∗ ab ∗ )∗ ) = PAIR, I L(aa∗ ) est l’ensemble des mots qui ne contiennent que des a, et au moins un I L(a∗ b ∗ ) est l’ensemble des mots qui sont des séquences de a suivies des séquences de b. INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Théorème dit de Kleene Théorème La classe des langages définissables par automates, et la classe des langages définissables par expressions rationnelles, sont les mêmes. Autrement dit, si L ⊆ Σ∗ est un langage, alors il existe un automate A tel que L = L(A) ssi il existe une expression rationnelle E telle que L = L(E ). INFO-F-302, Cours d’Informatique Fondamentale Définitions et Exemples Expressions Rationnelles Théorème dit de Kleene Théorème La classe des langages définissables par automates, et la classe des langages définissables par expressions rationnelles, sont les mêmes. Autrement dit, si L ⊆ Σ∗ est un langage, alors il existe un automate A tel que L = L(A) ssi il existe une expression rationnelle E telle que L = L(E ). Ce théorème est effectif : il existe un algorithme qui transforme tout automate en expression rationnelle, et un algorithme qui transforme toute expression rationnelle en automate (ce qui donne d’ailleurs un algorithme pour étant donné un mot décide si ce dernier est dans le langage de l’expression rationnelle).