Vous êtes sur la page 1sur 217

Langages et langages réguliers

1
Langages et langages réguliers
Définitions - Mots

Alphabet
Ensemble fini non vide de symboles (lettres) souvent notés A ou Σ

Exemples
I A := {a, b} alphabet composé de 2 lettres
I Σ := {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} alphabet de 10 lettres
I A := {a, b, c, d, e, . . . , x , y , z} alphabet de 26 lettres
I A := {◦, `, =} alphabet de 3 lettres

2
Langages et langages réguliers
Définitions - Mots

Soit A un alphabet.
Mot sur A
Suite finie de lettres de A:
I  pour le mot vide de longueur || = 0
I w = w1 w2 . . . wn mot de longueur |w | = n avec wi ∈ A

Exemples
I w = abbaba mot sur alphabet A = {a, b} de longueur 6
I w = 1664 mot sur Σ = {0, 1, 2, . . . , 9} de longueur 4

3
Langages et langages réguliers
Définitions - Mots

Soit A un alphabet.
Concaténation
Si u = u1 u2 . . . um et v = v1 v2 . . . vn alors
uv = u1 u2 . . . um v1 v2 . . . vn de longueur m + n

Mot miroir
Si u = u1 u2 . . . un alors u R = un un−1 . . . u1

Exemples
I la concaténation de 16 et 64 est 1664
I la concaténation de u = orni et v = thorynque est
ornithorynque
I le miroir de u = engager est u R = regagne

4
Langages et langages réguliers
Langages

Langage
L langage sur alphabet A est un ensemble de mots sur A

Exemples
Sur A = {a, b, c, d, . . . , z} alphabet:
I L1 langage des mots de longueur 4: toto ∈ L1 et zwpt ∈ L1
I L2 langage des mots du français: ornithorynque ∈ L2 et
mvtmjsun 6∈ L2
I L3 langage des mots de l’anglais: platypus ∈ L3 et
mvemjsun 6∈ L3
I L4 = {con, per}
I L5 = {fusion, version, sister}

5
Langages et langages réguliers
Langages

Opérations ensemblistes sur les langages


L et L0 langages sur A:
I L ∪ L0 : mots dans L ou dans L0
I L ∩ L0 : mots dans L et dans L0
I L \ L0 : mots dans L mais pas dans L0
I Lc : mots sur A pas dans L

6
Langages et langages réguliers
Langages

Exemples
I L1 ∪ L2 = L1 + L2 mots de longueur 4 ou du français:
ornithorynque, test, rpoi mais pas zaoiruowx
I L1 ∩ L2 mots de longueur 4 du français: test mais pas rpoi
ni ornithorynque
I L2 ∩ L3 mots français et anglais: sensible mais pas
ornithorynque ni platypus
I L2 \ L3 mots français mais pas anglais: ornithorynque mais
pas sensible ni platypus
I Lc1 mots de longueur différente de 4: ornithorynque, zpr, 

6
Langages et langages réguliers
Langages

Opérations rationnelles sur les langages


L et L0 langages sur A:
I LL0 concaténation des langages: mots obtenus en
concaténant un mot de L et un mot de L0
I Ln concaténation de n mots de L: L1 = L, L2 = LL,
L0 = {}
I L? concaténation de mots de L:
[
L? = Ln
n≥0

7
Langages et langages réguliers
Langages

Exemples
I L1 L1 mots de longueur 8
I L1 L2 mots de longueur 4 suivis d’un mot du français:
ultrornithorynque mais pas traduction
I L2 L2 concaténation de deux mots du français: soleil mais
pas traduction
I L4 L5 : confusion, conversion, consister, perfusion,
perversion, persister
I L?1 mots de longueur multiple de 4
I L?2 concaténation de mots du français: soleil, traduction
mais pas ultrornithorynque
I A? ensemble des mots sur A

7
Langages et langages réguliers
Langages

Quelques propriétés
I L+∅=∅+L=L
I L{} = {}L = L
I L∅ = ∅L = ∅

8
Langages et langages réguliers
Langages rationnels

Langages rationnels
Langages sur A obtenus à partir:
I des ensembles {a} pour a ∈ A lettre
I ensemble vide ∅ et {}
I opérateurs union, concaténation et étoile

Exemples
I {a}? {b} + {c} + {d} langage rationnel
I {b}? {b} + {c} + {} langage rationnel

En pratique: expressions régulières


I a? b + c + d, et b? b + c + 
I | utilisé au lieu de +
9
Langages et langages réguliers
Langages rationnels

Quelques propriétés
I tester si un mot est dans le langage représenté par une
expression régulière est rapide
I créer une expression régulière pour langage rationnel « facile »
I A(B + C ) = AB + AC et (A + B)C = AC + BC pour A, B, C
trois langages
I lemme d’Arden:

X = AX + B a une unique solution X = A? B

avec A, B langage et  6∈ A

10
Langages et langages réguliers
Langages rationnels

Exemple complet
L langage sur {a, b, c} où tout a est suivi plus tard d’un b:
acbaccb et aacb dans L mais pas acbacc

Modélisation
Lb : mots contenant au moins un b et où tout a est suivi plus tard
d’un b
(
L = aLb + (b + c)L + 
Lb = (a + c)Lb + bL

Résolution

Arden
Lb ==== (a + c)? bL ... L = (a(a + c)? b + b + c)?
11
Automates finis déterministes

12
Automates finis déterministes
Définitions

Automate fini déterministe


I un alphabet A
I un ensemble fini Q d’états
I un état initial q0 ∈ Q
I un ensemble d’états finaux F ⊆ Q
I une fonction de transition δ : Q × A → Q

Remarques
I δ(q, a) = q 0 : « de l’état q en lisant a l’automate arrive en q 0 »
I si δ totale alors automate complet

13
Automates finis déterministes
Définitions

Exemple et représentation graphique

A := {a, b} a
b
Q := {q0 , q1 , q2 }
q0 initial q0 q1

F := {q2 } b
δ a b a a
b
q0 q0 q1
q1 q2 q0
q2
q2 q0 q0

14
Automates finis déterministes
Définitions

Mot accepté
w = w1 w2 . . . wn accepté si
I q0 initial
I δ(q0 , w1 ) = q1
I δ(q1 , w2 ) = q2
..
.
I δ(qn−1 , wn ) = qn
I qn final

Langage accepté
L(A): ensemble des mots acceptés par automate A

Langages reconnaissables
Ensemble des langages acceptés par des automates
15
Automates finis déterministes
Exemples
a
b

q0 q1

b
a a
b

q2

I abaa 6∈ L(A):
a b a a
q0 −→ q0 −→ q1 −→ q2 −→ q0 6∈ F
I bababa ∈ L(A):
b a b a b a
q0 −→ q1 −→ q2 −→ q0 −→ q0 −→ q1 −→ q2 ∈ F
16
Automates finis déterministes
Exemples

Programme testant l’appartenance d’un mot


1 int accept ( char * w ){
2 int q ;
3 for ( q = 0; * w != ’ \0 ’; w ++) {
4 if (( q == 0) && (* w == ’a ’ ))
5 q = 0;
6 else if (( q == 0) && (* w == ’b ’ ))
7 q = 1;
8 else if (( q == 1) && (* w == ’a ’ ))
9 q = 2;
10 else if (( q == 1) && (* w == ’b ’ ))
11 q = 0;
12 else /* q = 2 */
13 q = 0;
14 }
15 return ( q == 2);
16 }
17
Automates finis déterministes
Exemples

Mots de longueur paire


a, b

q0 q1
a, b

Mots de longueur impaire


a, b

q0 q1
a, b

18
Automates finis déterministes
Exemples

Mots ayant au moins un b

a a, b

q0 b q1

Mots n’ayant pas de b

a a, b

q0 b q1

19
Automates finis déterministes
Exemples

Mots qui finissent par b

s0

20
Automates finis déterministes
Exemples

Mots qui finissent par b

s0

20
Automates finis déterministes
Exemples

Mots qui finissent par b

a
b

s0 s1

20
Automates finis déterministes
Exemples

Mots qui finissent par b

a
b

s0 s1
a

20
Automates finis déterministes
Exemples

Mots qui finissent par b

a b
b

s0 s1
a

20
Automates finis déterministes
Manipulation d’automates

Complémentaire
Si A déterministe complet reconnait L alors inverser états
finaux/non finaux produit automate qui reconnaît L

Exemple
I mots ayant au moins un b
a a, b

q0 b q1

I mots n’ayant pas de b


a a, b

q0 b q1
21
Automates finis déterministes
Manipulation d’automates

Automate produit et intersection


Si A1 et A2 déterministes reconnaissant L1 et L2 alors automate
produit A reconnaît L1 ∩ L2 avec:
I Q = Q 1 × Q 2 les états
I (q01 , q02 ) état initial
I F = F 1 × F 2 états finaux
I δ : (Q 1 × Q 2 ) × A → Q 1 × Q 2
((q 1 , q 2 ), a) 7→ (δ 1 (q 1 , a), δ 2 (q 2 , a))

22
Automates finis déterministes
Manipulation d’automates

Exemple automate produit


a b
b

s0 s1
a

q1 (q1 , s0 ) (q1 , s1 )
b

a, b a, b a a b a b b

a
q0 (q0 , s0 ) (q0 , s1 )

23
Automates finis déterministes
Manipulation d’automates

Automate produit et union


La même construction avec (q 1 , q 2 ) ∈ F si q 1 ∈ F 1 ou q 2 ∈ F 2
permet de reconnaître L1 ∪ L2 .
a b b
Exemple
s0 s1
a

q1 (q1 , s0 ) (q1 , s1 )
b

a, b a, b a a b a b b

a
q0 (q0 , s0 ) (q0 , s1 )

24
Automates finis déterministes
Des automates aux regexp

Théorème
Tout langage reconnu par un automate est rationnel.

Principe
A: automate déterministe
Lp : langage des mots acceptés à partir de l’état p
Il suffit de résoudre le système d’équations:
a1 a2
I si q final et q −→ q1 , q −→ q2 , etc.

Lq = a1 Lq1 + a2 Lq2 + . . . + an Lq qn + ε
a1 a2
I si q non final et q −→ q1 , q −→ q2 , etc.

Lq = a1 Lq1 + a2 Lq2 + . . . + an Lq qn

25
Automates finis déterministes
Des automates aux regexp

Exemple 1

a a, b

q0 b q1

(
L0 = aL0 + bL1
L1 = aL1 + bL1 + ε
d’où
L1 = (a + b)?
puis
L0 = a? b(a + b)?

26
Automates finis déterministes
Des automates aux regexp
Exemple 2

a b
b

s0 s1
a

(
L0 =

27
Automates finis déterministes
Des automates aux regexp
Exemple 2

a b
b

s0 s1
a

(
L0 = aL0 + bL1
L1 =

27
Automates finis déterministes
Des automates aux regexp
Exemple 2

a b
b

s0 s1
a

(
L0 = aL0 + bL1
L1 = aL0 + bL1 + ε

27
Automates finis déterministes
Des automates aux regexp
Exemple 2

a b
b

s0 s1
a

(
L0 = aL0 + bL1
L1 = aL0 + bL1 + ε
..
.
L0 = (a + bb ? a)? bb ?
ou aussi
L0 = (a + b)? b
27
Automates finis non
déterministes

28
Automates finis non déterministes
Définitions

Automate fini non déterministe


I un alphabet A
I un ensemble fini Q d’états
I un ensemble d’états initiaux I ⊆ Q
I un ensemble d’états finaux F ⊆ Q
I une fonction de transition δ : Q × A → P(Q)

Remarques
δ(q, a): « ensemble des états atteignables depuis q en lisant a »

29
Automates finis non déterministes
Définitions

Exemple

A := {a, b} a, b
b
Q := {q0 , q1 , q2 }
I := {q0 } initiaux q0 q1

F := {q2 }
b
δ a b a a
b a
q0 q0 q0 , q1
q1 q2 q0
q2 q0 , q1 q0 q2

30
Automates finis non déterministes
Définitions

Mot accepté
w = w1 w2 . . . wn accepté si
I q0 ∈ I un état initial
I δ(q0 , w1 ) 3 q1
I δ(q1 , w2 ) 3 q2
..
.
I δ(qn−1 , wn ) 3 qn
I qn ∈ F un état final

Langage accepté
L(A): ensemble des mots acceptés par automate A

Langages reconnaissables
Ensemble des langages acceptés par des automates non
déterministes 31
Automates finis non déterministes
Définitions
a, b
b

q0 q1

b
a a
b a

q2

I abaa 6∈ L(A):
a b a a
q0 −−→ q0 −−→ q0 −−→ q0 −−→ q0 6∈ F
a b a a
q0 −−→ q0 −−→ q1 −−→ q2 −−→ q0 6∈ F
a b a a
q0 −−→ q0 −−→ q1 −−→ q2 −−→ q1 6∈ F
32
Automates finis non déterministes
Définitions
a, b
b

q0 q1

b
a a
b a

q2

I baaa ∈ L(A):
b a a a
q0 −−→ q0 −−→ q0 −−→ q0 −−→ q0 6∈ F
b a a a
q0 −−→ q1 −−→ q2 −−→ q0 −−→ q0 6∈ F
b a a a
q0 −−→ q1 −−→ q2 −−→ q1 −−→ q2 ∈ F
32
Automates finis non déterministes
Définitions

Version non déterministe


a,e,g,l,m a,m,l,g,e

a m a l g a m e
q0 q1 q2 q3 q4 q5 q6 q7 q8

Version déterministe
a a

a
e,g,l,m a a,m,l,g,e
a
e,g,l m
a m a l g a m e
q0 q1 q2 q3 q4 q5 q6 q7 q8

e,g,l,m
e,g

e,l,m

e,g,l,m

e,g,l
g,l,m
33
Automates finis non déterministes
Constructions d’automates

Automate pour l’union


Si A1 et A2 automates (non) déterministes reconnaissant L1 et L2
alors A reconnaît L1 ∪ L2 avec:
I Q = Q1 ∪ Q2 les états
I I = I1 ∪ I2 états initiaux
I F = F1 ∪ F2 états finaux
I δ = δ1 ∪ δ2 les transitions

34
Automates finis non déterministes
Constructions d’automates

Exemple d’automate pour l’union

a, b a, b
b b

q1 q2 q4 q5

b
a a a
a a a
b a

q3 q6 q7

b
b

35
Automates finis non déterministes
Constructions d’automates

Automate pour la concaténation


Si A1 et A2 automates (non) déterministes reconnaissant L1 et L2
alors A reconnaît L1 L2 avec:
I Q = Q1 ∪ Q2 les états
I I = I1 états initiaux
I δ les transitions: celles de δ1 et de δ2 plus

qi initial de A2 
 

 
 
a a
si qi −−→ q ∈ δ2 on ajoute qf −−→ q

 

qf final de A1
 

les finaux de A1 se comportent comme les initiaux de A2


I états finaux
I si ε 6∈ L2 : F = F2
I si ε ∈ L2 : F = F1 ∪ F2
36
Automates finis non déterministes
Constructions d’automates

Exemple 1
a, b a, b
b b

q1 q2 q4 q5

b
a a a
a a a
b a

q3 q6 b q7

37
Automates finis non déterministes
Constructions d’automates

Exemple 1
a, b a, b
b b

q1 q2 q4 q5

b
a a a
a a a
b a

q3 q6 b q7

37
Automates finis non déterministes
Constructions d’automates

Exemple 1
a, b a, b
b b

q1 q2 q4 q5

b
a a b a
a a a
b a a, b

q3 q6 b q7

37
Automates finis non déterministes
Constructions d’automates

Exemple 1
a, b a, b
b b

q1 q2 q4 q5

b
a a b a
a a a
b a a, b

q3 q6 b q7

37
Automates finis non déterministes
Constructions d’automates

Exemple 1
a, b a, b
b b

q1 q2 q4 q5

b
a a a, b a
a a a
b a a, b

q3 q6 b q7

37
Automates finis non déterministes
Constructions d’automates

Exemple 1
a, b a, b
b b

q1 q2 q4 q5

b
a a a, b a
a a a
b a a, b

q3 q6 b q7

b ε ∈ L2

37
Automates finis non déterministes
Constructions d’automates

Exemple 1
a, b a, b
b b

q1 q2 q4 q5

b
a a a, b a
a a a
b a a, b

q3 q6 b q7

37
Automates finis non déterministes
Constructions d’automates

Exemple 2
a, b a, b
b b

q4 q5 q1 q2

a b
a a a
a a
b a

q6 q7 q3

b
b

b a a b a
q4 →
− q5 →
− q7 →
− q5 q1 →
− q2 →
− q3

38
Automates finis non déterministes
Constructions d’automates

Exemple 2
a, b a, b
b b

q4 q5 q1 q2

a b
a a a
a a
b a

q6 q7 q3

b
b

b a a b a
q4 →
− q5 →
− q7 →
− q5 q1 →
− q2 →
− q3

38
Automates finis non déterministes
Constructions d’automates
b
Exemple 2
a, b a, b
b b
a, b
q4 q5 q1 q2

a b
a a a
a a
b a

q6 q7 q3

b
b

b a a b a
q4 →
− q5 →
− q7 →
− q5 q1 →
− q2 →
− q3

38
Automates finis non déterministes
Constructions d’automates
b
Exemple 2
a, b a, b
b b
a, b
q4 q5 q1 q2

a b
a, b
a a a
a a
b a

q6 q7 q3

b
b

b a a b a
q4 →
− q5 →
− q7 →
− q5 q1 →
− q2 →
− q3

38
Automates finis non déterministes
Constructions d’automates
b
Exemple 2
a, b a, b
b b
a, b
q4 q5 q1 q2

a b
a, b
a a a
a a
b a

q6 q7 q3

b
b
ε 6∈ L2
b

b a a b a
q4 →
− q5 →
− q7 →
− q5 q1 →
− q2 →
− q3

38
Automates finis non déterministes
Constructions d’automates
b
Exemple 2
a, b a, b
b b
a, b
q4 q5 q1 q2

a b
a, b
a a a
a a
b a

q6 q7 q3

b
b

b a a b a
q4 →
− q5 →
− q7 →
− q5 q1 →
− q2 →
− q3

38
Automates finis non déterministes
Constructions d’automates
b
Exemple 2
a, b a, b
b b
a, b
q4 q5 q1 q2

a b
a, b
a a a
a a
b a

q6 q7 q3

b
b

b a a b a
q4 →
− q5 →
− q7 →
− q5 q1 →
− q2 →
− q3
b a a b a
q4 →
− q5 →
− q7 →
− q5 −−−−−−−−−−−−−−−−→ q2 →
− q3 38
Automates finis non déterministes
Constructions d’automates

Automate pour l’étoile


Si A1 automate (non) déterministe reconnaissant L1 alors A
reconnaît L?1 avec:
I Q = Q1 ∪ {q0 } les états
I I = {q0 } état initial
I F = F1 ∪ {q0 } états finaux
I δ les transitions: celles de δ1 plus

qi initial de A1 
 
 
 a
 qf −−


a

 →q 
si qi −−→ q ∈ δ1 on ajoute a
 q −−
0 →q

 
 
qf final de A1
 

les finaux de A et q0 se comportent comme les initiaux de A1

39
Automates finis non déterministes
Constructions d’automates

Exemple 1

a, b
b

q1 q2

a b a b
q1 →
− q1 −
→ q2 →
− q3

b a a a
q1 −
→ q2 →
− q3 b a
b a a b a
q1 −
→ q2 →
− q3 →
− q1 −
→ q2 →
− q3

q3

40
Automates finis non déterministes
Constructions d’automates

Exemple 1

a, b
b

q0 q1 q2

a b a b
q1 →
− q1 −
→ q2 →
− q3

b a a a
q1 −
→ q2 →
− q3 b a
b a a b a
q1 −
→ q2 →
− q3 →
− q1 −
→ q2 →
− q3

q3

40
Automates finis non déterministes
Constructions d’automates

Exemple 1

a, b
b

q0 q1 q2

a b a b
q1 →
− q1 −
→ q2 →
− q3

b a a a
q1 −
→ q2 →
− q3 b a
b a a b a
q1 −
→ q2 →
− q3 →
− q1 −
→ q2 →
− q3

q3

40
Automates finis non déterministes
Constructions d’automates

Exemple 1
b

a, b
b
a, b
q0 q1 q2

a b a b
q1 →
− q1 −
→ q2 →
− q3

b a a a
q1 −
→ q2 →
− q3 b a
b a a b a
q1 −
→ q2 →
− q3 →
− q1 −
→ q2 →
− q3

q3

40
Automates finis non déterministes
Constructions d’automates

Exemple 1
b

a, b
b
a, b
q0 q1 q2

a b a b
q1 →
− q1 −
→ q2 →
− q3

b a a a
q1 −
→ q2 →
− q3 b a, b
b a a b a
q1 −
→ q2 →
− q3 →
− q1 −
→ q2 →
− q3

q3

40
Automates finis non déterministes
Constructions d’automates

Exemple 1
b

a, b
b
a, b
q0 q1 q2

a b a b
q1 →
− q1 −
→ q2 →
− q3

b a a a
q1 −
→ q2 →
− q3 b a, b
b a a b a
q1 −
→ q2 →
− q3 →
− q1 −
→ q2 →
− q3

q3

40
Automates finis non déterministes
Constructions d’automates

Exemple 1
b

a, b
b
a, b
q0 q1 q2

a b a b
q0 →
− q1 −
→ q2 →
− q3

b a a a

→ q2 →
− q3 b a, b
b a a b a

→ q2 →
− q3 →
− q1 −
→ q2 →
− q3

q3

40
Automates finis non déterministes
Constructions d’automates

Exemple 2

a, b b

q5
q4
a

a a
a

q6 q7

b
b

41
Automates finis non déterministes
Constructions d’automates

Exemple 2

a, b b

q5
q4
a

q0 a a
a

q6 q7

b
b

41
Automates finis non déterministes
Constructions d’automates

Exemple 2

a, b b

q5
q4
a

q0 a a
a

q6 q7

b
b

41
Automates finis non déterministes
Constructions d’automates

Exemple 2
b

a, b b

q5
q4
a, b a

q0 a a
a

q6 q7

b
b

41
Automates finis non déterministes
Constructions d’automates

Exemple 2
b
b
a, b b

a, b q5
q4
a, b a

q0 a a
a

q6 q7

b
b

41
Automates finis non déterministes
Constructions d’automates

Exemple 2
b
b
a, b b

a, b q5
q4
a, b a, b

q0 a a
a, b

q6 q7

b
b

41
Automates finis non déterministes
Constructions d’automates

Exemple 2
b
b
a, b b

a, b q5
q4
a, b a, b

q0 a a
a, b

q6 q7

b
b

41
Automates finis non déterministes
Constructions d’automates

Exemple 2
a, b
b
a, b b

a, b q5
q4
a, b a, b

q0 a a
a, b

q6 q7

b
b
b
41
Automates finis non déterministes
Constructions d’automates

Exemple 2
a, b
a, b
a, b b

a, b q5
q4
a, b a, b

q0 a, b a
a, b

q6 q7

b
b
b
41
Automates finis non déterministes
Constructions d’automates

Exemple 2
a, b
a, b
a, b b

a, b q5
q4
a, b a, b

q0 a, b a
a, b

q6 q7

b
b
b
41
Automates finis non déterministes
Constructions d’automates

Corollaire
Tout langage rationnel est reconnu par un automate non
déterministe.

Exemple: c(a + bc)?

q1 b q2 q3 c q4

42
Automates finis non déterministes
Constructions d’automates

Corollaire
Tout langage rationnel est reconnu par un automate non
déterministe.

Exemple: c(a + bc)?


c

q1 b q2 q3 c q4

42
Automates finis non déterministes
Constructions d’automates

Corollaire
Tout langage rationnel est reconnu par un automate non
déterministe.

Exemple: c(a + bc)?

q1 b q2 c q4

42
Automates finis non déterministes
Constructions d’automates

Corollaire
Tout langage rationnel est reconnu par un automate non
déterministe.

Exemple: c(a + bc)?

q1 b q2 c q4

q5 a q6

42
Automates finis non déterministes
Constructions d’automates

Corollaire
Tout langage rationnel est reconnu par un automate non
déterministe.

Exemple: c(a + bc)?

b
q1 b q2 c q4
b
q0 b a
q5 a q6

a
a

42
Automates finis non déterministes
Constructions d’automates

Corollaire
Tout langage rationnel est reconnu par un automate non
déterministe.

Exemple: c(a + bc)?

q2 c q4
b b
q0 b a
a q6

42
Automates finis non déterministes
Constructions d’automates

Corollaire
Tout langage rationnel est reconnu par un automate non
déterministe.

Exemple: c(a + bc)?

q7 c q8 b q2 c q4
b b
q0 b a
a q6
a

42
Automates finis non déterministes
Constructions d’automates

Corollaire
Tout langage rationnel est reconnu par un automate non
déterministe.

Exemple: c(a + bc)?

q7 c q8 b q2 c q4
b
b a
q6
a

42
Automates finis non déterministes
Du non-déterminisme au déterminisme
Principe a, b
b

q0 q1

b
b a
a a

q2

Simuler toutes les exécutions possibles:


a b a a a
q0 −−→ q0 −−→ q0 , q1 −−→ q0 , q2 −−→ q0 , q1 −−→ q0 , q2
b b a
−−→ q0 , q1 −−→ q0 , q1 −−→ q0 , q2
43
Automates finis non déterministes
Du non-déterminisme au déterminisme

Méthode
1. S0 := I état initial
2. pour chaque état S et chaque lettre a, calculer S 0 ensemble
des états atteints depuis les états de S sur a
3. continuer tant que de nouveau états sont découverts
4. les états finaux sont les ensembles contenant au moins un état
final

44
Automates finis non déterministes
Du non-déterminisme au déterminisme

Exemple 1
a, b
b

q0 q1

b
b a
a a

q2
a b
S0 = {q0 }

45
Automates finis non déterministes
Du non-déterminisme au déterminisme

Exemple 1
a, b
b

q0 q1

b
b a
a a

q2
a b
S0 = {q0 } {q0 } = S0 {q0 , q1 } = S1

45
Automates finis non déterministes
Du non-déterminisme au déterminisme

Exemple 1
a, b
b

q0 q1

b
b a
a a

q2
a b
S0 = {q0 } {q0 } = S0 {q0 , q1 } = S1
S1 = {q0 , q1 }

45
Automates finis non déterministes
Du non-déterminisme au déterminisme

Exemple 1
a, b
b

q0 q1

b
b a
a a

q2
a b
S0 = {q0 } {q0 } = S0 {q0 , q1 } = S1
S1 = {q0 , q1 } {q0 , q2 } = S2

45
Automates finis non déterministes
Du non-déterminisme au déterminisme

Exemple 1
a, b
b

q0 q1

b
b a
a a

q2
a b
S0 = {q0 } {q0 } = S0 {q0 , q1 } = S1
S1 = {q0 , q1 } {q0 , q2 } = S2 {q0 , q1 } = S1
S2 = {q0 , q2 }

45
Automates finis non déterministes
Du non-déterminisme au déterminisme

Exemple 1
a, b
b

q0 q1

b
b a
a a

q2
a b
S0 = {q0 } {q0 } = S0 {q0 , q1 } = S1
S1 = {q0 , q1 } {q0 , q2 } = S2 {q0 , q1 } = S1
S2 = {q0 , q2 } {q0 , q1 } = S1 {q0 , q1 } = S1

45
Automates finis non déterministes
Du non-déterminisme au déterminisme

Exemple 2
a b
q0 initial q0 q0 , q2 q1
q1 q0 q2
q2 final q2 q0 , q1
Version déterministe:
a b
S0 = {q0 } {q0 , q2 } = S1 {q1 } = S2
S1 = {q0 , q2 } {q0 , q1 , q2 } = S3 {q1 } = S2
S2 = {q1 } {q0 } = S0 {q2 } = S4
S3 = {q0 , q1 , q2 } {q0 , q1 , q2 } = S3 {q1 , q2 } = S5
S4 = {q2 } {q0 , q1 } = S6 ∅ = S7
S5 = {q1 , q2 } {q0 , q1 } = S6 {q2 } = S4
S6 = {q0 , q1 } {q0 , q2 } = S1 {q1 , q2 } = S5
S7 =∅ ∅ = S7 ∅ = S7

S0 initial S1 , S3 , S4 , S5 finaux
46
Compléments sur les automates

47
Compléments sur les automates
Minimisation

Mots sur {a, b} avec nombre impair de b


a a a a a
b b
q0 q1 q0 b q1 q2
A1 A2
b b

a a a a
b
q0 a q1 q2 q0 b q1
A3 A4
b
b b
b
q3 b q2

a a
A1 minimal (complet) en nombre d’états
48
Compléments sur les automates
Minimisation

Rappel
Lq : langage des mots acceptés à partir de l’état q

Principe
Si p et q états tels que Lp = Lq alors p et q peuvent être fusionnés

Proposition
Si A automate déterministe complet où:
I Lq 6= Lq0 pour tout q 6= q 0
I tous les états sont atteignables (depuis q0 )
alors A est minimal (complet) en nombre d’états

49
Compléments sur les automates
Minimisation

Problème
Partitionner l’ensemble des états tels que q et q 0 dans la même
partie ssi Lq = Lq0

Algorithme de Moore
Principe: raffiner une partition
1. Séparer états acceptants (contenant ε) et non acceptants
2. Diviser une partie S si pour une lettre a des états de S
arrivent dans des parties différentes
3. Répéter 2 tant qu’il y a des changements

50
Compléments sur les automates
Minimisation

Exemple

0 1? 2 3? 4 5 6
a 1 3 1 3 1 2 4
b 3 0 6 6 5 4 2

51
Compléments sur les automates
Minimisation

Exemple

0 1? 2 3? 4 5 6
a 1 3 1 3 1 2 4
b 3 0 6 6 5 4 2

1. Début
A B
1 3 0 2 4 5 6

51
Compléments sur les automates
Minimisation

Exemple

0 1? 2 3? 4 5 6
a 1 3 1 3 1 2 4
b 3 0 6 6 5 4 2

1. Début
A B
1 3 0 2 4 5 6
2. Lettre a
A B
1 3 0 2 4 5 6
a A A A A A B B

51
Compléments sur les automates
Minimisation

Exemple

0 1? 2 3? 4 5 6
a 1 3 1 3 1 2 4
b 3 0 6 6 5 4 2

2. Lettre a
A B
1 3 0 2 4 5 6
a A A A A A B B
3. Division
A C D
1 3 0 2 4 5 6

51
Compléments sur les automates
Minimisation

Exemple

0 1? 2 3? 4 5 6
a 1 3 1 3 1 2 4
b 3 0 6 6 5 4 2

3. Division
A C D
1 3 0 2 4 5 6
4. Lettre b
A C D
1 3 0 2 4 5 6
b C D A D D C C

51
Compléments sur les automates
Minimisation

Exemple

0 1? 2 3? 4 5 6
a 1 3 1 3 1 2 4
b 3 0 6 6 5 4 2

4. Lettre b
A C D
1 3 0 2 4 5 6
b C D A D D C C
5. Division
E F G H D
1 3 0 2 4 5 6

51
Compléments sur les automates
Minimisation

Exemple

0 1? 2 3? 4 5 6
a 1 3 1 3 1 2 4
b 3 0 6 6 5 4 2

5. Division
E F G H D
1 3 0 2 4 5 6
6. Lettre a
E F G H D
1 3 0 2 4 5 6
a F F E E E H H

51
Compléments sur les automates
Minimisation

Exemple

0 1? 2 3? 4 5 6
a 1 3 1 3 1 2 4
b 3 0 6 6 5 4 2

6. Lettre a
E F G H D
1 3 0 2 4 5 6
a F F E E E H H
7. Lettre b
E F G H D
1 3 0 2 4 5 6
b G D F D D H H

51
Compléments sur les automates
Minimisation

Exemple

0 1? 2 3? 4 5 6
a 1 3 1 3 1 2 4
b 3 0 6 6 5 4 2

7. Lettre b
E F G H D
1 3 0 2 4 5 6
b G D F D D H H
8. Finalement

E? F? G H D
a F F E E H
b G D F D H

51
Compléments sur les automates
Fonctionnement de grep et Lex/jflex

Principe
À partir d’une expression régulière:
1. construction d’un automate non-déterministe
2. déterminisation de l’automate
3. minimisation de l’automate
4. utilisation de l’automate pour afficher/traiter les lignes qui
correspondent

En pratique
Diverses optimisations et modifications, p. ex.:
I recherche des lignes contenant un sous-texte vérifiant une
expression régulière
I différentiation des états acceptants (cas de Lex/Flex)
I etc.
52
Compléments sur les automates
Langages non rationnels

Méthode 1
Si L rationnel alors:
I il est reconnu par un automate A à n états
I soit w dans L avec plus de n lettres
I la reconnaissance de w par A passe au moins deux fois par le
même état q
wi . . . wj

w1 . . . wi−1 wj+1 . . . wn
q0 q qf
I on peut alors répéter le sous-mot k fois (on pompe)

w1 . . . wi−1 (wi . . . wj )k wj+1 . . . wn ∈L

53
Compléments sur les automates
Langages non rationnels

Méthode 1: exemple 1
L = {ak b k | k ∈ N} n’est pas rationnel.

Par l’absurde, supposons L rationnel, alors:


I il est reconnu par un automate A à n états
I soit w := an+1 b n+1 dans L
I la reconnaissance de an+1 par A passe au moins deux fois par
le même état q ak

q0 al q am b n+1 qf

avec l + k + m = n + 1 et k > 0
I alors (en pompant 2 fois) on a aussi al ak ak am b n+1 ∈ L avec
l + k + k + m = n + 1 + k > n + 1, contradiction

54
Compléments sur les automates
Langages non rationnels

Méthode 1: exemple 2
L = {ak b l | k > l} n’est pas rationnel.

Par l’absurde, supposons L rationnel, alors:


I il est reconnu par un automate A à n états
I soit w := an+1 b n dans L
I la reconnaissance de an+1 par A passe au moins deux fois par
le même état q ak

q0 al q am b n qf

avec l + k + m = n + 1 et k > 0
I alors (en pompant 0 fois) on a aussi al am b n ∈ L avec
l + m ≤ n, contradiction

55
Compléments sur les automates
Langages non rationnels

Méthode 1: exemple 2 bis


L = {ak b l | k > l} n’est pas rationnel.

Par l’absurde, supposons L rationnel, alors:


I il est reconnu par un automate A à n états
I soit w := an+2 b n+1 dans L
I la reconnaissance de b n+1 par A passe au moins deux fois par
le même état q bk

q0 an+2 b l q bm qf

avec l + k + m = n + 1 et k > 0
I alors (en pompant 2 fois) on a aussi an+2 b l b k b k b m ∈ L avec
l + k + k + m = n + 1 + k ≥ n + 2, contradiction

56
Compléments sur les automates
Langages non rationnels

Méthode 2
Si L rationnel alors:
I L, L? , etc. rationnels
I soit L0 rationnel alors L ∩ L0 , L ∪ L0 , LL0 , etc. sont rationnels

57
Compléments sur les automates
Langages non rationnels

Méthode 2: exemple 1
L = {ak b l | k 6= l} n’est pas rationnel.

Par l’absurde, supposons L rationnel, alors:


I L est rationnel
I soit L0 := a? b ? rationnel
I alors L0 \ L = L0 ∩ L rationnel
I or L0 \ L = a? b ? \ L = {ak b k | k ∈ N} qui n’est pas rationnel,
contradiction

Attention méthode 1 inadaptée


Pomper sur les a n’assure pas de sortir de L, de même sur les b.

58
Compléments sur les automates
Langages non rationnels

Méthode 2: exemple 2
L = {an b m | n = m ou alors n × m est pair} n’est pas rationnel.
n = m et n et m impairs, ou bien m 6= n et (n ou m est pair)

Par l’absurde, supposons L rationnel, alors:


I soit L0 := (aa)? b ? + a? (bb)? rationnel
I alors L \ L0 rationnel
I or L \ L0 = {ak b k | k impair} qui n’est pas rationnel (par
méthode 2), contradiction

Attention méthode 1 inadaptée


Pomper sur les a d’un mot avec un nombre pair de a peut produire
un mot avec un nombre pair de a, donc n’assure pas de sortir de L.
59
Grammaires (hors contexte)

60
Grammaires (hors contexte)
Définitions et premières propriétés

Grammaire hors contexte


I un alphabet T des symboles terminaux
I un alphabet V des symboles non-terminaux
I un symbole de départ S de V
I un ensemble fini de règles X → w où
I X ∈ V et
I w mot sur V ∪ T

Exemples

S → ST
S → SS | a | T
S → a
T → TT | bS
T → bS
G2
G1
61
Grammaires (hors contexte)
Définitions et premières propriétés

Réécriture
u ⇒ v avec u, v mots sur V ∪ T si
I u = rXt
I v = rwt
I X →w

Exemples
S → ST
I aS ⇒ aa
S → a
I T T ⇒ T bS T → bS

G1

62
Grammaires (hors contexte)
Définitions et premières propriétés

Dérivation
u ⇒n v avec u, v mots sur V ∪ T s’il existe u0 , u1 , . . . , un
I u = u0
I u0 ⇒ u1
..
.
I un−1 ⇒ un
I v = un
u ⇒? v s’il existe n tel que u ⇒n v

Exemple
I S ⇒? ababa car: S → ST
S → a
S ⇒ ST ⇒ STT T → bS
⇒ aT T ⇒ aT bS ⇒ aT ba
⇒ abSba ⇒ ababa G1
63
Grammaires (hors contexte)
Définitions et premières propriétés

Langage algébrique
I L(G) = {u ∈ T ? | S ⇒? u} langage engendré par G
I langage algébrique: engendré par une grammaire hors-contexte

Exemples
I ababa ∈ L(G1 ) car S ⇒? ababa S → ST
I b 6∈ L(G1 ) car pour tout n S → a
T → bS
si S ⇒n u alors u commence par a ou S
G1
(par récurrence sur n)

64
Grammaires (hors contexte)
Définitions et premières propriétés

Exemple
S → aSb | 
n n
L(G3 ) = {a b | n ∈ N}
G3
car pour tout n

S ⇒n u ⇐⇒ u = an Sb n ou u = an−1 b n−1

I n=0
⇒ S ⇒0 S donc u = S = a0 Sb 0 convient

⇐ I si u = a0 Sb 0 = S alors on a bien S ⇒0 u
I le cas u = a0−1 b 0−1 ne peut pas arriver

65
Grammaires (hors contexte)
Définitions et premières propriétés

Exemple
S → aSb | 
n n
L(G3 ) = {a b | n ∈ N}
G3
car pour tout n

S ⇒n u ⇐⇒ u = an Sb n ou u = an−1 b n−1

I récurrence: soit n tel que la propriété est vérifiée


⇒ supposons S ⇒n+1 u,
alors S ⇒ aSb ⇒n u avec u = au 0 b et S ⇒n u 0 ,
donc par hypothèse de récurrence:
I soit u 0 = an Sb n et alors u = an+1 Sb n+1 ,

I ou bien u 0 = an−1 b n−1 et alors u = an b n


65
Grammaires (hors contexte)
Définitions et premières propriétés

Exemple
S → aSb | 
n n
L(G3 ) = {a b | n ∈ N}
G3
car pour tout n

S ⇒n u ⇐⇒ u = an Sb n ou u = an−1 b n−1

I récurrence: soit n tel que la propriété est vérifiée


⇐ I si u = an+1 Sb n+1 alors S ⇒ aSb ⇒n an+1 Sb n+1
I si u = an b n alors S ⇒ aSb ⇒n an b n

65
Grammaires (hors contexte)
Définitions et premières propriétés

Propriété
Tout langage rationnel est algébrique

Principe: simuler automate avec grammaire


I symboles terminaux: alphabet de l’automate
I symboles non-terminaux: les états de l’automate
I symbole de départ: état intial de l’automate
I règles:
a
I pour chaque transition q → − q 0 une règle

q → aq 0

I pour chaque état final q une règle

q→
66
Grammaires (hors contexte)
Définitions et premières propriétés

Exemple
a
b

Q0 Q1

b Q0 → aQ0 | bQ1
a a Q1 → aQ2 | bQ0
b
Q2 → aQ0 | bQ0 | 
Q2

Q0 ⇒ aQ0 ⇒ abQ1 ⇒ abbQ0 ⇒ abbbQ1 ⇒ abbbaQ2 ⇒ abbba

67
Grammaires (hors contexte)
Arbres de dérivation

Arbre de dérivation
I racine: symbole de départ
I nœuds internes: symboles non terminaux
I si X nœud interne avec fils w1 , w2 , . . . , wn alors
X → w1 w2 . . . wn règle

Exemples
S
S T S → ST
S → a
S T b S T → bS
a b S a
G1
a

68
Grammaires (hors contexte)
Arbres de dérivation

Arbre de dérivation
I racine: symbole de départ
I nœuds internes: symboles non terminaux
I si X nœud interne avec fils w1 , w2 , . . . , wn alors
X → w1 w2 . . . wn règle

Exemples
S
S → ST S T
S → a
T → bS S T b S
S T b S S T
G1
b S a
a
68
Grammaires (hors contexte)
Arbres de dérivation

Arbre de dérivation et mot associé


I mot associé à l’arbre: feuilles de gauche à droite
I arbre total: que des terminaux aux feuilles
I arbre partiel: au moins une feuille avec non terminal

Exemples
S S
S T S T
S T b S S T b S
a b S a S T b S S T
a b S a
a
arbre total pour ababa arbre partiel pour SbabSbaT
69
Grammaires (hors contexte)
Arbres de dérivation

Propriété
L(G) = mots correspondants à des arbres de dérivations totaux

Exemples
S
S T S ⇒ ST
⇒ aT
a b S ⇒ abS
S T ⇒ abST
⇒ abaT
a b S ⇒ ababS
a ⇒ ababa

70
Grammaires (hors contexte)
Arbres de dérivation

Grammaire ambigüe
Au moins un mot admet plusieurs arbres de dérivation

Exemple
S S
S T S T
a b S S T b S
S T a b S a
a b S a
a
deux arbres de dérivation pour ababa donc G1 ambigüe

71
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Principe en trois étapes pour un mot w1 w2 . . . wn


1. Transformation de la grammaire: que des règles de la forme

X → YZ
X → Y
X → a

2. Calcul des clôtures

Cl(X ) : ensemble des Y tels que Y ⇒? X

3. Remplissage table T [i, j]

T [i, j] : ensemble des X tels que X ⇒? wi . . . wi+j

d’où S ⇒? w1 w2 . . . wn ssi T [1, n − 1] contient S


72
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Étape 1: Transformation de la grammaire


Que des règles de la forme X → YZ
X → Y
X → a

Exemple

S → TS | Ta
T → aU | b
U → S | UTU | cT

G4

73
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Étape 1: Transformation de la grammaire


Que des règles de la forme X → YZ
X → Y
X → a

Exemple

S → TS | Ta I U → UTU devient
T → aU | b
U → RU
U → S | UTU | cT
R → UT
G4

73
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Étape 1: Transformation de la grammaire


Que des règles de la forme X → YZ
X → Y
X → a

Exemple

S → TS | Ta I S → Ta devient
T → aU | b
S → TA
U → S | RU | cT
A → a
R → UT
I T → aU devient
G40
T → AU

I etc.
73
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Étape 1: Transformation de la grammaire


Que des règles de la forme X → YZ
X → Y
X → a

Exemple

S → TS | TA Initialement:
T → AU | b
S → TS | Ta
U → S | RU | CT
T → aU | b
R → UT
U → S | UTU | cT
A → a
C → c G4
G40

73
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Étape 2: calcul des clôtures


Cl(X ) : ensemble des Y tels que Y ⇒? X

Exemple
S → TS | TA X Cl(X )
T → AU | b
S S
U → S | RU | CT
T T
R → UT
U U
A → a
R R
C → c
A A
G40 C C

74
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Étape 2: calcul des clôtures


Cl(X ) : ensemble des Y tels que Y ⇒? X

Exemple
S → TS | TA X Cl(X )
T → AU | b
S S
U → S | RU | CT
T T
R → UT
U U
A → a
R R
C → c
A A
G40 C C

74
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Étape 2: calcul des clôtures


Cl(X ) : ensemble des Y tels que Y ⇒? X

Exemple
S → TS | TA X Cl(X )
T → AU | b
S S, U
U → S | RU | CT
T T
R → UT
U U
A → a
R R
C → c
A A
G40 C C

74
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Étape 3: remplissage table T [i, j]


T [i, j] : ensemble des X tels que X ⇒? wi . . . wi+j

Exemple
a b a b c b b a
S → TS | TA
T → AU | b A T A T C T T A
U → S | RU | CT
R → UT
A → a
C → c

G40

Cl(S) = {U, S}

i les colonnes, j les lignes

75
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Étape 3: remplissage table T [i, j]


T [i, j] : ensemble des X tels que X ⇒? wi . . . wi+j

Exemple
a b a b c b b a
S → TS | TA
T → AU | b A T A T C T T A
U → S | RU | CT S U S
R → UT
A → a
C → c

G40

Cl(S) = {U, S}

i les colonnes, j les lignes

75
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Étape 3: remplissage table T [i, j]


T [i, j] : ensemble des X tels que X ⇒? wi . . . wi+j

Exemple
a b a b c b b a
S → TS | TA
T → AU | b A T A T C T T A
U → S | RU | CT S,U U S,U
R → UT
A → a
C → c

G40

Cl(S) = {U, S}

i les colonnes, j les lignes

75
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Étape 3: remplissage table T [i, j]


T [i, j] : ensemble des X tels que X ⇒? wi . . . wi+j

Exemple
a b a b c b b a
S → TS | TA
T → AU | b A T A T C T T A
U → S | RU | CT S,U U S,U
R → UT T R R S
A → a
C → c

G40

Cl(S) = {U, S}

i les colonnes, j les lignes

75
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Étape 3: remplissage table T [i, j]


T [i, j] : ensemble des X tels que X ⇒? wi . . . wi+j

Exemple
a b a b c b b a
S → TS | TA
T → AU | b A T A T C T T A
U → S | RU | CT S,U U S,U
R → UT T R R S,U
A → a
C → c

G40

Cl(S) = {U, S}

i les colonnes, j les lignes

75
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Étape 3: remplissage table T [i, j]


T [i, j] : ensemble des X tels que X ⇒? wi . . . wi+j

Exemple
a b a b c b b a
S → TS | TA
T → AU | b A T A T C T T A
U → S | RU | CT S,U U S,U
R → UT T R R S,U
A → a
C → c
U
G40 T R

Cl(S) = {U, S} S,U


i les colonnes, j les lignes

75
Grammaires (hors contexte)
Algorithme CYK (cas sans )

Étape 3: remplissage table T [i, j]


T [i, j] : ensemble des X tels que X ⇒? wi . . . wi+j

Exemple
a b a b c b b a
S → TS | TA
T → AU | b A T A T C T T A
U → S | RU | CT S,U U S,U
R → UT T R R S,U
A → a
C → c
U
G40 T R

Cl(S) = {U, S} S,U


i les colonnes, j les lignes donc S ⇒? ababcbba
75
Grammaires (hors contexte)
Algorithme CYK (cas sans )
Propriétés
I complexité en O(n3 ): O(n) pour chacune des O(n2 ) cases
I arbre de dérivation se déduit de la table

Exemple a b a b c b b a
A T A T C T T A
S U S
U
R
U
T
S
76
Automates à pile

77
Automates à pile
Définitions
Automate à pile non déterministe
I un alphabet A
I un ensemble fini Q d’états
I un état initial q0
I un ensemble d’états finaux F ⊆ Q
I un alphabet des symboles de la pile Γ
I un symbole de pile initial Z
I une fonction de transition δ : Q × (A ∪ {}) × Γ → P(Q × Γ? )

Remarques
I δ(q, a, X ) contient (q 0 , W ) signifie: « de l’état q en lisant a
avec le symbole X sur la pile, on peut arriver dans l’état q 0 en
remplaçant X par W sur la pile »
a,X→W
−−−→ q 0
I sur l’automate la transition sera notée: q −
78
Automates à pile
Définitions

Exemple (représentation graphique)

a, Z → Z b, Z → A
a, B → BB

q0 q1
a, B → CB
a, A →

AB
b, A →  →
B

A
a,
A

B

B
b,
, A → AA q2

79
Automates à pile
Définitions

Exemple (représentation tabulaire)


q0 a b  q1 a b  q2 a b 
Z q0 , Z q1 , A Z Z
A A q2 , AB A q0 , BA q0 ,  q2 , AA
B q0 , BB B q0 , CB B q1 , B

ou bien en un seul tableau:


δ q0 , Z q0 , A q0 , B q1 , Z q1 , A q1 , B q2 , Z q2 , A q2 , B
a q0 , Z q0 , BB q2 , AB q0 , CB q0 , BA
b q1 , A q0 ,  q1 , B
 q2 , AA

et avec q0 état initial, q2 état final et Z symbole de pile initial

80
Automates à pile
Définitions

Définitions
I configuration: un état et une pile (q, P)
a
− (q 0 , P 0 )
I transition: (q, P) |→
« de la configuration (q, X ) en lisant a on atteint (q 0 , W ) »
w1 ...wn
I suite de transitions: (q, P) |−−−−→ (q 0 , P 0 ) si
w1
I (q, P) |−→ (q1 , P1 )
w2
I (q1 , P1 ) |−→ (q2 , P2 )
..
.
wn
I (qn−1 , Pn−1 ) |−→ (qn , Pn )

Remarque
Si AAB pile alors la tête est A et le reste est AB
81
Automates à pile
Définitions

Exemple a, Z → Z b, Z → A
a, B → BB

q0 q1
a, B → CB

a, A →
AB
b, A →  →

B
A
a,
A
B

b ,B
, A → AA q2

a b a  b
q0 , Z |→
− q0 , Z |→
− q1 , A |→
− q2 , AB |→
− q2 , AAB |→
− q0 , AB
donc
abab
q0 , Z |−−−→ q0 , AB
82
Automates à pile
Définitions

Modes d’acceptation
Mot w accepté:
I par état final si
w
q0 , Z |−
→ qf , P
I par pile vide si
w
q0 , Z |−
→ q, 
I par état final et pile vide si
w
q0 , Z |−
→ qf , 

avec qf état final, et P pile quelconque

83
Automates à pile
Exemples

Exemple 1
a, _ → A_ b, A → 

b, A →  , Z → 
q0 q1 q2

a a a a
q0 , Z |→
− q0 , AZ |→
− q0 , AAZ |→ − q0 , An Z
− . . . |→
b b b b 
− q1 , An−1 Z |→
|→ − q1 , An−2 Z |→
− . . . |→
− q1 , Z |→
− q2 , 

donc an b n reconnu par état final et pile vide

84
Automates à pile
Exemples

Exemple 2

a, _ → A_ a, A → 
b, _ → B_ b, B → 

, _ → _ , Z → 
q0 q1 q2

a a b b
q0 , Z |→
− q0 , AZ |→
− q0 , AAZ |→
− q0 , BAAZ |→
− q0 , BBAAZ

|→
− q1 , BBAAZ
b b a a 
|→
− q1 , BAAZ |→
− q1 , AAZ |→
− q1 , AZ |→
− q1 , Z |→
− q2 , 

donc aabbbbaa reconnu par état final et pile vide


85
Automates à pile
Exemples

Proposition
Tout langage accepté selon un des trois modes est accepté par un
autre mode
Preuve
I état final → pile vide

qf1

q0 ..
.

qfn

w
q0 , Z |−
→ qfi , P

86
Automates à pile
Exemples

Proposition
Tout langage accepté selon un des trois modes est accepté par un
autre mode
Preuve
I état final → pile vide

, _ → 
qf1 , _
→_
, Z → Z$ ..
q−1 q0 q
.
→_
qfn , _

 w  
− q0 , Z$ |−
q−1 , Z |→ → qfi , P$ |→
− q, P$ |→
− q, 

86
Automates à pile
Exemples

Proposition
Tout langage accepté selon un des trois modes est accepté par un
autre mode
Preuve
I pile vide → état final

qi

q0

qj

w
q0 , Z |−
→ qi , 

86
Automates à pile
Exemples

Proposition
Tout langage accepté selon un des trois modes est accepté par un
autre mode
Preuve
I pile vide → état final

qi , $ →

, Z → Z$
q−1 q0 q

→
qj , $

 w 
− q0 , Z$ |−
q−1 , Z |→ → qi , $ |→
− q, 

86
Automates à pile
Exemples

Proposition
Tout langage accepté selon un des trois modes est accepté par un
autre mode

Preuve
I Similaire pour les autres cas

86
Automates à pile
Équivalence automates à pile et grammaires

Théorème
Tout langage algébrique est reconnu par un automate à pile.

Preuve
Principe: simuler une dérivation (gauche) dans la pile
Exemple: S → SS | a | T
T → TT | US | 
U → b | ST

S → SS → aS → aT → aUS → abS → aba

simulé par
 a   b a
q, SZ |→
− q, SSZ |→
− q, SZ |→
− q, TZ |→
− q, USZ |→
− q, SZ |→
− q, Z

87
Automates à pile
Équivalence automates à pile et grammaires

Théorème
Tout langage algébrique est reconnu par un automate à pile.
Preuve
Principe: simuler une dérivation (gauche) dans la pile
1. Transformation de la grammaire pour n’avoir que

A→ A→B A → BC A→a

2. Automate à trois états: q0 (initial), q1 , qF (final)


,Z →SZ
I q0 −−−−−→ q1 pour amorcer
,Z →
I q1 −−−−→ qF pour terminer
,A→
I q1 −−−−→ q1 pour A → 
,A→B
I q1 −−−−→ q1 pour A → B
,A→BC
I q1 −−−−−→ q1 pour A → BC
a,A→
I q1 −−−−→ q1 pour A → a
87
Automates à pile
Équivalence automates à pile et grammaires

Théorème
Tout langage reconnu par un automate à pile est algébrique

Preuve
Soit un automate acceptant par état final et pile vide et soit
w
Xpq : mots w tels que p, X |−
→ q, 

I pour q0 initial et tout qF final ajout des règles

S → Zqq0F

88
Automates à pile
Équivalence automates à pile et grammaires

Théorème
Tout langage reconnu par un automate à pile est algébrique

Preuve
Soit un automate acceptant par état final et pile vide et soit
w
Xpq : mots w tels que p, X |−
→ q, 

a,A→
−−−→ q 0 , comme
I pour toute transition q −
a
− q0, 
q, A |→

alors ajout des règles


0
Aqq → a

88
Automates à pile
Équivalence automates à pile et grammaires

Théorème
Tout langage reconnu par un automate à pile est algébrique

Preuve
Soit un automate acceptant par état final et pile vide et soit
w
Xpq : mots w tels que p, X |−
→ q, 

a,A→B
I pour toute transition q −−−−→ q 0 , comme
a w
− q 0 , B |−
q, A |→ → p, 

alors pour tout état p ajout des règles

Apq → aBqp0

88
Automates à pile
Équivalence automates à pile et grammaires

Théorème
Tout langage reconnu par un automate à pile est algébrique

Preuve
Soit un automate acceptant par état final et pile vide et soit
w
Xpq : mots w tels que p, X |−
→ q, 

a,A→BC
I pour toute transition q −−−−−→ q 0 , comme
a w1 w2
− q 0 , BC |−→ p, C |−→ r , 
q, A |→

alors pour tout état p et tout état r ajout des règles

Arq → aBqp0 Cpr

88
Automates à pile
Équivalence automates à pile et grammaires

Théorème
Tout langage reconnu par un automate à pile est algébrique

Exemple

q0 , Z S → Z02
a
|−−−→ q0 , AZ → aA10 Z12
b
|−−−→ q0 , BAZ → abB01 A11 Z12

|−−−→ q1 , BAZ → abB11 A11 Z12
b
|−−−→ q1 , AZ → abbA11 Z12
a
|−−−→ q1 , Z → abbaZ12

|−−−→ q2 ,  → abba

88
Automates à pile
Automates déterministes

Automate à pile déterministe


Pour tout état q:
I si transition sortante sur a, X alors unique
I si transition sortante sur , X alors unique et aucun transition
sur a, X quel que soit a

Exemple déterministe
a, _ → A_ b, A → 

b, A →  , Z → 
q0 q1 q2

89
Automates à pile
Automates déterministes

Automate à pile déterministe


Pour tout état q:
I si transition sortante sur a, X alors unique
I si transition sortante sur , X alors unique et aucun transition
sur a, X quel que soit a

Exemple non déterministe

a, _ → A_ a, A → 
b, _ → B_ b, B → 

, _ → _ , Z → 
q0 q1 q2

89
Automates à pile
Automates déterministes

Automate à pile déterministe


Pour tout état q:
I si transition sortante sur a, X alors unique
I si transition sortante sur , X alors unique et aucun transition
sur a, X quel que soit a

Théorème (admis)
Le langage des palindromes ne peut être reconnu par un automate
à pile déterministe

89
Automates à pile déterministes
et grammaires LR(0)/LR(1)

90
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

b a a b a c b a a a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

b a a b a c b a a a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa


b a a b a c b a a a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa


b S a b a c b a a a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa


b S a b a c b a a a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

T b a c b a a a

b S a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

T b a c b a a a

b S a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

T b a c b a a a

b S a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

T b S c b a a a

b S a a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

T b S c b a a a

b S a a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

T b S c b a a a

b S a a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

T b S c b a a a

b S a a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

T b S c b S a a

b S a a a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

T b S c b S a a

b S a a a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

T b S c T a

b S a a b S a

a a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

T b S a

b S a S c T

a a b S a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

T b S a

b S a S c T

a a b S a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

T T

b S a b S a

a S c T

a b S a

91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Principes analyse ascendante

S → TT | ScT | a
T → cT | bSa

T T

b S a b S a

a S c T

a b S a

a
91
Automates à pile déterministes et grammaires LR(0)/LR(1)
Grammaires LR(0)/LR(1)

Dérivation droite
I u ⇒d v si u obtenu depuis v par dérivation du non terminal le
plus à droite
I u ⇒?d v pour plusieurs dérivations successives

Exemple
L’arbre précédent correspond à la dérivation droite à l’envers:

S ⇒d T T ⇒d T bSa ⇒d T bScT a ⇒d T bScbSaa

⇒d T bScbaaa ⇒d T bacbaaa ⇒d bSabacbaaa

⇒d baabacbaaa

92
Automates à pile déterministes et grammaires LR(0)/LR(1)
Grammaires LR(0)/LR(1)

Poignée
p poignée de w si

S ⇒?d rAt ⇒d rpt = w

avec A → p règle, w mot de (N ∪ T )? , t mot de T ?

Exemples
I poignée de baabacbaaa est a car S → a et

S ⇒?d bSabacbaaa ⇒d baabacbaaa


I poignée de T bScbSaa est bSa car T → bSa et

S ⇒?d T bScT a ⇒d T bScbSaa

93
Automates à pile déterministes et grammaires LR(0)/LR(1)
Grammaires LR(0)/LR(1)

Poignée
p poignée de w si

S ⇒?d rAt ⇒d rpt = w

avec A → p règle, w mot de (N ∪ T )? , t mot de T ?

Remarques
I poignée toujours unique pour grammaire non ambigüe
I permet de remonter dérivation droite (réduction)

93
Automates à pile déterministes et grammaires LR(0)/LR(1)
Grammaires LR(0)/LR(1)

Grammaires LR(0)/LR(1)
I LR: Left to right, Rightmost derivation
I LR(0): poignée déduite sans lire plus loin que la poignée
I LR(1): poignée déduite en lisant une lettre de plus que la
poignée

Théorème (admis)
Automates à pile déterministes équivalent aux grammaires LR(1)

94
Automates à pile déterministes et grammaires LR(0)/LR(1)
Analyseurs Shift/Reduce
Analyseur Shift/Reduce
Dit si un mot donné est accepté par une grammaire donnée:
I Shift: lit une lettre supplémentaire du mot d’entrée
I Reduce: applique réduction (remontée dans dérivation droite)
Construit y tel que y ⇒?d u avec u lettres lues.
Exemple sur baabacbaaa (en colonnes)
Shift b Shift a Shift a
 |−−−−→ b |−−−−→ T ba |−−−−→ T bScbSa
Shift a Reduce Reduce
|−−−−→ ba |−−−−→ T bS |−−−−→ T bScT
Reduce Shift c Shift a
|−−−−→ bS |−−−−→ T bSc |−−−−→ T bScT a
Shift a Shift b Reduce
|−−−−→ bSa |−−−−→ T bScb |−−−−→ T bSa
Reduce Shift a Reduce
|−−−−→ T |−−−−→ T bScba |−−−−→ TT
Shift b Reduce Reduce
|−−−−→ T b |−−−−→ T bScbS |−−−−→ S 95
Automates à pile déterministes et grammaires LR(0)/LR(1)
Items d’une grammaire LR(0)

Item LR(0)
Règle et position dans la règle: X → α • β

Item LR(0) valide pour mot


X → α • β valide pour y si

S ⇒?d rXt ⇒d r αβt avec r α = y


Exemples
I T → c • T valide pour T c car

S ⇒d T T ⇒d T cT

I T → bS • a valide pour bS car

S ⇒d TT ⇒d T bSa ⇒d T baa ⇒d bSabaa

96
Automates à pile déterministes et grammaires LR(0)/LR(1)
Items d’une grammaire LR(0)

Item LR(0)
Règle et position dans la règle: X → α • β

Item LR(0) valide pour mot


X → α • β valide pour y si

S ⇒?d rXt ⇒d r αβt avec r α = y


Exemples
I T → bS • a valide pour bS car

S ⇒d TT ⇒d T bSa ⇒d T baa ⇒d bSabaa

I S → S • cT valide pour bS car

S ⇒d TT ⇒d T bSa ⇒d T baa ⇒d bSabaa ⇒d bScT abaa

96
Automates à pile déterministes et grammaires LR(0)/LR(1)
Items d’une grammaire LR(0)

Item LR(0)
Règle et position dans la règle: X → α • β

Item LR(0) valide pour mot


X → α • β valide pour y si

S ⇒?d rXt ⇒d r αβt avec r α = y


Utilité
I si X → α • aβ valide pour y , opération Shift possible
I si X → α• valide pour y , opération Reduce possible

Remarque
Grammaire pas LR(0) ssi conflit Shift/Reduce ou Reduce/Reduce

96
Automates à pile déterministes et grammaires LR(0)/LR(1)
Calcul des items valides

Fermeture d’un item LR(0)


Obtenir la fermeture de X → α • Y β consiste à ajouter les items
Y → •γ pour toutes les règles Y → γ et réitérer si nécessaire

Exemples

S → TT | ScT | a
T → cT | bSa

I fermeture de S → T • T est

{S → T • T , T → •cT , T → •bSa}

97
Automates à pile déterministes et grammaires LR(0)/LR(1)
Calcul des items valides

Fermeture d’un item LR(0)


Obtenir la fermeture de X → α • Y β consiste à ajouter les items
Y → •γ pour toutes les règles Y → γ et réitérer si nécessaire
Exemples

S → TT | ScT | a
T → cT | bSa

I fermeture de T → b • Sa est
{ T → b • Sa,
S → •TT ,
S → •ScT ,
S → •a,

}
97
Automates à pile déterministes et grammaires LR(0)/LR(1)
Calcul des items valides

Fermeture d’un item LR(0)


Obtenir la fermeture de X → α • Y β consiste à ajouter les items
Y → •γ pour toutes les règles Y → γ et réitérer si nécessaire
Exemples

S → TT | ScT | a
T → cT | bSa

I fermeture de T → b • Sa est
{ T → b • Sa,
S → •TT ,
S → •ScT ,
S → •a,
T → •cT ,
T → •bSa }
97
Automates à pile déterministes et grammaires LR(0)/LR(1)
Calcul des items valides

Automate des items valides


y
Pour tout y , si E0 −
→ E alors E ensemble des items valides de y

Méthode de construction
I état initial: fermeture des items S → •γ
x
I E−→ E 0 avec E 0 obtenu par:

si X → α • x β dans E alors X → αx • β

plus la fermeture associée

98
Automates à pile déterministes et grammaires LR(0)/LR(1)
Calcul des items valides

Exemple

S → TT | ScT | a
T → cT | bSa

I état initial :
S → •TT
S → •ScT
S → •a
T → •cT
T → •bSa

99
Automates à pile déterministes et grammaires LR(0)/LR(1)
Calcul des items valides

Exemple

S → TT | ScT | a
T → cT | bSa

I transitions:
S → •TT S →T •T
S → •ScT T T → •cT
S → •a T → •bSa
T → •cT
T → •bSa

99
Automates à pile déterministes et grammaires LR(0)/LR(1)
Calcul des items valides

Exemple

S → TT | ScT | a
T → cT | bSa

I transitions:
S → •TT S →T •T
S → •ScT T T → •cT
S → •a T → •bSa
T → •cT
a
T → •bSa
S → a•

99
Automates à pile déterministes et grammaires LR(0)/LR(1)
Calcul des items valides

Exemple

S → TT | ScT | a
T → cT | bSa

I transitions:
S → •TT S →T •T
S → •ScT T T → •cT
S → •a T → •bSa
T → •cT
a
T → •bSa
S → a•
etc.
99
Automates à pile déterministes et grammaires LR(0)/LR(1)
Calcul des items valides

Exemple complet
S → Sc • T
b
q9 T → •cT c
T → •bSa q3 S → S • cT S → •a
S
S → •TT
T c c q0 S → •ScT
T T → •cT
q11 S → ScT • T →c•T S →T •T T → •bSa
c
q5 T → •cT q2 T → •cT a

c T → •bSa T → •bSa q1 S → a•
c
b
T T
q10 T → bSa• T b a
b
q6 S → TT •
a
q8 T → cT • c T → b • Sa
b
S → •a
S → S • cT
q7 S → •TT
T → bS • a S q4
S → •ScT
T → •cT
T → •bSa

100
Automates à pile déterministes et grammaires LR(0)/LR(1)
Calcul des items valides

Analyse d’un mot


1. Au départ mot lu y = 

2. Calcul des items valides pour y (avec automate):


I si aucun item valide, mot rejeté
I si un item de la forme X → α• opération Reduce:
remplaçement des dernières lettres α de y par X
I sinon opération Shift: ajout prochaine lettre à lire dans y

3. Répétition jusqu’à lecture complète: mot accepté si y = S

101
Automates à pile déterministes et grammaires LR(0)/LR(1)
Calcul des items valides

Exemple
Analyse de acbaa, en ajoutant états dans y :

étape opération pile y


1 q0
2 Shift q0 a q1
3 Reduce S→a q0 S q3
4 Shift q0 S q3 c q9
5 Shift q0 S q3 c q9 b q4
6 Shift q0 S q3 c q9 b q4 a q1
7 Reduce S→a q0 S q3 c q9 b q4 S q7
8 Shift q0 S q3 c q9 b q4 S q7 a q10
9 Reduce T → bSa q0 S q3 c q9 T q11
10 Reduce S → ScT q0 S q3

Finalement: mot acbaa accepté


102
Automates à pile déterministes et grammaires LR(0)/LR(1)
Items LR(1), LALR(1), SLR(1)

Item LR(1)
Règle, position dans la règle et symbole x : X → α • β, x
Item LR(1) valide pour mot
X → α • β, x valide pour y si

S ⇒?d rXt ⇒d r αβt avec r α = y et t1 = x

Fermeture d’un item LR(1)


Obtenir la fermeture de X → α • Y β, x consiste à ajouter les items
Y → •γ, y pour toutes les règles Y → γ et tous les symboles y
pouvant débuter βx , et réitérer si nécessaire
Remarques
I automate des items valides similaire (mais plus gros)
I symbole supplémentaire permet de résoudre des conflits
103
Automates à pile déterministes et grammaires LR(0)/LR(1)
Items LR(1), LALR(1), SLR(1)

Exemple S → a | aSN
N → bS

S → •a, $
q0
S → •aSN, $

104
Automates à pile déterministes et grammaires LR(0)/LR(1)
Items LR(1), LALR(1), SLR(1)

Exemple S → a | aSN
N → bS

S → a • ,$
S → •a, $ a S → a • SN, $
q0 q1
S → •aSN, $ S → •a, b
S → •aSN, b

104
Automates à pile déterministes et grammaires LR(0)/LR(1)
Items LR(1), LALR(1), SLR(1)

Exemple S → a | aSN
N → bS

S → a • ,b
S → a • SN, b
q3
S → •a, b
S → •aSN, b

S → a • ,$
S → •a, $ a S → a • SN, $
q0 q1
S → •aSN, $ S → •a, b
S → •aSN, b

104
Automates à pile déterministes et grammaires LR(0)/LR(1)
Items LR(1), LALR(1), SLR(1)

Exemple S → a | aSN
N → bS

S → a • ,b
S → a • SN, b
q3
S → •a, b
S → •aSN, b

a
a
S → a • ,$
S → •a, $ a S → a • SN, $
q0 q1
S → •aSN, $ S → •a, b
S → •aSN, b

104
Automates à pile déterministes et grammaires LR(0)/LR(1)
Items LR(1), LALR(1), SLR(1)

Exemple S → a | aSN
N → bS

S → a • ,b
S → a • SN, b S S → aS • N, b
q3 q5
S → •a, b N → •bS, b
S → •aSN, b

a
a
S → a • ,$
S → •a, $ a S → a • SN, $
q0 q1
S → •aSN, $ S → •a, b
S → •aSN, b

104
Automates à pile déterministes et grammaires LR(0)/LR(1)
Items LR(1), LALR(1), SLR(1)

Exemple complet
N

N → b • S, b
b S → aS • N, b
q9 S → aSN • , b q8 S → •a, b q5
N → •bS, b
S S → •aSN, b
a S
q11 N → bS • , b
S → a • ,$ S → a • ,b
S → a • SN, $ a S → a • SN, b
a q1 q3 a
S → •a, $ S → •a, b S → •a, b
q0
S → •aSN, $ S → •aSN, b S → •aSN, b
a
S
N → b • S, $
N S → aS • N, $ b S
q7 S → aSN • , $ q4 q6 S → •a, $ q10 N → bS • , $
N → •bS, $
S → •aSN, $

105

Vous aimerez peut-être aussi