Sunteți pe pagina 1din 7

SMI6 (2009 2010) Thorie des langages & Compilation Elments de correction de la srie 1

EX.1
Succ = {(n, n+1) / n }. Succ est une relation binaire sur (Suuc x). 1) Succ n'est pas rflexive : n , (n, n) Succ. Succ n'est pas transitive : (x, y) Succ y = x + 1 (1) (y, z) Succ z = y + 1 (2) De (1) et (2) on en dduit que z = x + 2 et donc (x, z) Succ. 2) Succ* : Fermeture rflexive et transitive de Succ Succ* = n 0 Succn, avec Succ0 = {(n, n) / n }. On a : (x, y) x, (x, y) Succn y = x + n ( par rec. Sur n) Et Succ* = {(n, m) / m n} (dmonstration par double inclusion). EX.2 V = {a, b}. (V*, .) est un monode (le produit est associatif, l'lment neutre est le mot vide not }. A = {u V* / u 0 (2)} est un sous monode de V*. B = { u V* / u 1 (2)} n'est pas un sous un monode car le produit n'est pas stable (u, v B, u v B) et B. C = {(ab)n , n } et D = {an bn , n 0}ne sont pas des sous monodes car le produit n'est pas stable. E = {u V* / ua = ub} est un sous monodes de V*. EX.3 = {a, b}. L1 ={ u * / |u|a = |u|b }, L2 = { u * / |u| 1 mod. 2}, L3 = { an bm / n, m *} - L1 L2 = Du fait que tout mot de L2 est de longueur impaire et tout mot de L1 est de longueur paire (si u L1 alors u = |u|a + |u|b = 2 |u|a) - L1 L3 = { an bn , n 0} u L1 L3 n , m : u = an bm et |u|a = |u|b u = an bm et |u|a = |u|b est quivalent u = an bn. - * \ L3 = * ba * (tout mot qui n'appartient pas L3 contient ncessairement un b suivi de a) EX.4 Soit un alphabet et soit : * * telle que () = et (ua) = a (u), a , u *. 1) Montrer que : a) (a) = a a . b) (u)= u u . c) (u v) = (v) (u) , u , v *. d) ((u)) = u u *. a) (a) = a (a) = (.a) = a () = a . = a b) (u) = u par rc. Sur u.

- pour u = Vrai. - H.R. : (u) = u pour tout mot u de longueur n. Soit v = u a un mot de longueur n + 1 (u = n). (v) = (u a) = (a (u) = a + (u) = 1 + u = v. c) (u v) = (v) (u) u, v * par rcurrence sur v - vrai pour v = - H.R. vrai pour tout mot v' t.q. v' = n Elle est vrifie pour v t.q. v = v' a. d) ((u)) u * Aussi par rc. Sur u. - (()) = - u 1 a , v * : u = v a ((u) = ((va)) = (a(v)) = ((v)) (a) = ((v)) a (H.R.) = va=u 2) Caractrisation de {u * / u = (u)}= L . () = , L . u = a1 a2, u = (u) a1 a2 = a2 a1 a1 = a2 (aa L) . u = a1 a2 a3 , u = (u) a1 = a3 (aba L) . u = a1 a2 a3 a4 , u = (u) a1 = a4 et a2 = a3 ( abba L) . u = a1 a2 a3 a4 a5 , u = (u) a1 = a5 et a2 = a4 (abcba L) On constate que L est l'ensemble des mots miroirs et que tout mot miroir s'crit sous la forme : v (v) pour les mots miroirs de long. Paire ou v a (v) pour les mots miroirs de long. Impaire. ( est l'image miroir d'un mot i.e. mot retourn) On pose M = {u (u) , u *} {u a (u) , u *, a } et on montre que L = M. * M L . Soit w M, deux cas : - w = u (u) , u * (w) = (u(u)) = ((u)) (u) = u (u) w L - w = u a (u) , u *, a (w) = (ua(u)) = ((u)) (ua) = u (ua) = u a (u) = w w L. * L M. Soit w L. w L w = (w). Deux cas considrer: - si w est pair, alors w = u v avec u = v ( u = v u = (u)= v= (v)) w = (w) u v = (uv) = (v) (u) u v = (v) (u) u = (v) et v = (u) ( du fait que u = (v) et v = (u)) w = u v = u (u) w M - si w est impair, alors w = u a v (o a est une lettre de et u, v des mots de *) avec u = v. w = (w) u a v = (v) a (u) u = (v) et v = (u) ( du fait que u = (v) et v = (u)) w = u a v = u a (u) w L.

EX.5
1) Vrifier si le mot 011100 appartient au langage dcrit par l'expression rgulire (0 + (11)*)*. u ( 0 + (11)*)+ k > 0 : u (0 + (11)*)k u (0 + (11)*)k u1, u2, , uk (0 + (11)*) : u = u1 u2 uk ui (0 + (11)*) ui1 est pair u1 est pair; Pour u = 011100, on a u1 = 3. Donc u n'est pas un mot de l'expression rgulire. 2) Expression rgulire pour: - L0 = {a, b, aa, ab, ba, bb} a + b + aa + ab + ba + bb = A + b + a(a + b) + b(a + b) = (a + b) ( + a + b) - L1 = { a3n b2m+1 {a,b}*, n, m 0} = {(a3)n , n 0}{(b2)m , m 0}{b} = n0 {(aaa)n} (m0 {(bb)m}) {b} = (aaa)* (bb)* b - L2 = {an bm / n + m 0 (2)} (n + m 0 (2) n et m ont mme parit (les deux pairs ou les deux impairs) - L2 = {(a)2k (b)2k' , k, k' 0} {(a)2i+1 (b)2j+1 i, j 0} = (aa)* (bb) + a(aa)* (bb)*b (mme mthode utilise dans L1) - L3 = {u (a + b)* / u ne contient qu' un seul b} u L3 u s'crit sous la forme : u = an b am avec n, m 0 (du fait que ub =1) u a* b a* D'o l'exp. Rg. dnotant L3 est a* b a*. - L4 = { u (a + b)* / u commence par a et se termine aa} Le plus petit mot de L4 est aa. u L4 v (a + b)* : u = a v aa + aa u a (a + b)* aa + aa L4 a (a + b)* aa + aa.

EX.6
a) Un identificateur est une suite de lettres ou de chiffres commenant par une lettre. Ecrire une dfinition rgulire. lettre = [a-zA-Z] chiffre = [0-9] ident = lettre (lettre chiffre)* b) Idem, mais en imposant que la premire lettre soit une majuscule. lettre = [a-zA-Z] chiffre = [0-9] maj = [A-Z] ident_prol = maj (lettre chiffre)* c) Ecrire une dfinition rgulire pour les nombres rels tels que: 123 54.37 0.5 21E3 32E+5. chiffre_non_nul = [1-9] chiffre = chiffre_non_nul 0 entier = chiffre_non_nul chiffre* 0 decimal = .chiffre* expt = E[+-]?entier reel = [+-]? (entier decimal? decimal) expt?

Suite de la solution (Prire de vrifier les solutions) EX.7 (EX.3 sur la srie!) Min (L) = {u * / u n'a pas de prfixe propre dans L} Mq : L est rgulier min (L) est rgulier. u a un prfixe propre dans L ( v L, w + : u = v w) u L + u n'a pas de prfixe propre dans L u L + ( L+ ** = *) u * \ L+ (* \ L+ est le complment de L+) u min(L) u n'a pas de prfixe propre dans L u min(L) u * \ L+ On a donc : min(L) = * \ L+ (double inclusion) Si L est rgulier alors L+ est aussi rgulier ( le produit de deux rguliers est rgulier). Il reste dmontrer que le complment d'un rgulier est rgulier. On a le rsultat suivant : un langage est rgulier il est reconnu par un automate d'tats fini ( thorme de Kleene , cours de la semaine du 29 /02) D'aprs Kleene le langage M = L+ est rgulier, Il existe donc un AFD A = (, Q, , q0, F) t. q. M = L(A). Montrons que l'automate B = (, Q, , q0, Q \ F) reconnat le complment de M. (Il suffit de changer tout tat final dans A par un tat non final dans B et tout tat non final devient final). u L(A) = M (q0, u) F (Df.) u L(B) (q0, u) Q \ F (q0, u ) F u M u * \ L+ Ceci montre que : L(B) = * \ L+ et par consquent ce langage est rgulier selon Kleene. N.B. De prfrence cet exercice sera trait en dernier de la srie 1. EX.8 (7 de la srie1) Construction des automates: 1)

0,1.2.3 0,1.,8 4,5,,9

2,3,,9 0,1,,9

Lautomate est incomplet, les transitions manquantes vont ltat puit

2) Automates correspondant l'ex.5 2).

a,b a,b

a b b b

a b

b a a b b b

a b

Pour le langage L4 : ensemble des mots qui commencent par a et se terminent par aa on peut utiliser un automate non dterministe que l'on dterminise.(Cours de cette semaine).

a,b
1

a a

a
4

AFN pour L4

1 a 2,3 a 2,3,4 b Le dterministe correspondant


3) Pour l'automate des rels, vous pouvez le faire sans difficult.

a b

a b

4) Expression rgulire pour l'automate: 1 0 0 1 1 0 1 2 0

On utilise les langages associs aux tats (Systme d'quations): L0 = 1 L0 + 0 L1 (1) L1 = 1 L0 + 0 L2 (2) L2 = 1 L1 + 0 L2 + (3) On substitue L1 dans L0 et on a: L0 = 1 L0 + 0 (1L0 + 0L2) = 1 L0 + 01 L0 + 00 L2 L0 = (1 + 01) L0 + 00L2 Lemme d'Arden L0 = (1 + 01)* 00 L2 (4) On substitue le rsultat obtenu pour L0 dans L1 (q. (2)): L1 = 1 (1 + 01)* 00 L2 + 0 L2 L1 = [1(1 + 01)* 00 + 0] L2 On remplace ce rsultat dans L2 (q.(3)): L2 = [11(1 + 01)* 00 + 10] L2 + 0L2 + L2 = [11(1 + 01)* 00 + 10 + 0] L2 + Par le lemme d'Arden on a: L2 = [11(1 + 01)* 00 + 10 + 0]* On remplace enfin ce rsultat de L2 dans l'eq. (4) et on obtient l'expression cherche: L0 = (1 + 01)* 00 [11(1 + 01)* 00 + 10 + 0]*

S-ar putea să vă placă și