Académique Documents
Professionnel Documents
Culture Documents
2020/2021
Institut Supérieur d’Informatique et de Gestion
Département d'Informatique
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
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}
δ’ 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
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.
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
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
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
0,1 0
q0 q1 q2
A 0,1
1
q3 0,1
δ’ 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
0,1 0
q0 q1 q2
M1 0,1
1
q3 0,1
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
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