Vous êtes sur la page 1sur 22

Théorie des langages et compilation

Chapitre 3

Automates Finis Non déterministes


(NFA)

Pr. Saïd Ouatik El Alaoui


s_ouatik@yahoo.com
ouatikelalaoui.said@uit.ac.ma

1
III. Automates Finis Non déterministes (NFA)
III.1. Définitions
Définition :
Un automate fini non déterministe M est un cinq-uplet (∑ , Q , δ , q0 , F) avec :
∑ : un alphabet
Q : l’ensemble d’états
q0 : l’état initial
F : ensemble des états finaux F  Q
δ : Q ∑ → 2Q (2Q = l’ensemble des parties de Q)

Remarques :
• ∑, Q, q0, F sont définis de la même manière qu’un DFA, la seule différence est la
fonction de transition.
• δ (q,x) = q*x = { q’  Q / il existe une transition de q vers q’ par le symbole x }

2
III. Automates Finis Non déterministes (NFA)
III.2 Exemple d’un NFA

- Exemple : q1
a
b
q0 b
a q2

a a

q4 b q3
q0*a = {q1,q3}
q0*b = {q2}
q3*a= 

3
III. Automates Finis Non déterministes (NFA)
III.2. Exemple d’un NFA
Remarque : un DFA est un cas particulier de NFA.

Extensions de * :

• 2Q ∑ → 2Q
Q’  Q , Q’ *x = { q’*x / q’  Q’ }

• 2Q ∑* → 2Q
Q’  2Q : Q’ * ε = Q’
Q’*xu = (Q’*x) * u (où : x  ∑ et u  ∑*)

Exemple : (on utilise le NFA de l’exemple précédent)

{q0}*aba = (q0*a)*ba = {q1, q3}*ba = ({q1, q3}*b)*a = {q0, q4}*a = {q1, q3, q0}
{q0}*baa = {q2}*aa = {q0}*a = {q1, q3}
4
III. Automates Finis Non déterministes (NFA)
III.3. Langage reconnu par un NFA
Définition : Langage reconnu par un NFA
Soit M= (∑ , Q , * , q0 , F) un NFA
T(M) = {w  ∑* / q0*wF}

Exemple :
q0*aba = {q1, q3, q0} ➔ aba  T(M)
baa T(M) car q0*baa  F =

Proposition :
Le langage reconnu par un NFA est régulier.

5
III. Automates Finis Non déterministes (NFA)
III.4. Passage d’un NFA vers un DFA
- Règles de construction : Passage d’un NFA vers un DFA

Soit M un NFA tel que M = (∑ , Q , * , q0 , F)


Le DFA équivalent est défini par : M’ = (∑ , 2Q , + , q0’ , F’) , q0’ 2Q
• Prenons q0’ = { q0}
• Définition de + :
+ : 2 Q  ∑ → 2Q
(Q’,x) → Q’*x
• Extension de + :
+ : 2Q  ∑* → 2Q
Q’ + ε = Q’
Q’+xu = (Q’ +x)+u= (Q’*x)+u=Q’*xu
Définition de F’:
Prenons F’ = { Q’ Q / Q’ F }

6

III. Automates finis Non déterministes (NFA)


III.4. Passage d’un NFA vers un DFA
Exemples : A partir du NFA précédent, on va construire un DFA équivalent.

+ a b

{q0}

7

III. Automates finis Non déterministes (NFA)


III.4. Passage d’un NFA vers un DFA
Exemples : A partir du NFA précédent, on va construire un DFA équivalent.

+ a b

{q0} {q1, q3} {q2}

{q1, q3}

8

III. Automates finis Non déterministes (NFA)


III.4. Passage d’un NFA vers un DFA
Exemples : A partir du NFA précédent, on va construire un DFA équivalent.

+ a b

{q0} {q1, q3} {q2}

{q1, q3}  {q0, q4}

{q2} {q0} 

{q0, q4} {q1, q3, q0} {q2}

{q1, q3, q0} {q1, q3} {q0, q4, q2}

{q0, q4, q2} {q1, q3, q0} {q2}

  

9

III. Automates finis Non déterministes (NFA)


III.4. Passage d’un NFA vers un DFA
Exemples : A partir du NFA précédent, on va construire un DFA équivalent.

+ a b

{q0} * {q1, q3} {q2}

{q1, q3}  {q0, q4}

{q2} {q0} 

{q0, q4} * {q1, q3, q0} {q2}

{q1, q3, q0} * {q1, q3} {q0, q4, q2}

{q0, q4, q2} * {q1, q3, q0} {q2}

F=  

10

III. Automates finis Non déterministes (NFA)


III.4. Passage d’un NFA vers un DFA
Exemples : A partir du NFA précédent, on va construire un DFA équivalent.

+ a b

{q0}=A* {q1, q3} {q2}

{q1, q3}=B  {q0, q4}

{q2}=C {q0} 

{q0, q4}=D* {q1, q3, q0} {q2}

{q1, q3, q0}=E* {q1, q3} {q0, q4, q2}

{q0, q4, q2}=D* {q1, q3, q0} {q2}

F=  

11

III. Automates finis Non déterministes (NFA)


III.4. Passage d’un NFA vers un DFA
Remarques :
• Si deux états donnent les mêmes résultats avec toutes les transitions alors ils sont
équivalents.
• Les états équivalents doivent être de même type (états soit finaux soit non finaux).
• Dans l’exemple, les états {q0, q4} et {q0, q4, q2} sont équivalents, car ils donnent les
mêmes résultats avec les symboles a et b. On peut supprimer un exemplaire.
• Dans le tableau précédent, les états finaux sont marqués par *.

12

III. Automates finis Non déterministes (NFA)


III.4. Passage d’un NFA vers un DFA
Exemple : (suite)

13

III. Automates finis Non déterministes (NFA)


III.4. Algorithme de passage d’un NFA vers un DFA
1) Initialisation
Q’ {{ q0}}
F’ 
2) Pour chaque symbole a de  faire
calculer P {q0}*a
ajouter P à Q’
Fin Pour
3) Répéter l’étape 2 pour chaque état de Q jusqu’a ce que aucun nouvel état ne
s’ajoute a Q’
4) Vérifier s’il existe des états équivalents et les supprimer de Q’
5) Pour chaque état P de Q’ faire
si P  F alors Ajouter P à F’
fin si
fin pour
Fin.
14

III. Automates finis Non déterministes (NFA)


III.4. Algorithme de passage d’un NFA vers un DFA
Exercice:

Soit ={0, 1} un alphabet.

- Donner un NFA reconnaissant l’ensemble des mots contenant ‘00’ ou


‘11’.

- Donner un NFA reconnaissant l’ensemble des mots se terminant par


‘0110’.

- Construire un DFA équivalent pour chaque NFA

15

Théorie des langages

Chapitre 4 :

Expressions régulières

16

IV. Expressions régulières

Définition :
Soit  un alphabet. Les expressions régulières définies sur  et les ensembles
qu’elles dénotent sont définis inductivement comme suit:
•  l’expression vide est une expression régulière qui dénote l’ensemble vide
• ε est une expression régulière qui dénote {ε}
• si a   alors a est une expression régulière qui dénote {a}
• si r et s sont des expressions régulières qui dénotent respectivement les
langages R et S, alors (r+s), rs et r* sont des expressions régulières dénotant
respectivement R  S, R.S et R*.

Notation:
ER() : l’ensemble des expressions régulières sur  .

17

IV. Expressions régulières

Exemple 1 :
= {a,b}
ε , a , b , ab , a+b , (a+b)* sont des expressions régulières.

Exemple 2 :
= {0,1}
- (0+1)*  ER( ), elle dénote *.
- (0+1)*00(0+1)*  ER( ), elle dénote l’ensemble des mots contenant deux ‘0’
consécutifs.

18

IV. Expressions régulières

Remarque :
Toute expression régulière dénote une partie de  *

Exemple :  ={a, b}
L : ER( ) → 2  *
 →  ={}
ε→{ε}
x →{x} , x  
L (r+s) = L (r) L (s)
L (rs) = L (r). L (s)
L (r*) = (L (r))*

19

IV. Expressions régulières

Proposition :
Soient A, B et Z  ER( ).
Z=ZA+B s.s.s. Z=BA* (si ε  A)

Exercice :  ={a, b}
Montrer que:
• a*={}+aa*
• a*a=aa*
• (b+aa*b)+(b+aa*b)(a+ba*b)*(a+ba*b)=a*b(a+ba*b)*

Proposition :
A tout DFA on peut associer une expression régulière.

20

IV. Expressions régulières


Règles de calcul de l’expression régulière :
Soit M = ( , Q , * , q0 , F) un DFA
• On définit Zi comme suit : Zi = {u  * / q0*u=qi}
Pour chaque état qi, on associe l’ensemble Zi.
On exprime Zi en fonction des Zj. (En général i=j ou i j)
Zi désigne tous les chemins conduisant de q0 à qi.
• T(M)= qiF Zi.

Exemple :
a a
q0 q1 q2
b b
Z1= {a, aba, aab,………}
Z0 = {ε, ab,abab……….}
Z2={aa, abaa, aaba, …….}
21

IV. Expressions régulières


Exemple : (suite)
Z0 = ε + Z1.b (1)
Z1 = Z0a + Z2b (2)
Z2 = Z1a (3)
(2)  Z1 = a + Z1ba + Z1ab
Z1 = a + Z1(ba +ab)
Donc d’après la proposition on a : Z1 = a(ba +ab)*
(1)  Z0 = ε + a(ba +ab)*b
(3) Z2 = a(ba +ab)*a
F={q2} donc T(M) = Z2
T(M) = a(ba +ab)*a

Remarque :
• On a: ε  Z0 car q0*ε = q0
• L’expression régulière n’est pas unique.
22

Vous aimerez peut-être aussi