Vous êtes sur la page 1sur 74

Automates

Lyce Louis-le-Grand e Anne 20032004 e

Automates
option informatique

1/74

Automates

1 Sommaire
notion dautomate, leur intrt et leurs usages ; ee calculs dun automate et langage reconnu ; dterminisme, comment sen dispenser, et comment sen assurer ; e langages reconnaissables ; leurs proprits de stabilit ; ee e langages rationnels ; le thor`me de Kleene et le lemme de pompage ; e e expressions rguli`res ; e e le probl`me de la minimisation e

2/74

Automates

2 Alphabet et mots
Un alphabet est un ensemble ni non vide A dont les lments sont appels ee e e des caract`res. Un mot sur A est soit le mot vide, not , soit un mot de taille p : e m = m1 m2 . . . mp o` chaque mi est un caract`re. u e On note la longueur (on dit aussi la taille) dun mot ainsi : 0 = ||, p = |m1 . . . mp |.

e e La concatnation de deux mots est note par un point. Si |m| = p et |m | = q, |m.m | = p + q et le i-`me caract`re de m.m est e e mi , si i p; mip , si p + 1

p + q.

3/74

Automates

3 Notations
Lensemble des mots de longueur p se note Ap . Ap . Lensemble de tous les mots est A = {}
pN

(A , .) est un mono (cest le mono libre sur A), dont llment neutre de de ee est le mot . La loi est videmment non commutative mais associative. e Le mot abbaaabcc peut tre naturellement not ab2 a3 bc2 . e e e Le miroir dun mot m est not m. Par exemple : miroir = riorim.

4/74

Automates

4 Langages
A est suppos choisi une fois pour toutes.) e Un langage L est simplement un ensemble (ni ou non) de mots : lensemble de tous les langages est donc P(A ). On dispose donc des oprateurs ensemblistes habituels , , , \ et des e relations dinclusion entre langages. On pourra de la mme facon parler du complment dun langage L : il sagit e e de A \ L.
(Lalphabet

5/74

Automates

5 Oprations sur les langages e


En outre si L et L sont deux langages, leur concatn est e e L.L = {m.m , m L, m L } L.L est not L2 , et ainsi de suite. e Nota Bene Ne pas confondre L2 et {m.m, m L}. Lp .
pN

Ltoile dun langage L est le langage L = {} e On peut dnir bien dautres oprations, par exemple e e
2

L = {m A , m.m L}.

(A-t-on L = L ? et L2 = L ?) Ou encore le mlange (shue) de deux langages L et M : pour crire un e e mot de L M , on choisit un mot a de L et un mot b de M , puis on mlange e les lettres, en conservant toutefois lordre relatif dans chacun des mots a et b. Par exemple : bacddadb est dans {a, b} (c.{d} ), mais pas bacddacb.
6/74

Automates

6 Automates nis dterministes e


Un afd sur lalphabet A est un quadruplet = (Q, q0 , F, ) o` : u e Q est un ensemble ni, ses lments sont les tats de lautomate ; ee q0 Q est ltat initial ; e e F Q est lensemble des tats nals ; est une fonction (pas une application) de Q A dans Q, appele e fonction de transition de lautomate.

Si (q, c) = q on dit que lautomate passe de ltat q ` ltat q ` la lecture e a e a du caract`re c. On note galement : q.c = q . e e

7/74

Automates

Exemple = ({q0, q1, q2}, q0, {q2}, ) avec :


q c (q, c) q0 a q1 q1 a q1 q2 a q1

b q0

b q2

b q0

b q0 a q1 a q2

8/74

Automates

7 Calculs dun automate


Soit = (Q, q0 , F, ) un afd. On gnralise la notation q.c = (q, c) en posant e e q Q, q. = q q Q, c A, u A , q.(u.c) = (q.u).c ce qui fait agir A sur Q. Nota Bene Ces notations ne sont pas forcment partout dnies. On e e parle alors de blocage de lafd sur une certaine transition.

Certains auteurs utilisent la notation (q, u) au lieu de q.u.

9/74

Automates

Programmation Un typage possible des afd


On se contente de numroter les tats. e e
type afd = { initial : int ; finals : int list ; transitions : (char * int) list vect } ;; exception Blocage ;;

Les transitions sont gres par une liste associative. ee

10/74

Automates

Calculs de lafd
let calcul alpha q u = let n = string_length u in let rec avance q i = if i = n then q else avance (assoc u.[i] alpha.transitions.(q)) (i + 1) in try avance q 0 with Not_found -> raise Blocage ;;

11/74

Automates

Reconnaissance
let reconna^t alpha u = mem (calcul alpha alpha.initial u) alpha.finals ;;

Rappel (fonctions de la biblioth`que Caml) e


let rec mem x = function | [] -> false | t :: q -> t = x || mem x q ;; let rec assoc x = function | [] -> raise Not_found | (a,b) :: _ when a = x -> b | _ :: q -> assoc x q ;;

12/74

Automates

8 Langage reconnu
Le langage reconnu par lafd = (Q, q0 , F, ) est dni par : e L() = {u A , q0 .u F }. Autrement dit, u est un mot reconnu sil fait passer lautomate de son tat e initial ` un tat nal. a e Un langage est dit reconnaissable sil existe un afd dont il est le langage.

13/74

Automates

9 Accessibilit e
Un tat q est dit accessible sil existe un mot u tel que q0 .u = q. Lautomate e est dit accessible si tous ses tats sont accessibles. e e Un tat q est dit co-accessible sil existe un mot u et un tat nal qf tel e que q.u = qf F . Lautomate est dit co-accessible si tous ses tats sont e co-accessibles. Certains nomment utiles les tats ` la fois accessibles et co-accessibles. e a Emonder un automate, cest supprimer tous les tats inutiles. e Thor`me e e Pour tout afd tel que L() = , il existe un afd mond qui reconna e e t le mme langage. e

14/74

Automates

10 Elimination des tats non utiles e


Soit = (Q, q0 , F, ) un afd tel que L() = . Notons U lensemble de ses tats utiles : U nest pas vide, car il existe au moins e un mot u = u1 . . . up dans L() qui, depuis ltat q0 fait passer e dans des tats successifs qi = q0 .(u1 . . . ui ). Comme u L(), cest e que qp F , et alors tous les qi sont des tats utiles. (Remarque : e cela reste vrai si L() est rduit ` {}.) En particulier : q0 U et e a F U = . Soit alors = (U, q0 , F U, ) o` (q, c) = (q, c) si q U et u (q, c) U , et nest pas dni dans le cas contraire. e Linclusion L( ) L() est ` peu pr`s vidente : tout calcul de a e e est en eet un calcul de . Rciproquement, on a vu quun calcul russi de ne passe que par e e des tats utiles, donc est encore un calcul (russi) de . e e

15/74

Automates

11 Exercice de programmation
Ecrire les fonctions suivantes :
accessibles : afd -> int list co_accessibles : afd -> int list

et tenter dvaluer leurs complexits. e e

16/74

Automates let rec subtract l m = match l with | [] -> [] | t :: q -> if mem t m then subtract q m else t :: (subtract q m) ;; let accessibles alpha = let rec progresse trouvs = function e | [] -> trouvs e | t :: q -> let d = map snd alpha.transitions.(t) in let d = subtract d trouvs e in progresse (d @ trouvs) (d @ q) e in progresse [ alpha.initial ] [ alpha.initial ] ;;

17/74

Automates

12 Compltude dun afd e


Un afd est dit complet si sa fonction de transition est dnie partout : il e nest jamais lobjet dun blocage. Thor`me e e Pour tout afd , il existe un afd complet qui reconna le mme langage. t e On pourra donc gratuitement supposer que lafd considr est sans blocage. ee

18/74

Automates

13 Compltion dun afd e


Soit donc = (Q, q0 , F, ) un afd non complet. On adjoint ` Q un nouvel tat q , dit tat-puits, obtenant un nouvel a e e ensemble dtats Q = Q {q }. On pose alors = (Q , q0 , F, ) e avec: q Q, c A, (q, c) = (q, c), quand elle est dnie; e q , sinon; c A, (q , c) = q .

Ainsi a-t-on dni sur tout Q A, et est sans blocage. e En outre, tout calcul de est aussi calcul de et donc L() L( ). Les seules transitions qui sortent de q y retournent, et cet tat nest e pas nal, donc les calculs russis de doivent viter ltat-puits : ce e e e sont donc aussi des calculs (russis) de , et L( ) = L(). e

19/74

Automates

Exemple Cet afd se bloque sur la cha aa (entre autres. . . ) : ne


a

q0

q1

q2

Apr`s compltion, il devient sans blocage : e e


a

q0

q1 a

q2

b q

20/74

Automates

14 Automate ni non dterministe e


Un afnd sur lalphabet A est un quadruplet = (Q, I, F, ) o` u e Q est lensemble ni des tats; I est une partie nie de Q, constitue des tats initiaux; e e e F est une partie nie de Q, constitue des tats naux; e est une application de Q A dans P(Q), appele fonction de e transition.

On aura not : quil peut y avoir plusieurs tats initiaux ; que les transitions e e sont dnies pour tout couple (q, c), mais leur font correspondre des e ensembles dtats (ventuellement vides, ce qui correspond aux blocages). e e

21/74

Automates

15 Calculs dun afnd


On gnralise la dnition de ` : Q A P(Q) : e e e a q Q, q Q, c A, u A , avec la notation alternative q.u = (q, u). Nota Bene La programmation des calculs dun afnd est bien plus coteuse que pour un afd : on perd la linarit en la taille u e e de la cha de caract`res. ne e q. = {q} q.(u.c) =
q q.u

q .c

22/74

Automates

Typage dun afnd


type afnd = { initials : int list ; finals : int list ; transitions : (char * int list) list vect } ;;

On trouvera la liste des tats auxquels on peut aboutir ` partir dun tat q ` e a e a la lecture dun caract`re c par assoc c alpha.transitions.(q) ; si lon e part dune liste l dtats on utilisera la fonction union de la biblioth`que e e Caml et on valuera e
it_list (fun a q -> union a (assoc c alpha.transitions.(q))) [] l

23/74

Automates

On en dduit : e
let calcul alpha dpart u = e let n = string_length u in let rec avance ql i = if i = n then ql else avance (it_list (fun a q -> union a (assoc c alpha.transitions.(q))) [] ql) (i + 1) in try avance dpart 0 e with Not_found -> raise Blocage ;; let reconna^t alpha u = let arrive = calcul alpha alpha.initials u e in it_list (fun b q -> b || mem q alpha.finals) false arrive ;; e

24/74

Automates

16 Langage dun afnd


Le langage reconnu par un afnd = (Q, I, F, ) est lensemble des mots qui e a donnent lieu ` un calcul russi, cest-`-dire faisant passer lautomate dun a tat initial ` un tat nal. e a e Autrement dit : L() = {u A , q0 I, q0 .u F = }. Les notions daccessibilit (pour les tats) et de compltude (pour lautoe e e mate) sont analogues ` celles quon a dcrites pour les afd. a e Ici encore, lajout dun tat-puits permet de supposer quun afnd est sans e blocage.

25/74

Automates

17 Afnd avec -transitions


Permettre les -transitions (on dit aussi transitions spontanes ou instantanes), e e cest autoriser lautomate, quand il est dans un tat q, ` passer dans un noue a vel tat q sans mme lire un caract`re. e e e Il sagit dune gnralisation des afnd : on dnit les nouveaux afnd comme e e e des quintuplets = (Q, I, F, , ) o` (q) est pour tout tat q u e lensemble des tats auxquels on peut aboutir ` partir de q sans rien lire. e a est donc une application de Q dans P(Q).

26/74

Automates

18 Cltures o
On appelle clture instantane (ou par -transitions) dun ensemble X o e dtats la plus petite partie (X) de Q qui contient X et qui reste stable e par : q (X), (q) (X). Notons (X) = {(x), x X}, puis 2 (X) = ((X)), etc. p (X) : la suite des k (X) est ncessairement e On a alors (X) = X
pN

stationnaire (pour linclusion) puisque Q est ni, sa limite est (X). La programmation de la clture est un exercice intressant. . . o e

27/74

Automates

Calcul des cltures On reprsente par phi : int list vect. o e


let cl^ture phi ql = o let rec progresse trouvs = function e | [] -> trouvs e | t :: q -> let d = subtract phi.(t) trouvs e in progresse (d @ trouvs) (d @ q) e in progresse ql ql ;;

On aura remarqu lanalogie avec le calcul des transitions : cest ici un e parcours de graphe. Mais, au fait, en largeur dabord ou en profondeur dabord ? (Il sen faut de peu. . . )

28/74

Automates

19 Calculs dun afnd avec transitions instantanes e


On gnralise encore en posant : e e q Q, q Q, c A, u A , q = ({q}) q (u.c) =
q qu

q .c .

En particulier pour un caract`re c : e q c = q (.c) =


q ({q})

q .c .

29/74

Automates

20 Dterminisme ou non ? e
Avantage des automates dterministes : leur ecacit en termes de calcul. e e Avantage des automates non dterministes : leur expressivit. e e Il est bien vident que tout langage reconnu par un afd est galement reconnu e e par un afnd (quil ne serait pas dicile de dcrire !). . . mais linverse est-il e galement vrai ? e Cest le probl`me de la dterminisation dun afnd. e e Nous allons voir quon dispose dune mthode gnrale de dterminisation, e e e e mais quelle peut tre tr`s coteuse : un cot exponentiel ! e e u u

30/74

Automates

Expressivit Ces deux automates reconnaissent le mme langage : les e e


mots qui commencent et nissent par un a.
a

q0

q1

q2

b b a

a q0 a q1 b q2

31/74

Automates

21 Dterminisation e
Thor`me e e Soit un automate non dterministe. Il existe un automate dterministe e e qui reconna le mme langage. t e Ce thor`me permet dutiliser indiremment un afd ou un afnd dans e e e nos preuves : il ny a pas eu denrichissement de la famille des langages reconnaissables qui serait li au non dterminisme. e e La preuve est constructive : cest lalgorithme des parties.

32/74

Automates

On consid`re = (Q, I, F, , ) et la fonction de clture e o associe. e Voici la construction de lafd = (P(Q), (I), F , ) : ltat initial est (I), qui est bien lment de P(Q) ; e ee F = {X Q, X F ?} est constitu des parties possdant au e e moins un tat nal ; e pour tout ensemble X dtats de Q et tout caract`re c, (X, c) = e e
qX

(q, c).

Remarque

Seuls les tats de qui sont des cltures sont accessibles. e o En pratique, on ne construit eectivement que des tats e accessibles.

33/74

Automates

22 Complexit de la dterminisation e e
Si lafnd de dpart poss`de n tats, notre algorithme conduit ` un algorithme e e e a n possdant 2 tats (mme si en ralit, on ne conserve que les tats e e e e e e accessibles). Le cot de la dterminisation est donc au moins exponentiel. u e Mais rien ninterdit a priori ` un algorithme plus astucieux dtre plus ecace. a e Eh bien, si : Thor`me e e Soit n un entier naturel non nul. Il existe un afnd possdant n tats tel e e que tout afd vriant L() = L() doit possder au moins 2n1 tats. e e e

34/74

Automates

Soit lafnd sans -transition = ({q1 , . . . , qn }, {q1 }, {qn }, ) dni e par : (q1 , a) = {q1 , q2 }, (q1 , b) = {q1 } ; (qn , a) = (qn , b) = et, pour 2 i n 1 : (qi , a) = (qi , b) = {qi+1 }. reconna les mots dau moins n 1 caract`res dont le (n 1)-`me t e e en partant de la n est un a. Soit un afd = (Q , q0 , F , ) qui reconnaisse ce mme langage : e n pour tout mot u, le mot u.a est reconnu, donc qu = (q0 , u) Q . Montrons que u qu est une injection de lensemble des mots de e taille n 1 sur {a, b} dans Q : on aura bien montr que |Q | 2n1 . Si u et v sont deux mots de longueur n 1 distincts, on peut les crire u = u .a.w et v = v .b.w (ou le contraire). e U = u.an2|w| L() mais V = v.an2|w| L(). Si on avait / qu = qv alors q0 .U = q0 .V qui devrait tre nal et non nal. e

35/74

Automates

23 Rcapitulation e
On dira de deux automates quils sont quivalents sils reconnaissent le mme e e langage. On a vu que tout automate non dterministe (avec ou sans -transitions) e est quivalent ` e a un automate dterministe ; e un automate dterministe complet (sans blocage) ; e un automate dterministe sans tat inutile. e e Notons R lensemble des langages reconnaissables.

36/74

Automates

24 Automate produit de deux automates


Soit = (Q, q0 , F, ) et = (Q , q0 , F , ) deux automates dterministes. e Leur produit est lautomate = (Q Q , (q0 , q0 ), F F , ), o` la fonction de transition est dnie quand cest possible par : u e (q, q ) Q Q , c A, ((q, q ), c) = ((q, c), (q , c)). Nota Bene On dispose dune construction analogue pour les automates non dterministes, quils soient avec ou sans trane sitions spontanes. e

37/74

Automates

25 Stabilits de R e
Thor`me e e reconna lintersection des langages L() et L( ). t Corollaire R est stable par intersection. Remplacant dans lensemble des tats nals par F Q e obtient un nouvel afd . Thor`me e e reconna la runion des langages L() et L( ). t e Corollaire R est stable par runion. e Q F , on

38/74

Automates

Supposons et complets, et choisissons comme ensemble dtats nals e du produit F (Q \ F ). On obtient un nouvel afd . Thor`me e e reconna la dirence ensembliste des langages L() et L( ). t e Corollaire R est stable par dirence ensembliste. e Corollaire R est stable par dirence symtrique. e e On en dduit le rsultat suivant, pas si vident a priori: e e e Corollaire On sait dcider si deux automates reconnaissent le mme lane e gage. Parce que le langage reconnu par leur dirence est vide si et seulement si e aucun tat nest utile. e

39/74

Automates

Dessinons maintenant deux automates et et ajoutons une transition instantane de chaque tat nal de vers chaque tat initial de . On e e e obtient un nouvel automate (non dterministe) qui reconna L().L( ). e t Thor`me e e R est stable par concatnation. e Il faut prendre plus de soin pour la stabilit par ltoile. Soit un automate. e e On ajoute un nouvel tat q qui sera le nouvel et unique tat initial et un e e nouvel tat q qui sera le nouvel et unique tat nal. Il sut de placer des e e -transitions depuis q vers q et vers chaque tat initial de lautomate de e dpart dune part et de chaque tat nal vers q dautre part, pour obtenir e e lautomate souhait. e Thor`me e e R est stable par toile. e

40/74

Automates

Or il est vident que e Lemme , A et, pour tout caract`re c, {c}, sont tous des e langages reconnaissables.

Corollaire Tout langage ni est reconnaissable. Corollaire Le complmentaire dun langage reconnaissable est reconnaise sable. Dailleurs il sut, dans un automate complet, dchanger tats nals et non e e nals pour obtenir lautomate qui reconna le complmentaire. t e

41/74

Automates

De mme il sut quon retourne les `ches dun afd, quon nomme initiaux e e les anciens tats nals, et nal lancien tat initial, pour obtenir un automate e e (non dterministe maintenant) qui reconna le miroir du langage reconnu e t par lafd de dpart. e Thor`me e e R est stable par miroir. Exercice Montrer que R est stable par shue et par racine carre, o` e u L = {u A , u.u L}.

42/74

Automates

[shue] Si = (Q, q0 , F, )(resp. = (Q , q0 , F , )) est un afd qui reconna L (resp. M ), on construit un afnd = (Q t Q , {(q0 , q0 )}, F F , ) en posant ((q, q ), c) = {((q, c), q ), (q, (q , c))} dont on vrie facilement quil reconna L M . e t [ L] Notons Q = {q0 , q1 , . . .qn } les n + 1 tats dun afd , e = (Q, q0 , F, ) qui reconna L. L est alors reconnu par lafd t n+1 = (Q , (q0 , q1 , . . . , qn ), F , ) o` on a pos u e ((p0 , . . . , pn ), c) = ((p0 , c), . . . , (pn , c)) et o` les tats naux sont de la forme : (p0 , . . . , pn ) avec pi F d`s u e e que p0 = qi . En eet un mot u conduira dans un tel tat nal si e q0 .u = p0 = qi et si qi .u = pi F , donc q0 .(uu) F .

43/74

Automates

26 Syntaxe des expressions rguli`res e e


On dnit de facon analogue aux expressions algbriques lensemble E des e e expressions rguli`res sur lalphabet A. e e constantes variables concatnation e toile e choix tout caract`re de A, et sont des expressions rguli`res ; e e e on utilisera ` volont un ensemble dnombrable de vaa e e riables ; si m et m sont deux expressions rguli`res, m.m aussi e e (il sagit dun oprateur darit 2) ; e e si m est une expression rguli`re, m aussi (il sagit dun e e oprateur darit 1) ; e e si m et m sont deux expressions rguli`res, m | m aussi e e (il sagit dun oprateur darit 2). e e

44/74

Automates

Remarque

Pour viter un parenthsage trop lourd, on dnit un e e e ordre de priorit sur les oprateurs : a priorit sur . e e e qui a priorit sur | e e Ainsi ab |a reprsente (a.(b ))|a.

On pourrait voir E comme un langage sur lalphabet A {, , |, , ., (, )}. Il ne sagit pas dun langage reconnaissable. La taille dune expression rguli`re est le nombre de symboles qui la come e posent.

45/74

Automates

27 Smantique des expressions rguli`res e e e


Pour dnir une smantique sur E nous dnissons (de facon inductive) une e e e interprtation : cest-`-dire une application qui ` toute expression rguli`re e a a e e associe un langage sur lalphabet A. Les variables sont dabord interprtes dans le contexte courant : on les ee remplace par les expressions rguli`res quelles reprsentent. e e e Reste ` dnir notre interprtation des constantes et des oprateurs: () = a e e e , () = {}, et pour tout caract`re c, (c) = {c}; e si x et y sont deux expressions rguli`res, (x.y) = (x).(y), (x|y) = e e (x) (y), (x ) = (x) .

46/74

Automates

Par exemple : (ab(a|b) ab) est lensemble des mots dau moins quatre caract`res sur {a, b} qui commencent et se terminent par ab. e Lgalit des expressions rguli`res est bien sr note =. e e e e u e Deux expressions rguli`res x et y qui reprsentent le mme langage (ceste e e e `-dire que (x) = (y)) sont dites quivalentes, ce quon note x y. a e Nota Bene Le probl`me de dcider de lquivalence de deux exprese e e sions rguli`res est dicile. On en dira davantage plus e e tard.

Dans notre smantique, on remarque que est neutre pour |, absorbant pour e la concatnation, et ambig pour ltoile. En pratique, la seule expression e u e rguli`re contenant qui sera utilise est elle-mme. e e e e

47/74

Automates

28 Typage des expressions rguli`res e e


Caml est tout ` fait adapt au typage des expressions rguli`res : a e e e
type regexp = | Vide | Mot of string | Concat of regexp list |Choix of regexp list | toile of regexp ;; E

Pour viter trop de parenth`ses, on a choisi dutiliser le type string plutt e e o quune concatnation de char. De la mme facon, on prote de lassociativit e e e du choix et de la concatnation pour permettre de les appliquer ` plus de e a deux arguments.

48/74

Automates

29 Langages rationnels
Dnition e [Langage rationnel] Lensemble Rat des langages rationnels sur lalphabet A est la plus petite partie de L(A) qui contienne le langage vide et les singletons, et qui soit stable pour lunion, la concatnation et ltoile. e e Sont donc en particulier langages rationnels : , A , tout langage ni. . . Nota Bene Les Amricains disent regular expression et regular lane guage. Il arrivera que vous entendiez en francais expres sion rationnelle, voire mme langage rgulier. . . tout cela e e na gu`re dimportance ! e

49/74

Automates

30 Langages rationnels et expressions rguli`res e e


Thor`me e e Un langage est rationnel si et seulement si il existe une expression rguli`re e e qui le reprsente. e De par la dnition mme des langages rationnels, il est clair e e que tous les langages associs aux expressions rguli`res sont bien e e e rationnels. Pour montrer la rciproque, on remarque tout dabord que vide et tout e singleton sont reprsents par des expressions rguli`res. Lensemble e e e e des langages associs aux expressions rguli`res tant clairement e e e e stable par union, concatnation et toile, on en dduit quon a bien e e e dcrit tous les langages rationnels. e

50/74

Automates

31 Langages rationnels et langages reconnaissables


Le thor`me de Kleene rpond ` la question que tous se posent : e e e a Thor`me e e [Kleene] Les langages reconnaissables sont les langages rationnels. Et rciproquement, dailleurs. e Toutes les stabilits quon a pu dcouvrir pour R sont donc encore vraies e e pour Rat. Les automates fournissent de fait un moyen de dmontrer ce qui ne serait pas e du tout vident sans eux. . . par exemple que lintersection de deux langages e rationnels est rationnelle.

51/74

Automates

32 Des expressions rguli`res aux automates e e


Nota Bene Cest le seul sens de lquivalence dont la dmonstration e e gure au programme ociel

Nous verrons deux algorithmes qui construisent un automate reconnaissant le langage dcrit par une expression rguli`re: e e e le premier construit par une induction structurelle des automates de Thompson : cest-`-dire des afnd ne comportant quun tat initial o` a e u naboutit aucune transition et un seul tat nal do` ne part aucune e u transition ; le second construit un automate de Gloushkov ` partir dune expression a rguli`re quon aura au pralable dbarasse de toute occurrence de . e e e e e

52/74

Automates

On dessine sans dicult des automates e pour les langages , {} et les singletons. Puis, supposant construits des automates de Thompson 1 et 2 pour les expressions rguli`res e1 et e2 , e e on construit les automates de Thompson pour e1 .e2 , e1 et e1 |e2 de la facon suivante:

Automates de Thompson

1 2 1

53/74

Automates

Elimination des Soit une expression rguli`re (sans ) : on cherche une e e


expression rguli`re quivalente mais o` ne gure pas . e e e u On applique les r`gles simples suivantes : .e e. e, (|e) e , e (|e).e e |ee et e .(|e) e |e e. Finalement, on aboutit ou bien ` une expression rguli`re sans aucun , ou a e e bien ` une expression du type |e o` e ne contient pas de . a u Dans ce dernier cas, une simple transformation de lautomate de Gloushkov associ ` e convient : il sut de dcider que ltat initial est aussi nal. ea e e

54/74

Automates

Algorithme de Gloushkov Soit donc une expression rguli`re sans , e e


par exemple aa(a|ab) b. On indice chaque lettre : a1 a2 (a3 |a4 b5 ) b6 et on cre les tats correspondants (ici q1 , , q6 ) auxquels on ajoute un tat nal e e e q0 . Sont nals les tats qui correspondent ` une lettre pouvant terminer un e a mot (ici : q6 seul). On cre une transition de qi vers qj , tiquette par la lettre cj dindice j, d`s e e e e que le facteur ci cj appara dans un mot et de q0 vers qj (tiquette par cj ) t e e si un mot peut commencer par cj . Dans notre exemple : transitions tiquettes par a: de q0 vers q1 ; de q1 vers e e q2 ; de q2 , q3 et q5 vers q3 et vers q4 ; transitions tiquettes par b: de q4 vers e e q5 ; de q2 , q3 et q5 vers q6 .

55/74

Automates

Exemple dautomate de Gloushkov pour aa(a|ab) b. a

a a a a

a b a b

b b

56/74

Automates

33 Des automates aux expressions rguli`res e e


Nota Bene Ceci ne gure pas au programme ociel.

Nous prsentons trois algorithmes pour crire une expression rguli`re qui e e e e reprsente le langage reconnu par un automate donn : e e lalgorithme par limination des tats ; e e lalgorithme de McNaughton et Yamada ; lalgorithme par rsolution dquations. e e Lautomate suivant servira de support :

q1

b a

q2

57/74

Automates

Algorithme par limination des tats e e


Lide est dtiqueter les transitions par des expressions rguli`res : cela e e e e permet de supprimer successivement tous les tats, jusqu` nen avoir plus e a quun nal et initial ou deux : un initial et un nal. Quand on supprime ltat p, on liste lensemble Xp (resp. Yp ) des tats pour lesquels il existe e e une transition arrivant dans p (resp. issue de p). Pour chaque couple (x, y) Xp Yp , on tiquette la transition de x vers y par e.f .g | h e o` e (resp. f , g, h)est ltiquette de la transition de x vers p (resp. de p vers u e p, de p vers y, de x vers y). Ici : on tiquette la transition de ltat 1 sur lui-mme par a|bb a, et e e e nalement une expression rguli`re reprsentant L() scrit e = (a|bb a) . e e e e

58/74

Automates

Algorithme de McNaughton et Yamada


On numrote de 1 ` n les tats de lautomate , et on note L(k) lensemble e a e p,q des mots qui font passer lautomate de ltat p ` ltat q en ne passant e a e (k) que par des tats de numros infrieurs ou gaux ` k. On note ep,q une e e e e a (n) expression rguli`re qui reprsente cet ensemble. Alors L() = e e e Lp,q
pI,qF

plus ventuellement {} si un tat est ` la fois initial et nal, et on obtient e e a lexpression rguli`re cherche en valuant le choix (i.e. |) des e(n) pour e e e e p,q p initial et q nal. (k) (k) (k) La rcurrence senclenche car : e(k+1) = e(k) | ep,k+1 .(ek+1,k+1 ).ek+1,q . e p,q p,q Dans notre exemple : a b a|aa a b|aa b , E (1) = = on crit matriciellement E (0) = e b a a|aa a b|aa b aa a b (a b) aa a b(a b) puis E (2) se simplie en et aa a b (a b) aa a b(a b) on trouve lexpression rguli`re nale : L() est reprsent par lexpression e e e e e = | (a b) aa .

59/74

Automates

Algorithme par rsolution dquations e e


Pour tout tat p de lautomate , notons Lp lensemble des mots qui font passer de e ltat p ` un tat nal. Bien sr : L() = e a e u Lp .
pI

En outre, si Ap,q est lensemble des tiquettes des transitions de p vers q, on dispose e Ap,q .Lq , si p nest pas nal; qQ de Lp = {} Ap,q .Lq , si p est nal.
qQ

L1 = aL1 |bL2 | L2 = aL1 |bL2 On rsout un tel syst`me grce au lemme dArden : on trouve dabord L2 = b aL1 , que e e a lon reporte en obtenant L1 = b aL1 |. Une derni`re application du lemme dArden e fournit lexpression rguli`re e = (b a) . e e Dans notre exemple on a le syst`me dquations : e e Nota Bene Comme souvent dans ce genre de calculs, on confond all`grement e expressions rguli`res et langages correspondants, an dallger au e e e maximum les notations.

60/74

Automates

Lemme dArden
Thor`me e e Soient K et L deux langages sur le mme alphabet A. K .L est solution de e lquation X = K.X L. Si K, il sagit de la seule solution. e / On vrie sans dicult que K .L est solution. e e Rciproquement, si X est solution, L X donc par une rcurrence e e n simple n, K .L X et donc K .L X. Sil existait un mot dans X \ K .L, considrons en un, m, le plus e court possible. m L donc m K.X et scrit ainsi m = k.x avec / e |k| 1 si on suppose K. On a trouv ainsi x X plus court que / e m : cela impose x K .L, do` ` son tour m = k.x K .L, ce qui ua est la contradiction attendue.

61/74

Automates

34 Equivalence des expressions rguli`res e e


Rappelons quon a trouv trois expressions rguli`res distinctes pour ree e e prsenter le langage de lautomate-exemple : e (a|bb a) , |(a b) aa , (b a) .

Ces trois expressions sont donc naturellement quivalentes, ce quon peut e prouver ` la main (exercice. . . ). Mais on aimerait disposer dun moyen sr a u de dcider de cette quivalence. e e Cest une des applications de ce qui suit : ` chaque expression rguli`re, a e e on associe un afd par une des mthodes dj` vues. Sil existait une forme e ea canonique pour les automates, on aurait la solution.

62/74

Automates

35 Rsiduels dun langage e


On appelle rsiduel dun langage L (on dit aussi quotient ` gauche) tout e a 1 langage de la forme u .L = {v A, u.v L}. On a bien sr (u.v)1 .L = v 1 .(u1 .L). u Lensemble des rsiduels du langage L scrit e e res(L) = {u1 .L, u A } P(P(A )). Exemple Soit L le langage des mots sur A = {a, b} se terminant par aab. L poss`de 4 rsiduels : L = 1 .L = b1 .L = b1 .(L {ab}) = b1 .(L {}), e e L {ab} = a1 .L = a1 .(L {}), L {ab, b} = a1 .(L {ab}) = a1 .(L {ab, b}), L {} = b1 .(L {ab, b}).

63/74

Automates

36 Taille minimale dun automate


Soit = (Q, q0 , F, ) un afd complet et accessible et q Q. On note Lq = {u A , q.u F }. Thor`me e e res(L()) = {Lq , q Q}. Corollaire Tout afd complet accessible qui reconna un langage L poss`de t e au moins | res(L)| tats. e Corollaire Un langage rationnel admet un nombre ni de rsiduels. e Soit q Q : est accessible et donc w, q0 .w = q. Alors Lq = {u, q.u F } = {u, q0 .(w.u) F } = {u, w.u L()} = w1 .L() res(L()). Inversement, soit u un mot, et, comme est complet, soit q = q0 .u : on a de mme Lq = u1 .L(). e

64/74

Automates

37 Un automate minimal
Soit L un langage ayant un nombre ni de rsiduels. e Dnition e [Automate des rsiduels] Il sagit de lafd complet et accessible = e (res(L), L, F, ) o` F est lensemble des rsiduels de L contenant , et u e 1 1 1 1 o` (u .L, c) = c .(u .L) = (u.c) .L. u Thor`me e e Lautomate des rsiduels du langage L reconna le langage L. Il est de taille e t minimale parmi les afd complets et accessibles reconnaissant L. Corollaire Un langage est reconnaissable si et seulement sil poss`de un e nombre ni de rsiduels. e Par rcurrence sur |w|, on montre que pour tout mot w, et tout e rsiduel R = u1 .L, on a (R, w) = w1 .R = (u.w)1 .L. e Alors u L() (L, u) F u1 .L F u1 .L u L.
65/74

Automates

38 Minimisation
On a vu lexistence dun afd complet accessible minimal reconnaissant un langage L reconnaissable : lautomate des rsiduels, qui fournit donc en e quelque sorte un automate canonique. Mais si on me donne un afd, il nest pas vident de trouver le langage quil e reconna et de calculer ses rsiduels. t e On aimerait un algorithme permettant de minimiser lautomate sans passer par la description du langage reconnu. Cest lobjet de ltude qui suit : an de minimiser le nombre dtats, il e e convient de faire en sorte qu` deux tats distincts q = q correspondent a e deux rsiduels distincts : Lq = Lq . e

66/74

Automates

39 Miroir et minimisation
Pour tout automate , on note ici L(, q, q ) lensemble des mots u qui font passer lautomate de ltat q ` ltat q : L(, q, q ) = {u A , q q.u}. e a e Thor`me e e Soit un afnd mond (cest-`-dire sans tats inutiles) ayant un seul tat e e a e e initial q0 . est dterministe si et seulement si, pour tous les tats q, les L(, q0 , q) e e sont deux ` deux disjoints. a On rappelle que si L est le langage reconnu par un automate quelconque , son miroir est reconnu par lautomate obtenu ` partir de en renversant a le sens de chaque transition et en changeant tats naux et initiaux. e e

67/74

Automates

Si est un automate, on notera ici () lautomate dterministe sans e tat-puits (cest-`-dire mond) obtenu en appliquant ` lalgorithme de e a e e a dterminisation par parties. e On dmontre alors le thor`me suivant : e e e Thor`me e e Soit un automate quelconque. Notons successivement = , = (), = et enn = (). Alors est un automate co-accessible, et, dans , si q et q sont deux tats distincts, Lq = Lq . e qui signie en particulier que est un automate minimal quivalent ` . e a

68/74

Automates

Les tats de sont tous accessibles, puisque lautomate est e construit par dterminisation. Ainsi, les tats de sont tous coe e accessibles et ceux de aussi. Appliquant le thor`me prcdent ` lautomate dterministe , on en e e e e a e dduit que, pour les tats q de , les langages Lq sont deux ` deux e e a distincts et tous non vides. Pour conclure en ce qui concerne lautomate , il sut alors dobserver quun tat Q de est de la forme {q1 , . . . , qn } et que par e
n

consquent LQ = e
i=1

Lqi . Ces langages seront eux aussi deux ` deux a

distincts pour deux tats Q et Q distincts. e

69/74

Automates

40 Equivalence de Nrode e
Soit = (Q, q0 , F, ) un afd complet et accessible. On dit de deux tats e q et q quils sont quivalents (au sens de Nrode), et on note q q , si e e Lq = {u, q.u F } = {u, q .u F } = Lq . On notera [q] la classe dun tat e q, et, pour toute partie X de Q, [X] = {[q], q X}. Lautomate quotient / est lafd complet accessible ([Q], [q0 ], [F ], ) o` u est dnie par ([q], c) = [(q, c)] e Nota Bene (vrier que cela a du sens !). e

En pratique, cela signie simplement quon peut confondre en un seul tat e toute une classe dquivalence. e Thor`me e e Lautomate quotient de Nrode dun afd accessible et complet est isomorphe e ` lautomate des rsiduels du langage quil reconna a e t.

70/74

Automates

41 Calcul de la relation dquivalence de Nrode e e


Soit un afd complet et accessible. On va dcider pour chaque paire dtats e e sils sont ou non distinguables : cest-`-dire si on peut sassurer quils ne sont a pas dans la mme classe dquivalence. Nous proposons ici lalgorithme de e e Moore. 1. toute paire forme dun tat nal et dun tat non nal est marque e e e e distinguable ; 2. pour toute paire {q, q } marque distinguable, si on peut trouver un e caract`re c et une paire non encore marque {p, p } tels que q = p.c e e et q = p .c, on marque la paire {p, p } comme tant distinguable ; e 3. on it`re ltape 2 jusqu` ce que la situation nvolue plus. e e a e

71/74

Automates

Limplication q q = q.c q .c (valable pour tous tats q et e q et tout caract`re c) a dj` t voque : cest elle qui justie le e ea e e e e passage au quotient par la relation de Nrode. Cest, autrement dit, e que lalgorithme de Moore, par contraposition, ne marque que des paires dtats distinguables. e Montrons quil nen oublie pas : soit (q, q ) deux tats distinguables, e montrons quils seront marqus par lalgorithme. e Comme q q , on a Lq = Lq , et , q et q jouant des rles symtriques, o e on peut supposer lexistence dun mot u tel que q.u F mais q .u F . / On proc`de par rcurrence sur la taille de u. Le cas o` |u| = 0 est e e u trait par ltape 1 de lalgorithme. e e Si u = v.c o` c est un caract`re, (q.v).c F mais (q .v).c F : ainsi u e / Moore aura dcid d`s ltape 1 que (q.v).c (q .v).c et en aura e e e e dduit ` ltape 2 que q.v q .v. On est ramen ` la mme situation e a e ea e avec un mot v de taille |v| = |u| 1 et la rcurrence senclenche. e

72/74

Automates

42 Langages non reconnaissables


La proprit suivante, appele Lemme de pompage ou Lemme de ltoile, ee e e permet dtablir que de nombreux langages ne sont pas reconnaissables: e Lemme Soit L un langage reconnaissable. Il existe un entier n > 0 tel que tout facteur v dun mot u.v.w de L vriant e |v| n se dcompose sous la forme v = r.s.t avec |s| 1 e et k N, u.r.sk .t.w L.

Application Le langage L = {ap .bp , p N} nest pas reconnaissable. En eet, sinon, il existerait un entier n comme ci-dessus, et posant u = , v = an , w = bn , il existerait p 1 tel que k, an+kp .bn L.

73/74

Automates

Dmonstration du lemme de pompage e


Soit en eet = (Q, i, F, ) un afd qui reconna L, et n = |Q|. t Ecrivons v = v1 v2 . . . vp avec p = |v|. Soit q0 = i.u, et, pour 1 j p, posons qj = i.(u.v1 . . . vj ) = q0 .(v1 . . . vj ). Comme p n = |Q|, il existe deux indices 0 < m p tels que q = qm = q. Il sut pour conclure de poser r = v1 . . . v , s = v +1 . . . vm et t = vm . . . vp . On a alors i.(u.r.sk .t.w) = ((i.(u.r)).sk ).(t.w) = (q .sk ).(t.w) = q.(t.w) = qm .(t.w) = i.(u.v.w) F.

74/74

Vous aimerez peut-être aussi