Académique Documents
Professionnel Documents
Culture Documents
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
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
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
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:
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
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
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
q0 q1
a, b
q0 q1
a, b
18
Automates finis déterministes
Exemples
a a, b
q0 b q1
a a, b
q0 b q1
19
Automates finis déterministes
Exemples
s0
20
Automates finis déterministes
Exemples
s0
20
Automates finis déterministes
Exemples
a
b
s0 s1
20
Automates finis déterministes
Exemples
a
b
s0 s1
a
20
Automates finis déterministes
Exemples
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
q0 b q1
21
Automates finis déterministes
Manipulation d’automates
22
Automates finis déterministes
Manipulation d’automates
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
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
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
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
34
Automates finis non déterministes
Constructions d’automates
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
qi initial de A2
a a
si qi −−→ q ∈ δ2 on ajoute qf −−→ q
qf final de A1
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
qi initial de A1
a
qf −−
a
→q
si qi −−→ q ∈ δ1 on ajoute a
q −−
0 →q
qf final 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.
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.
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.
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.
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.
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.
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.
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.
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
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
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)
53
Compléments sur les automates
Langages non rationnels
Méthode 1: exemple 1
L = {ak b k | k ∈ N} n’est pas rationnel.
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.
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
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.
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)
60
Grammaires (hors contexte)
Définitions et premières propriétés
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
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
65
Grammaires (hors contexte)
Définitions et premières propriétés
Propriété
Tout langage rationnel est algébrique
q → aq 0
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
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
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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}
75
Grammaires (hors contexte)
Algorithme CYK (cas sans )
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}
75
Grammaires (hors contexte)
Algorithme CYK (cas sans )
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}
75
Grammaires (hors contexte)
Algorithme CYK (cas sans )
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}
75
Grammaires (hors contexte)
Algorithme CYK (cas sans )
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}
75
Grammaires (hors contexte)
Algorithme CYK (cas sans )
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
75
Grammaires (hors contexte)
Algorithme CYK (cas sans )
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
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
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
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 ,
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 ,
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 ,
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
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
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,
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 |→
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,
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 |→
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
Exemple déterministe
a, _ → A_ b, A →
b, A → , Z →
q0 q1 q2
89
Automates à pile
Automates déterministes
a, _ → A_ a, A →
b, _ → B_ b, B →
, _ → _ , Z →
q0 q1 q2
89
Automates à pile
Automates déterministes
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:
⇒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
Exemples
I poignée de baabacbaaa est a car S → a et
93
Automates à pile déterministes et grammaires LR(0)/LR(1)
Grammaires LR(0)/LR(1)
Poignée
p poignée de w si
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 → α • β
S ⇒d T T ⇒d T cT
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 → α • β
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 → α • β
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
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
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
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
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 • β
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
101
Automates à pile déterministes et grammaires LR(0)/LR(1)
Calcul des items valides
Exemple
Analyse de acbaa, en ajoutant états dans y :
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
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