Vous êtes sur la page 1sur 8

Université de Kairouan A.U.

2020/2021
Institut Supérieur d’Informatique et de Gestion
Département d'Informatique

Théorie des langages et Automates


Corrigé des Travaux Dirigés N°3
2ème année LSI-LIG
Omar Mazhoud

Exercice 4

Soit X = {0,1}. Donner une expression régulière pour chacun des langages suivants :
*
1. Tous les mots de longueur paire : (00∪01∪10∪11) ou ((0∪1)(0∪1))*
2. Tous les mots de longueur impaire : (0∪1)(00∪01∪10∪11)* ou
(00∪01∪10∪11)*(0∪1)
*
3. Tous les mots contenant le facteur 00 : (0∪1) 00(0∪1)*
4. Tous les mots ne contenant pas le facteur 00 :

0 1
q0 q1 q2
0
1 1
0
q3

0,1

L0 = 1L0∪0L1∪ε
L1 = 1L2∪ε
L2 = 0L1∪1L2∪ε

L2 = 0L1∪(1L2∪ε)
L2=0L1∪L1=(0∪ε)L1
L1=1L2∪ε=1[(0∪ε)L1] ∪ε=(10∪1)L1∪ε (c’est la forme x=px+q: théorème d’ARDEN)
Donc L1=(10∪1)*
L0=1L0∪0L1∪ε = 1L0∪0(10∪1)* ∪ε Donc L0=1*[0(10∪1)* ∪ε]

Exercice 6

Construire un automate reconnaissant le langage représenté par l'expression régulière suivante :


(a1 ∪ b2) a3* ((b4 ∪ a5a6 ∪ a7b8) a9* b10)*

1/8
2/8
Exercice 2

Soit l'AFN A = ({a, b}, {0,1,2,3,4,5}, {0,5}, {4}, δ ) . La fonction δ est donnée par la table suivante :

δ a b
0 {1,2,3,4,5}
1 {2,3} {4}
2 {0,1,4} {1,2,3}
3 {0} {1,2,5}
4 {1}
5 {2} {2,3,5}

1. Trouver un automate fini déterministe A' équivalent à A.

δ’ a b
q0 {0,5} {1,2,3,4,5}= q1 {2,3,5}= q2
q1 {1,2,3,4,5} {0,1,2,3,4}= q3 {1,2,3,4,5}= q1
q2 {2,3,5} {0,1,2,4}= q4 {1,2,3,5}= q5
q3 {0,1,2,3,4} {0,1,2,3,4,5}= q6 {1,2,3,4,5}= q1
q4 {0,1,2,4} {0,1,2,3,4,5}= q6 {1,2,3,4}= q7
q5 {1,2,3,5} {0,1,2,3,4}= q3 {1,2,3,4,5}= q1
q6 {0,1,2,3,4,5} {0,1,2,3,4,5}= q6 {1,2,3,4,5}= q1
q7 {1,2,3,4} {0,1,2,3,4}= q6 {1,2,3,4,5}= q1

A' = ({a, b}, {q 0 , q1 , q 2 , q 3 , q 4 , q 5 , q 6 , q 7 }, {q 0 }, {q1 , q 3 , q 4 , q 6 , q 7 }, δ ')

2. Minimaliser A' et en déduire une expression régulière de A.

Equivalence q0 q2 q5 q1 q3 q4 q6 q7
≡0 I I I II II II II II
a II II II II II II II II ≠
b I I II II II II II II
≡1 I I II III III III III III
a III III III III III III III III ≠
b I II III III III III III III
≡2 I II III IV IV IV IV IV
a IV IV IV IV IV IV IV IV = donc arrêt
b II III IV IV IV IV IV IV
≡3 I II III IV IV IV IV IV

a,b
a
I IV
b
a a,b

b
II III

Pour chercher le langage reconnu par cet automate, il faut établir le système d’ARDEN.
Système d’ARDEN :

3/8
L1 = aL4∪b L2
L2 = aL4∪b L3
L3 = (a∪b) L4
L4 = (a∪b) L4∪{ε} L4 = (a∪b) * d’après le théorème d’ARDEN.

L3 = (a∪b) L4 = (a∪b) (a∪b) *


L2 = aL4∪b L3 = a(a∪b) *∪b(a∪b) (a∪b) *
L1 = aL4∪b L2 = a(a∪b) *∪b[a(a∪b) *∪b(a∪b) (a∪b) *]
L1 = [a∪ba∪bb(a∪b)] (a∪b) *

Exercice 3

Soit X = {0,1}.
1. Construire un AFN reconnaissant les mots de la forme (100 ∪ 010 ∪ 001)*.

Pour répondre à cette question, il y a deux méthodes : la première est la méthode intuitive et la seconde est
l’algorithme de Glushkov.
a) La méthode intuitive peut donner un automate de la forme suivante :

0 1
A q0 q1 q3

1 1 0
0
q2 q4

q5
0

b) L’algorithme de Glushkov donne l’AFN suivant : (110203 ∪ 041506 ∪ 070819)*

1 02 0 03
0
11
1 1
A q0
0 1
0
0 0
1 15 06
0 40 7

0 08 19
0 1

4/8
2. La détermination cet automate : Rappelons q’un automate peut ne pas être déterministe à cause des
points suivants :
a. existence de plusieurs états initiaux ;
b. existence de ε-transition ;
c. à partir d’un état peuvent partir plusieurs transitions avec le même symbole ;
d. contrairement à c., pas toutes les transitions avec tous les symboles sont présentes pour un état.

Comme la seule cause du non déterminisme pour cet automate est (d.), donc pour déterminiser cet
automate, il suffit de rajouter un état (puits ou piège) auquel partent toutes les transitions avec symboles
manquant (ce qui est fait en pointillé pour le premier automate, on pourrait faire la même chose pour le second
automate).

0 1
A q0 q1 q3

1 1 0 1
0
q2 q4

q5 1 0
0

1
0,1

Exercice 5

D’après la méthode intuitive on peut dire que le langage reconnu par cet automate est (aa)*.
Démontrons en appliquant le système d’ARDEN, on va pouvoir trouver la même expression régulière du
langage.
Système d’ARDEN :
2
a a
b
a,b
1 3
b b

a 7 a
b b
b
6
4
a a
5

L1 = aL2∪{ε} L1 = aL2∪{ε}= a aL3∪{ε}


L2 = aL3 L1 = a aL3∪{ε}= a a(aL4∪{ε})∪{ε}
L3 = aL4∪{ε} L1 = a a(aaL5∪{ε})∪{ε}= a4L5∪ a2∪{ε}
L4 = aL5 L1 = a4(aL6∪{ε})∪ a2∪{ε}
L5 = aL6∪{ε} L1 = a4(aaL1∪{ε})∪ a2∪{ε}= a6L1∪ a4∪ a2∪{ε}
L6 = aL1 D’après le théorème d’Arden, cette dernière équation admet p*q comme solution.
L1 = (a6)*(a4∪ a2∪{ε}) = (aa)*
Donc,
Remarque : pour prouver l’égalité, il suffit de faire une énumération pour (a6)*(a4∪ a2∪{ε}) =
(a6)*∪(a6)*a2∪(a6)*a4={ε, a6, a12, a18, a18,...}∪{a2, a8, a14, a20,...}∪{a4, a10, a16, a22,...} = (a2)*

5/8
Exercice 1

Soit X = {0,1}.
1. Construire un automate A reconnaissant les mots ayant le facteur 0 comme deuxième symbole.
Le langage L(A) reconnu par A est le suivant : (0∪1)0 (0∪1)*.
Intuitivement, on pourra dessiner l’automate A de la façon suivante :

0,1 0
q0 q1 q2
A 0,1

On pourrait également obtenir cet automate en appliquant l’algorithme de Glushkov, on obtient alors :
(01∪12)03 (04∪15)*
0
04
12
1 0
A q0
0 03 1 0
0
0 1
01 15

2. Construire un automate A' reconnaissant les mots ayant le facteur 0 comme avant-dernier symbole.
Le langage L(A’) reconnu par A’ est le suivant : (0∪1)*0(0∪1)
Intuitivement, on pourra dessiner l’automate A’ de la façon suivante :

0 0,1
q0 q1 q2
A’

0,1

3. Construire un automate pour X* \ L(A), L(A) ∪ L(A'), L(A) ∩ L(A') et L(A)*


a) Soit M1 l’automate reconnaissant X* \ L(A). Construisons M1. Pour cela il faudra partir d’un automate
déterministe, sinon on aura un résultat faussé. En effet si on applique les règles de construction d’un
automate complément de A, on obtiendra un automate qui ne reconnaît pas par exemple le mot w = 110
(ou 11 ou 010 ou 111, etc) qui ne contient pas 0 comme deuxième facteur.
Remarque : Lorsqu’il s’agit d’opérations sur les automates, il faudra partir toujours d’automates
déterministes afin de garantir les résultats.
Déterminisons A et A’ tout d’abord.
Pour A, nous allons suivre la même démarche que celle utilisée à la question 2 de l’exercice 4.

0,1 0
q0 q1 q2
A 0,1
1
q3 0,1

Pour déterminiser A’, il faut faire la table de transition :

δ’ 0 1
A={q0} B{q0,q1} A{q0}
B={q0,q1} C{q0,q1,q2} D{q0,q2}
C={q0,q1,q2} C{q0,q1,q2} D{q0,q2}
D={q0,q2} B{q0,q1} A{q0}

6/8
0 0
A B C
A’
1 1 0
1 0 D 1

On peut maintenant obtenir M1 à partir de l’AFD A :

0,1 0
q0 q1 q2
M1 0,1
1
q3 0,1

b) Soit M2 l’automate reconnaissant L(A) ∪ L(A').

0
q1 q2
0,1 0,1
1
M2 I q3 0,1
0
1 0
A B C
0
1 1 0
1 0 D 1

M2 = ({0,1},{I,q1,q2,q3,A,B,C,D},{I},{q2,C,D},δ)
Remarquons qu’on peut supprimer l’état q0 de A car il n’est jamais atteint. Par ailleurs, les états finaux de M2
se résument tout simplement aux états finaux de A et et de A’. Si l’un des états initiaux (ou les deux) était
final alors I : état initial de M2 deviendrait aussi final.
c) Soit M3 l’automate reconnaissant L(A) ∩ L(A').
M2 = ({0,1},{(q0,A), (q0,B), (q0,C), (q0,D), (q1,A), (q1,B), (q1,C), (q1,D), (q2,A), (q2,B), (q2,C), (q2,D), (q3,A),
(q3,B), (q3,C), (q3,D)}, {(q2,C), (q2,D)}, δ)

δ 0 1
(q0,A) (q1,B) (q1,A)
(q0,B) (q1,C) (q1,D)
(q0,C) (q1,C) (q1,D)
(q0,D) (q1,B) (q1,A)
(q1,A) (q2,B) (q3,A)
(q1,B) (q2,C) (q3,D)
(q1,C) (q2,C) (q3,D)
(q1,D) (q2,B) (q3,A)
(q2,A) (q2,B) (q2,A)
(q2,B) (q2,C) (q2,D)
(q2,C) (q2,C) (q2,D)
(q2,D) (q2,B) (q2,A)
(q3,A) (q3,B) (q3,A)
(q3,B) (q3,C) (q3,D)
(q3,C) (q3,C) (q3,D)
(q3,D) (q3,B) (q3,A)

d) Soit M4 l’automate reconnaissant L(A)*. L(A)* = ((0∪1)0 (0∪1)*)*. De façon intuitive, on peut
construire les solutions suivantes :

7/8
0,1 ε
0,1 0,1
q0 q1 q2 q0 q1 q2
M4 0 0,1 M4 0 0,1
1 1
q3 0,1 q3 0,1

On peut utiliser l’algorithme de Glushkov qui nous donnera la solution suivante : ((01∪12)03 (04∪15)*)*
0 0
12 0 q2 0

1 01 04 01 03 04 1 q5 q7
0 0
1 ∅ 0 1 q3 0
M4 q0 M4 q0
03 1 q4 1
0,1 0 0,1 0
0 1 0 1
1 1 1 1
12 15 q6
01 0 q1 0
1 1

Minimalisons M4 :

Equivalence q0 q1 q2 q3 q4 q5 q6 q7
≡0 I I I I II II II II
0 I II II I II II II II ≠
1 I I I I II II II II
≡1 I II II I III III III III
0 II III III I III III III III ≠
1 II I I I III III III III
≡2 I II II III IV IV IV IV
0 II IV IV III IV IV IV IV = donc arrêt
1 II III III III IV IV IV IV
≡3 I II II III IV IV IV IV

0,1 0
I II
M4 IV 0,1
1
III 0,1

Exercice 7

Les suppositions suivantes sont-elles correctes (justifier votre réponse) :


1. Si un langage L est régulier alors L* est régulier ???
Evidemment oui, car on n’a fait qu’utiliser les constructeurs des expressions régulières à savoir : X∪{*,∪,•}
2. Si un langage L est régulier alors tout langage inclus dans L est régulier ???
Non ce n’est pas juste car par exemple tous les mots appartenant à anbn appartiennent à a*b*, donc on peut
dire que anbn est inclus dans a*b*. Or nous avons démontré d’après le théorème de l’étoile que anbn n’est pas
régulier. On peut conclure donc que tout langage inclus dans un langage régulier n’est pas nécessairement
régulier.
3. Tout langage fini est régulier ???
Oui car on peut associer un automate à ce langage fini.

Exercice 8

Soit X = {a,b}. Montrer que les langages suivants ne sont pas réguliers :
1. L1 = {w ∈ X*/ w = anb2n ; n ∈ IN}
Cf. cours, démonstration par le théorème de l’étoile : si un langage n’est pas régulier alors il ne vérifie pas le
théorème de l’étoile.
2. L2 = {w ∈ X*/ |w|a = |w|b}

8/8

Vous aimerez peut-être aussi