Automates à états et langages Notion d’automate Langage reconnu par un automate Automates non déterministes Expressions régulières et automates Limites des automates Notion d’automate Objectif : définir formellement (modéliser) un mécanisme qui peut prendre une décision. Quel type de décision ? entrée : une séquence de symboles sortie (réponse) : ”oui” ou ”non” (acceptation ou rejet) Idée du fonctionnement L’automate possède des états Il ”lit” les symboles un à un (à partir de la gauche) La lecture d’un symbole * fait passer l’automate dans un autre état * en fonction d’une ”table” On regarde l’état atteint après lecture de tous les symboles Un automate à états fini symboles : b, o états : q1, q2, q3, q4 états finals : q3 état initial : q1 d(b, q1) = q2, d(b, q2) = q3 d(b, q3) = q4, d(b, q4) = q4 d(o, q1) = q4, d(o, q2) = q2 d(o, q3) = q4, d(o, q4) = q4 1 Automate - définition Un AF est composé de 1. un alphabet de symboles reconnus A = s1, s2, ..., sn 2. un ensemble d’états Q = q1, q2, ..., qm (les ronds) 3. un état initial appartenant à Q 4. un ensemble F d’états finals inclus dans Q 5. une fonction de transition d de Q x A dans Q (les flèches) Analyse d’une chaı̂ne Analyse d’une chaı̂ne 2 Analyse d’une chaı̂ne Analyse d’une chaı̂ne 3 Analyse d’une chaı̂ne Analyse d’une chaı̂ne 4 Analyse d’une chaı̂ne Acceptation d’une chaı̂ne Le traitement d’une chaine de symbole u = [t1 t2 ...tk ] par un automate consiste à faire e := état initial ; répéter pour i allant de 1 à k { e := d(e, ti ) } ; si e appartient à F accepter u sinon rejeter u 5 Définition formelle de l’acceptation Une chaine X = x0 x1 . . . xn est acceptée si et seulement si il existe une séquence d’états r0 , r1 , . . . , rn telle que : 1. r0 est l’état initial 2. ri+1 = d(ri , xi ), pour i = 0, . . . n − 1 3. rn ∈ F (l’ensemble des états finals) Langage accepté par un automate Un vocabulaire A est un ensemble de symboles (p.ex. des lettres ou des chiffres ou des noms ou ...) Une chaı̂ne sur A est une suite finie de symboles de A On note A∗ l’ensemble (en général infini) de toutes les chaı̂nes possibles sur A Un langage sur le vocabulaire A est un sous-ensemble de A∗ Le langage L(M ) accepté par un automate M est l’ensemble des chaı̂nes acceptées par M Exemple Langage accepté L(M ) = a, aba, ababa, abababa, . . . Exemple - 2 6 Langage accepté L(M) = ? Langage régulier On dit qu’un langage L est régulier s’il existe un automate M tel que L = L(M ), c-à-d un automate qui accepte les chaines de L et seulement celles-ci. Exemles / exercices Les langages suivants sont réguliers : 1. les chaines sur {a, b} qui commencent par aa et se terminent par bb ; 2. les chaines sur {a, b} qui se terminent par baba ; 3. les chaines sur {a, b} qui se terminent par bbab ; 4. les chaines sur{a} qui ont au plus 5 symboles ; 5. les chaines sur {a, b, c} où chaque c est précédé de deux a ; 6. les chaines sur {0, 1} qui, interprétées comme des nombres en base 2, sont des multiples de 5 ; 7. les chaines formées de 6k + 1fois le symbole a (k entier positif quelconque). Automates non déterministes 1) La fonction de transition est multivaluée , pour un état e et un symbole s il peut y avoir plusieurs états successeurs : d(e, s) = {e1 , e2 , . . . , en } 2) L’automate peut avoir des transitions qui mènent d’un état à un autre sans consommer un seul symbole. Par conséquent : Il y a plusieurs manière d’analyser une chaine, Si l’une d’elles conduit à un état final, la chaine est acceptée. 7 Exemple Fonctionnement d’un AFND Une description instantannée d’un automate est une paire (<état>, <chaine restant à analyser>) On définit ensuite la transition d’une description à une autre par les règles suivantes : (e, ax) → (f, x) si f ∈ d(e, a) (e, x) → (f, x) si f ∈ d(e, ) Acceptation dans un AFND Une chaine w est acceptée s’il existe une séquence de descriptions s0 = (q0 , w) → s1 → s2 . . . → sf = (qf , <vide>) où qf est un état final. Autrement dit : s’il y a un moyen d’atteindre un état final en lisant toute la chaı̂ne d’entrée. Exemple Automate non déterministe pour reconnaı̂tre les chaı̂nes de a et b se terminant par bbab 8 Exemple : acceptation de babbab s0 = (q1, babbab) → (q1, abbab) → (q1, bbab) → (q2, bab) → (q3, ab)| − (q4, b) → (q5, <vide>) accepte Les non déterministes ne sont pas si forts On peut toujours trouver un AFD équivalent à un AFND donné Exemple Construction d’un AFD équivalent à un AFND (I) 1. Construire un automate non déterministe sans transitions a) Ajouter des transitions pour remplacer toutes les chaines de b) Rendre final tout état qui atteint un final par des c) Eliminer les transitions d) Eliminer les états atteignable uniquement par des transitions Exemple 9 Construction (II) Etats Les états de l’automate déterministe sont des ensembles d’états de l’automate non déterministe. Si l’ensemble contient un état final il est lui-même final. Transitions S = s1 , . . . , sk un état de l’AD a un symbole d(S, a) = l’ensemble des états de l’AFND atteignable avec le symbole a depuis l’un des si Exemple 10