Automate à états finis Faculté I&C, André Maurer, Claude Petitpierre
Exemple introductif: reconnaître un numéro de plaque Numéros valides Numéros non valides
Un problème de décision Un mot OUI, si le mot appartient au langage NON, si le mot n appartient pas au langage Exemples (numéros de plaques) VD 1 OUI V33 NON VD 01 NON VD 1234 OUI
Un mot OUI / NON Automate à états finis Exemples d automate à états finis (numéros de plaques)
Un premier automate Un automate pour reconnaître le mot VD
Caractéristiques d un automate à états finis Un automate est constitué des éléments suivants: Un ensemble fini d états: Q={q0;q1;q2} Un alphabet (un ensemble de symboles) Σ={V;D} Un ensemble de transitions: T={(q0,V,q1);(q1,D,q2)} Un état initial: q0 Un ensemble d états terminaux (accepteurs): F={q2}
Reconnaissance d un mot Pour reconnaître un mot: 1. Se placer dans l état initial avec le mot en entrée 2. Regarder si le premier symbole du mot correspond à une transition partant de l état courant Si c est le cas passer dans l état d arrivée de la transition supprimer le premier symbole du mot revenir en (2) Le mot est reconnu par l automate si: Tous les symboles ont été analysés ET L automate termine dans un état final Mot en entrée: VD État initial: q0 Le symbole courant est V, l état courant est q0, Il existe une transition (q0,v,q1) On se place en q1 On supprime V Le mot VD est reconnu par le langage, car tous les symboles ont été analysés q2 est un état final
Mot Reconnaissance d un mot (suite) Reconnu par l automate ci-dessous Raison V non q1 n est pas un état terminal VDD non Tous les symboles n ont pas été analysés AVD non q0 n est pas un état terminal et toutes les symboles n ont pas été analysés
Exercice Pour l automate suivant, indiquer L ensemble des états: L alphabet (un alphabet possible): L ensemble des transitions: L état initial: L ensemble d états terminaux (accepteurs): Quel est le langage reconnu par cet automate?
Exercice (correction) Pour l automate suivant, indiquer L ensemble des états: Q={q0;q1} L alphabet (un alphabet possible): Σ={a;b} L ensemble des transitions: T={(q0,a,q1);(q1,b,q1)} L état initial: q0 L ensemble d états terminaux (accepteurs): F={q1} Le langage reconnu: {a,ab,abb,abbb, } Il s agit de l ensemble des mots commençant par a et se terminant par un nombre arbitraire de b
Remarque le nombre d états doit être fini, L alphabet (nombre de symboles) doit être fini il est cependant possible de reconnaître il est cependant possible de reconnaître des langages infinis (nombre infini de mots).
Exercice 2 Construire un automate qui reconnaisse le langage composé d un seul mot: le mot abc
Exercice 3 Construire un automate qui reconnaisse le langage composé des mots ab et ac Version 1 Version 2
Exercice 4: Numéro de plaques Construire un automate qui reconnaît le langage suivant: l ensemble des numéros de plaques du canton de Vaud
Exercice 4: Numéro de plaques Indications concernant ce langage: tous les mots commencent par les lettres VD suivies éventuellement un espace ou un point suivi d un chiffre de 1 à 9 suivi éventuellement de 1 à 5 chiffres de 0 à 9
Exercice 4 (solution) Faculté I&C, André Maurer, Claude Petitpierre
Exercice Quel est le langage, sur l alphabet {a;b} reconnu par cet automate? L={aa,aaa,baa,aaaa,abaa,baaa,bbaa, aaaaa,aabaa,abaaa, }
Différence? Quelle est la différence importante entre ces 2 automates? Automate à états finis déterministes Automate à états finis non déterministes
Automate non déterministe Si le mot en entrée est abaa, deux possibilités existent: q0 q1 q0 q0 q0 q1 q2
Automate non déterministe Pour la séquence d états q0 q0 q0 q1 q2 tous les symboles du mot abaa sont analysés q2 est un état terminal L automate ci-dessous accepte donc le mot abaa
La transition vide (ε) Un automate qui reconnaît le langage composé des mots ab et ba Les états d arrivée de la transition vide (ε) sont atteints sans consommer de symboles. Question: cet automate est-il déterministe?
Rendre un automate déterministe
Rendre un automate déterministe
Automate déterministe Faculté I&C, André Maurer, Claude Petitpierre
Récapitulation: alphabet Un alphabet est ensemble fini non vide de symboles
Récapitulation: un mot Un mot sur un alphabet Σ est une séquence de longueur finie de symboles de Σ λ est le mot vide exemples: aaab est un mot sur Σ={a,b} aabacb est un mot sur Σ={a,b,c} a est un mot sur Σ={a,b}
Récapitulation: un langage Un ensemble de mots sur un alphabet est un langage Exemples L={aa,ab,b} sur Σ={a,b} L={ab,cd} sur Σ={a,b,c,d} L={a} sur Σ={a} L= L={x {0,1}* le nombre représenté par x est pair}
Palindrome Un palindrome est un mot qui peut être lu dans les deux sens: Radar Rotor Kayak «Elu par cette crapule»
Palindrome sur Σ={a,b} L'ensemble des palindromes sur Σ={a,b} est un langage: L={a,b,aa,bb,aba,bab,aaa,bbb,aaaa,baab, abba, } Exercice: écrire un automate qui reconnaisse ce langage
Exercice (correction) Il n est pas possible de construire un automate qui reconnaisse ce langage!! Car l ensemble des palindromes sur Σ={a,b} n est pas un langage régulier
Autre exemple L'ensemble des mots qui contiennent autant de a que de b: L={λ,ab,ba,aabb,abab,bbaa,abba,...} Il n est pas non plus possible de construire un automate qui reconnaisse ce langage. Ce langage n est pas régulier
Caractéristiques d un langage régulier
Un langage élémentaire Un langage élémentaire est un langage composé d un seul mot d un seul symbole Exemples sur Σ={a,b,c}: R={a} R={b} R={c} Un langage élémentaire est un langage régulier
L union de 2 langages Les langages sont des ensembles (de mots). On peut faire l union de deux langages Exemples: R 1 ={a}, R 2 ={b} R 3 =R 1 R 2 ={a,b} R 1 ={ab,b}, R 2 ={a,bc} R 3 =R 1 R 2 ={ab,b,bc} L union de deux langages réguliers est un langage régulier Remarque: dans exorciser: R 1 R 2 est noté R 1 R 2
La fermeture de Kleene R={a} R*={λ,a,aa,aaa,aaaa,aaaaa, } R={ab} R*={λ,ab,abab,ababab, } R={ab,b} R*={λ,ab,b,abab,abb,bb,ababab, babb,abbb, } La fermeture de Kleen d un langage régulier est un langage régulier
Langage régulier (résumé) Un langage régulier, c est Un langage élémentaire: R={a} L union de deux langages réguliers: R 1 ={a}, R 2 ={b} R 3 =R 1 R 2 ={a,b} Le produit de deux langages réguliers R 1 ={a}, R 2 ={b} R 3 =R 1 R 2 ={ab} La fermeture de Kleene d un langage régulier R={a}, R*={λ,a,aa,aaa,aaaa, }
R=a* Exemples de langages réguliers R={λ,a,aa,aaa,aaaa} R=(a b)* R={λ,a,b,aa,bb,ab,aab,abb,bbb,aaa, } R={ab b}* R={λ,ab,b,abb,abab, } R=(ab*a b)* {λ,b,aba,abba,abbab, )
Comment construire un automate qui reconnaisse un langage régulier?
Langage élémentaire R 1 ={a}
R 1 ={a} R 2 ={b} Le produit de 2 langages R 3 =R 1 R 2
Union R 4 =ab b
Fermeture de Kleene R=(abc)*={λ,abc,abc,abcabc,abcabcabc, } R=abc R=abc*
Exercice R=(ab b) R=(ab b)*