Académique Documents
Professionnel Documents
Culture Documents
Solution (Ex. 1) —
R.Q.1
–1 ∈ Σ et 1 ∈ Σ. Donc {1} et {0} sont des langages réguliers.
–La fermeture de Kleene d’un langage régulier est un langage régulier. Donc {1}∗ et {0}∗ sont des
langages réguliers.
–La concaténation de langages réguliers est un langage régulier. Donc {1}∗ .{0}.{1}.{0}∗ est un
langage régulier.
R.Q.2
–Les nombres binaires impairs se terminent nécessairement par 1.
–{1} et {0} sont des langages réguliers. Donc {1} ∪ {0} est un langage régulier.
–d’où ({1} ∪ {0})∗ est un langage régulier.
–Donc ({1} ∪ {0})∗ ∪ {1} est un langage régulier.
Solution (Ex. 2) —
R.Q.1
–Soit L = {w1 , w2 , ...wn } un langage fini.
–Comme chaque mot wi est une concaténation finie de caractères de Σ, il est clair que {wi } est
régulier pour tout 1 ≤ i ≤ n . Donc, L = {wi } ∪ {wi } ∪ ... ∪ {wi } est régulier.
R.Q.2
–Non, c’un langage non contextuelle ou algébrique/hors-contexte.
–Preuve par contradiction. Supposons que L est régulier. Donc, il existe un automate fini (Q, Σ, δ, q0 , F)
reconnaissant L.
–Intuitivement : comme Q est fini, il existe un mot de L qui est accepté en passant deux fois par
le même état q. Par exemple : w = 02|Q| 12|Q| .
–Donc, il existe un chemin de q0 à q labellé par 0k1 , une boucle allant de q à q labellée par 0k2
et un chemin allant de q à qf ∈ F, labellé par par 0k3 12|Q| , avec k1 + k2 + k3 = 2|Q|.
–Mais alors, on peut aussi accepter, par exemple le mot 0k1 0k3 12|Q| , qui n’est pas dans L.
Contradiction : A ne peut pas exister et donc L n’est pas régulier.
1
Solution (Ex. 3) —
E1 : Le monoïde libre contenant tous les mots sur Σ = {0, 1}.
E2 : Langage des mots sur Σ = {a, b, 0, 1} commençant par a ou b.
E3 : Langage des mots sur Σ = {a, b} commençant par un nombre paire de a et terminant par
un nombre inmpaire de b.
E4 : Langage des mots binaires commençant et terminant exactement par zéro.
E5 : ((e + 0)1∗ )∗ = (e1∗ + 01∗ )∗ c’est les mots sur Σ = {e, 0, 1} contenant un nombre arbitraire
de 1.
E6 : 0∗ 10∗ 10∗ Langage des mots binaires contenant exactement deux 1.
Solution (Ex. 4) —
1.(00)*+(11)*1
2.Les deux langages 0* et 1* constituent une partie du langage. Pour la pertie qui reste il
faut après chaque bloc de 0 (sauf éventuellement un bloc à la fin qui peut être suivi par un
seul 1) on doit avoir un 10. D’ou l’expression (0∗ + 1∗ + ((0∗ 10)∗ ( + 0∗ 1)))
Solution (Ex. 5) —
E1 : (a*b*)*(a*b*)* = (a*b*)* = (a+b)*.
E2 : ab((ab*)* +(ba*)*)ba.
E3 : On a (ab*)* = (a*b)* = a*b* (vérification : utiliser les automates équivalents) d’où E2 =
aba*b*ba.
E4 : (aa*ba + aaba + aba + ba) = a*ba
E5 : (a*b*)*=(a+b)*
Ex. 6 — Donnez une expression régulière (définis sur l’alphabet = {0, 1}) qui accepte chacun
des langages suivants :
1.Toutes les chaînes qui se terminent par 00.
2.Toutes les chaînes dont le 10ème symbole, compté à partir de la fin de la chaîne, est un 1.
3.Ensemble de toutes les chaînes dans lesquelles chaque paire de 0 apparaît devant une paire
de 1.
4.Ensemble de toutes les chaînes ne contenant pas 101.
5.Tous les nombres binaires divisibles par 4
Solution (Ex. 6) —
2
1. (0 + 1)*00
2. (0 + 1)*1(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1) = (0+1)∗ 1(0+1)9
3. (1 + 01 + 0011)*(0 + )
4. 0*(1 + 00+)*0*
5. (0 + 1)*00
automate 1 automate 2
Solution (Ex. 7) —
Automate 1.
a b
a b
→{q0} {q1,q2} -
→q0 {q1,q2} -
{q1,q2} {q3} {q0,q1,q3}
q1 {q3} {q0,q1}
←{q3} {q3} {q3}
←{q2} - {q0,q3}
←{q0,q1,q3} {q1,q2,q3} {q0,q1,q3}
←{q3} {q3} {q3}
←{q1,q2,q3} {q3} {q0,q1,q3}
a b
→0 1 -
1 2 3
←2 2 2
←3 4 3
←4 2 3
Automate 2.
0 1 0 1
→p {p,q} {p} →{p} {p,q} {p}
q {r,s} {t} {p,q} {p,q,r,s} {p,t}
r {p,r} - ←{p,q,r,s} {p,q,r,s} {p,t}
←s - - ←{p,t} {p,q} {p,s}
← t - {s} ←{p,s} {p,q} {p,s}
0 1
→a b a
b c d
←c c d
←d b e
←e b e
3
Solution (Ex. 8) —
Solution (Ex. 9) —
a b a b
→{q0} {q1} {q1} →0 1 1
{q1} {q0,q2} {q0,q3} 1 2 3
←{q0, q2} {q1} {q1} ←2 1 1
←{q0, q3} {q1} {q1} ←3 1 1
minimal :
Ex. 10 — Donner, pour chacun des langages suivants, un automate qui le reconnaît.
–L1 = { a*bb*}, L2 = { aa*bb*}
–L3 = { mots dans {a,b}* commençant par n b, n > = 0, finissant par un nombre pair de a}
–L4 = { mots dans {a,b}* commençant par ab et finissant par bb}
–L5 = { mots engendres par aa*bb* de longueur impaire}
–L6 = { mots dans {a,b}* n’ayant pas aa comme facteur}
–L7 = { mots dans {a,b}* de longueur paire} L8 = { mots dans {0,1}* dont l’écriture en base
2 est un multiple de 3}
4
L1 : L2 :
Le symble λ représente ici le mot vide
L3 : L4 :
L6 : L7 :
L8 :