Académique Documents
Professionnel Documents
Culture Documents
II.3.2
II.4 Exercices.......................................................................................................................... 9
Chapitre III
R=babaa
Exercice
Montrer par rcurrence que (u)R=uR.R k tq |u|=k
Preuve
Base: k=0, (x)R=()R=R= R= xR.R
Hypothse: on suppose que (x)R=xR.R 0<=k<=n , avec|x|=k
Rcurrence: on veut dmontrer que (x)R=xR.R avec |x|=n+1
|x|=n+1 x=u.a avec |u|=n et a
(x)R=(ua)R=a.(u)R=a.uR.R=(ua)R.R=xR.R
Donc l'hypothse est vraie, c'est ce qu'il faut dmontrer.
Dfinition par proprit: il s'agit d'une modlisation formelle d'une description naturelle
d'un langage.
Exemple L1 = {ensemble des mots dfinis sur {a,b} de longueur paire}
L1 = { {a,b}* / || = 2n avec n 0}
Dfinition rcursive : Dfinition dans laquelle, un langage est dfini sur lui mme.
Exemple:
L2 = { * / = a ou = a1 ; 1L2} = {a,aa,..,aaaa,...}
L3= { * / = ou = 12 avec |1|= 2 et L3}
L3 L1
Remarque: Les parenthses ne sont pas des lettres de l'alphabet de ce langage, alors elles
peuvent tre utilises pour indiquer la factorisation sans accidentellement changer les mots.
Le langage dfini par l'expression ab*a est l'ensemble de toutes les chanes de a et de b qui
ont au moins 2 lettres, qui commencent et finissent par a et qui n'ont que des b ou rien
l'intrieur.
Langage (ab*a) = {aa, aba, abba, abbba, abbbba,...}
Remarque: il serait faux de dire que notre langage est l'ensemble de tous les mots qui
commencent et qui finissent par a et qui n'ont que des b (ou rien) entre eux, car cette
description peut tre aussi applique au mot a. Notre symbolisme limine cette ambigut.
Exemple: Le langage de l'expression a*b* contient toutes les chanes de a et de b dans
lesquelles tous les a's viennent avant tous les b's.
Language (a*b*) = {, a, b, aa, ab, bb, aaa, aab, abb, bbb,...}
Remarque: Il est noter que ba et aba n'appartiennent pas ce langage et on n'a pas besoin
du mme nombre de a et de b. On observe aussi que a*b* (ab)*
Puisque le langage droite contient abab tandisque celui gauche ne le contient pas.
Exemple: soit le langage T dfini sur l'alphabet = {a,b,c}
T = {a, c, ab, cb, abb, cbb, abbb, cbbb, abbbb, cbbbb...}
tous les mots de T commencent avec un a ou un c ensuite, ils sont suivis par un nombre
quelconque eventuellement nulle de b. symboliquement on peut crire :
T = langage ((ac) b*)
= langage (soit a ou c ensuite quelque b)
Exemple: soit L l'ensemble qui contient touts les chanes de a et de b de longueur 3
exactement.
L = {aaa, aab, aba, abb, baa, bab, bba, bbb}
L = langage ((a b) (a b) (a b)) alors si on veut reprsenter L', le langage qui contient
toutes les chanes de a et de b de n'importe quel longueur L = (a b)*
II.2.2 Dfinition d'une expression rgulire
Une expression rgulire sur un alphabet est une chane de caractres sur l'alphabet
{(,),,*, , } tel que:
toute lettre de {, } est une expression rgulire
si r1 et r2 sont deux expressions rgulires alors
(r1) est une expression rgulire
r1r2 est une expression rgulire
r1r2 est une expression rgulire
r1* est une expression rgulire
rien d'autre n'est expression rgulire
R = (a b)* aa (a b)*
Exemple: soit ={a,b}
L = {*, ne contient pas 3b conscutifs}
R = (a ba bba)* ( b bb)
Un langage L est dit rgulier si et seulement s'il existe une expression rgulire qui le gnre.
II.3.2
P5) L1 L2 = L 1 L 2
Dfinition Deux expressions rgulires et sont dites quivalentes ssi L() = L()
Exemple: a = a
a. =
* = {}
Exemple: Le langage de tous les mots qui ont au moins 2 a's peut tre dcrit par l'expression
(ab)*a(ab)*a(ab)*
(quelque a et b au dbut) (le premier a) (quelque a et b au milieu) (le deuxime a ) (quelque a et b la fin)
II.4 Exercices
Exercice 1: Donner les expressions rgulires qui gnrent les langages suivants:
L1 = {
{a,b}*, tel que contient exactement bbb}
L2 = {
{a,b}*, tel que contient la sous chane bbb}
L3 = {
{a,b}*, tel que contient seulement 3b, le reste c'est des a's}
L4 = {
{a,b}*, tel que contient un nombre de a divisible par 3}
L5 = {
{a,b}*, tel que contient un nombre paire de a}
L6= {{
{a,b}*, tel que ne contient pas 3b Conscultifs}
L6 = {{a,b}*, tel que contient un nombre impaire de b}
L7 = {{a,b}*, tel que contient la sous chane aaa ou la sous chane bbb mais pas les
deux en mme temps}
avec:
Chapitre III
III.1 Introduction
Un reconnaisseur pour un programme est un programme qui prend en entre une chane x et
rpond OUI si x est une chane du programme et NON dans le cas contraire.On compile une
expression rgulire en un reconnaisseur en construisant un diagramme de transitions
gnralis appel automate fini. Un automate fini peut tre dterministe ou non-dterministe
(c..d. qu'on peut trouver plus d'une transition sortant d'un tat sur le mme symbole d'entre).
(b)
soient ={b, }
q1
q2
q4
q2
q3
q2
F={q3}
q3
q4
q4
S={q1}
q4
q4
q4
b
q1
q2
q4
b,
q3
b,
10
()
Remarque:
Un automate tats fini peut tre considr comme un mcanisme de calcul sans mmoire.
Mot connu par un automate:
Formellement, on dfinit la fonction *(e, u) qui nous dit dans quel tat on arrive en partant
de l'tat e et on analysant la chane u.
-si u est la chane vide
*(e, )=e
(b, q2, b )
dj lu
Remarque:
tat courant
restant lire
Configuration successeur:
Soit (x, q, v)
(x', q , v') est une configuration successeur de i
ssi
- pour v= , j=i on dit que i n'a pas de configuration successeur
-pour v=av"
x'=xa
qj=(qi,a)
v'=v"
configuration initiale:
note 0=(, q0,) avec q0: tat initial;
: le mot reconnatre
Configuration initiale d'acceptation:
f=(, qF, ) avec qF F;
'
M
- " /
pour n0
Notation:
configuration successive d'un nombre
quelconque d'tats de transition
*
ssi k tq
'
'
M
(, qF, ) avec qF F}
Exemple:
M=( K, , , s, F) avec ={a, b}
K={q0, q1}
s=q0;F={q0}
q0
q0
q1
q1
q1
q0
(q0,ababa) (q0,baba)
(q1,aba)
(q1,ba)
(q0,a)
(q0,)
13
tat
a
transition sur le symbole a
q0
qF
tat initial
tat final ou d'acceptation
Remarque
un automate tats fini dterministe (DFA) est un cas particulier d'automate tats fini dans
lequel:
Aucun tat n'a de -transition, c'est dire de transition sur l'entre et
Pour chaque tat q et chaque symbole d'entre a, il y'a au plus un arc tiquet a qui quitte q
q1
q0
b
a
b
q0
L = * = (ab)* = (a*b*)*
a
14
a,b
b
q0
q1
q2
q3
tat mort
a
a
q3
q4
a,b
q0
b
a impaire,
b paire
b
q3
a paire,
b impaire
q1
a
b
a
a impaire, b impaire: q2
a paire, b impaire: q3
q2
a impaire,
b impaire
={0,1,2,3,4,5,6,7,8,9}
L = { *: divisible par 3} : la somme des chiffres est divisible par 3
15
0,3,6,9
q0
,7
1,4,7
1,4,7
1,4
2,5,8
0,3,6,9
q2
,8
2,5
q3
2,5,8
0,3,6,9
b
a
q2
q0
a
0,1
1
q2
q0
0,1
q1
a
q0
q1
q2
q3
b
On voit bien qu'en sortie de ltat 0, on a deux arcs tiquets a.
Remarque 1 : Dans un automate fini non dterministe (NFA) il peut y avoir le choix entre
plusieurs chemins lors de la lecture dun mot.
Pour quun mot soit accept, il suffit que ses lettres tiquettent un chemin dun tat initial un
tat final (mme sil yen a dautres ne menant pas un tat final, ou bien sarrtant en cours
de route)
Remarque 2 : un DFA est un NFA particulier
NFA DFA
17
2
0
6
4
10
Transiter(T,a): Ensemble des tats de l'NFA vers lequel il existe une transition sur le symbole
a partir d'un tat q T.
Dans lexemple:
- fermeture (0) = {0, 1, 2, 4,7}
Transiter({0,1,2,4,7},a} = {3,8}
- fermeture ({3,8})= {1, 2, 3, 4, 6, 7,8}
Avant de voir le premier symbole dentre, N peut appartenir nimporte lesquels des tats de
lensemble -fermeture(0) ou 0 est ltat de dpart de N donc il peut-tre dans T={0,1,2,4,7}
cest ltat de dpart du DFA.
Supposons que a est le prochain symbole dentre. Quand il voit a, N peut passer dans lun
des tats de lensemble Transiter (T, a)=Transiter ({0, 1, 2, 4,7}, a)= {3,8}
Quand on autorise des -transitions, N peut-tre dans lun des
fermeture(Transiter(T,a)), aprs avoir lu le a, -fermeture({3,8})={1,2,3,4,6,7,8}
tats
Nous continuons ce processus avec les ensembles actuellement non marqus B et C on atteint
finalement le point ou tous les ensembles qui sont des tats du DFA sont marqus.
Les cinq diffrents ensembles que nous construisons rellement sont :
A= {0, 1, 2, 4,7}
B= {1, 2, 3, 4, 6, 7,8}
C= {1, 2, 4, 5,6 ,7}
D= {1, 2, 4, 5, 6, 7,9}
E= {1, 2, 4, 5, 6, 7,10}
Ltat A est ltat de dpart et ltat E est lunique tat dacceptation car il contient un tat
dacceptation du NFA (10)
19
Symbole dentre
a
b
B
a
A
20
f
N(t)
Remarque : Les tats de dpart et dacceptation de N(s) et N(t) ne sont pas les tats de dpart
et dacceptation de N(st).
Remarque : tout chemin depuis i vers f doit traverser soit N(s), soit N(t) exclusivement, on
voit donc que lautomate compos reconnat L(s) L(t)
b) pour lexpression st , construire lNFA compos N(st) :
N(S)
N(t)
Ltat de dpart de N(s) devient ltat de dpart du NFA compos et ltat dacceptation de
N(s) est fusionn avec ltat de dpart de N (t).
Toutes les transitions depuis ltat de dpart de N (t) deviennent des transitions depuis ltat
dacceptation de N(s). Le nouvel tat fusionn perd son statut dtat de dpart ou
dacceptation dans le NFA compos.
c) pour lexpression rgulire S*, construire le NFA compos N(S*) .
21
Ici i est un nouvel tat de dpart et f un nouvel tat dacceptation. Dans le NFA compos, on
peut aller de i f directement en suivant un arc tiquet qui reprsente que appartient
(L(s))*, ou bien on peut aller de i f en traversant N(s) une ou plusieurs fois.
d) Pour lexpression rgulire (s), utiliser N(s) lui-mme comme NFA.
Remarque Chaque fois quon construit un nouvel tat, on lui donne un nom distinct. Ainsi il
ne peut y avoir deux tats dans deux sous automates qui aient le mme nom, mme si le
mme symbole apparat plusieurs fois dans r, on cre, pour chaque instance de ce symbole, un
NFA spar avec ses propres tats.
Exemple: soit r = (ab) * abb la figure suivante reprsente un arbre syntaxique pour r.
r11
r9
r7
r5
*
r3
r8
r6
r4
(
r10
r1
r2
Pour r2 on construit
On peut maintenant combiner N(r1) et N(r2) on utilisant la rgle de lunion pour obtenir
r1 r2
Pour obtenir lautomate pour r7=r5 r6 on fusionne les tats 7 et 7 en appelant ltat rsultant 7
pour obtenir
Lq(a)= {w * , *(q, w) F }.
Lq(a) est le langage reconnu par un automate dont ltat initial serait q et qui aurait F comme
ensemble dtat finaux.
L(A)=Lq0(A).
Thorme :
Chaque langage rgulier est reconnu par un unique automate dterministe minimal
Problme :
Soit A un automate fini dterministe complet dont chaque tat est accessible depuis ltat
initial. Construire un DFA minimal qui reconnaisse le mme langage que A.
Ide : Fusionner les tats quivalents
En pratique lalgorithme est fond sur un principe de sparation des tats.
Remarque DFA complet :
Chaque tat a une translation sur chaque symbole de , Si ce ntait pas le cas, nous pourrions
introduire un nouvel tat mort d avec des transitions depuis d vers d sur tout les symboles,
ainsi quune transition depuis ltat e vers d sur le symbole a sil navait pas dj de transition
de e sur a.
Dfinition : Equivalence dtats
tant donn A un DFA, deux tats p et q sont quivalents (on note pq) si Lp(A)=Lq(A).
Ainsi (pq)
Exemple :
24
Proprit : la relation est une relation dquivalence. En effet, elle est rflexive,
symtrique et transitive
Notation : Si q est un tat, on note [q] sa classe dquivalence. c.a.d lensemble des tats qui
lui sont quivalents.
Dfinition :
Soit le DFA A= (, Q, , q0, F), lautomate minimal associ A est : Amin= (, Q, , [q0], F)
Tel que
Q= {[q], q Q}
F= {[f], f F}
= {([q],a,[q])tels que p [p], q [q] (p,a,q) }
Proprits :
Amin reconnat le mme langage que A.
Pour tout DFA B tel que L(B)=L(A), le nombre dtats de B est suprieur ou gal celui de
Amin.
Tous les automates minimaux C tel que L(C)=L(A), sont identiques un renommage de leurs
tats prs : on peut parler dunicit.
Algorithme de minimisation :(raffinements successifs)
Itration i=0 (construire deux classes dquivalence : les tats dacceptation F et les tats de
non acceptation Q-F)
p 0 q ssi (p F et q F ) ou (p F et q F)
Itration i>0
piq ssi
pi-1q
Et
Pour tout a : (p, a) i-1 (q, a)
Arrt de lalgorithme : quand i est identique i-1
Supprimer tous les tats morts et ceux non accessibles depuis ltat de dpart.
Exemple : Construction des classes dquivalences
Soit A (, Q, , q0, F) tel que = {a, b}, Q= {1, 2, 3, 4, 5, 6}, q0=1, F= {3, 6}
Et dfinie par
25
1
3
2
a
b
2
1
3
3
2
1
4
3
5
5
4
6
6
5
4
b
b
a
a
6
b
4
b
3 classes
dquivalences
Nouvelles classes
dquivalences
E1=E2 on sarrte, on
a 3 classes
dquivalences I={1,
4} II={2, 5}III={3, 6}
26
C :=fdf
Arrt
{1, 2, 3, 4, 6, 7,8}
C :=b
E :=-fermeture (transiter (E, b)) = -fermeture ({5,9}) = {1, 2, 4, 5, 6, 7,9}
C :=b
E :=-fermeture (transiter (E, b)) = -fermeture ({5,9}) = {1, 2, 4, 5, 6, 7,9}
C :=a
E :=-fermeture (transiter (E, a)) = -fermeture ({3,8}) = {1, 2, 3, 4, 6, 7,8}
C :=fdf Arrt
EF=
circuit
qr
qf
q0
Il y a donc un circuit de qr qr dans l'automate.
Remarque:
28
Si M accepte , M accepte
1..r(r+1.s)*s+p
aussi
toutes
les
chanes
de
la
forme:
Lemme de Pompage
Si L est un langage rgulier infini, il existe un entier n 1 tel que:
Pour tout mot de L de longueur n, il existe une factorisation de en xvy telle que
0 < |v| n
i 0, xviy L
Preuve:
Soit A=(Q, , , q0, F), un automate tats fini n tats tel que L=L(A)
Prenons un mot L de langueur Lgn: =12. lg
On sait que *(q0, 12.lg) F
La lecture de dans A passe forcement deux fois par le mme tat q de Q
Il existe donc deux indices i lg et j lg (i<j) tel que q=*(q0, 1..i)=*(q0,1j)
Si on pose x=1i
v=i+1..j
y=j+1lg
partir de la dfinition A accepte =xvy
Quel serait le chemin parcouru par l'automate A sur la chane xvvy?
Il suit le chemin dcrit par x jusqu' arriver q car *(q0,x)=q, ensuite il boucle sur la chane
v=i+.j qui va le ramener q car *(q, v)=q , ensuite encore il boucle une deuxime fois
sur le deuxime v qui va le ramener encore q. Ensuite comme pour , il suit le chemin dcrit
par y qui mne au mme tat final avec lequel a fini c.a.d. xvvy a t accepte par
l'automate A.
Si on trace les chemins pour xvvy xvvvy xvvvvv..vy ils seront les mmes; aller jusqu'au
circuit, boucler l'intrieur du circuit un certain nombre de fois ensuite continuer jusqu' l'tat
final.
Application:
Soit ={a, b}, L={ab, n0 },prouvons que L n'est pas rgulier
Voyons comment on va appliquer le lemme de pompage directement ce cas.
Supposons que L est rgulier
En effet si M possde m tats alors =ambm et de taille suprieure m, donc il doit exister
trois sous chanes x, y, v de tel que ambm ==xvy et M accepte xvvy.
Si v ne contient que des a il y'aura plus de a que de b dans xvvy
Si v ne contient que des b il y'aura plus de b que de a dans xvvy
Si v contient des a et des b alors il contient la squence ab
29
Donc la chane xvvy contiendra deux copies de la squence ab mais chaque mot de L contient
une seule fois la squence ab. Donc xvvy ne peut pas tre un mot de b, ce qui prouve que le
lemme de pompage ne peut pas tre appliqu L et par suite L n'est pas rgulier.
Thorme de pompage
Soit L un langage rgulier infini reconnu par un automate fini N tat
Alors pour tout L, ||>N , x, v, y tq v et |xv| N
Tel que
=xvy et n 0 xvy L
Exemple
On va montrer que le langage des palindromes n'est pas rgulier.
Considrons un automate acceptant ce langage, supposons qu'il est a m tats.
Soit le palindrome =am+3bam+3, ce mot doit tre accept par cet automate puisque c'est un
palindrome.
Puisque ||>m , selon le thorme, on peut subdiviser en trois parties x, v, y et puisque |xv|
doit tre m, ils doivent contenir uniquement des a's parce que les m premires lettres de
sont des a's.
Donc quand on forme le mot xvvy, nous sommes en train d'ajouter plus de a's la partie
frontale de mais nous n'ajoutons pas de a's la partie arrire de qui contiendra toujours
les a's de y dont le nombre reste fix m+3 (dans l'exemple)
On peut donc conclure que la chane xvvy n'est pas un palindrome parce qu'elle aura la forme
a Plus que m+3 b am+3
Mais le thorme de pompage dis que ce mot doit appartenir Palindrome ce qui implique
que Palindrome n'est pas rgulier.
ou a aaa...a b
M B
A aA
A
B bB
L(G) = {*, S }
L est dit langage contexte libre (CFL) s'il existe une grammaire G qui le gnre.
IV.3.1 Drivation gauche
se drive directement le plus gauche en et on note: s'il existe des mots 1 *,
g
2 V* tels que:
= 1 X 2
= 1 W 2
31
se drive le plus gauche en et on note s'il existe une suite de mots 0, 1,.., n de
g
2 * tels que: = 1 X 2 , = 1 W 2 et
R contient une production X W
*
se drive le plus droite en et on note s'il existe une suite de mots 0, 1,.., n de
d
Exemple:
soit G =(V, ,R,S) avec
= {x1,x2,+,*,(,)}, V = {E,T,F},S = E et R:
E E+T
E T
T T*F
T F
F (E)
F x1
F x2
soit = x1 *(x2+x1)
32
Drivation gauche
E T
F*F
formes sententielles
Drivation droite
Pour la drivation droite, c'est le non
terminal le plus droite qui est driv
chaque tape
E T
x1*F
non terminales
T*F
T*F
g
g
g
x1*(E)
g
x1*(E+T)
g
x1*(T+T)
g
x1*(F+T)
g
x1*(x2+T)
g
x1*(x2+F)
g
terminale
T*(E)
d
T*(E+T)
d
T*(E+F)
d
T*(E+x1)
d
T*(T+x1)
d
T*(F+x1)
d
T*(x2+x1)
d
F*(x2+x1)
d
x1*(x2+x1)
d
Un nud interne tiquet B a des fils, de gauche droite, tiquets 1,2,..,n s'il existe
une production de R: B 12..n
est form de la concatnation des feuilles lues dans un parcours suffixe (profondeur
d'abord, gauche droite)
33
( E )
x1
E + T
T
x1
x2
34
E
E
+ E
x1 E
x1
x2
E
E
E
x2
+ E
x1
x1
aaaaaA aaaaaa
g
Rponse:
1)
S AA
A bA
A Ab
A AAA
Aa
2) = bbaababa
S AA
g
bAA
g
bbAA
g
bbaA
g
bbaAAA
g
bbaAbAA
g
bbaabAA
g
bbaabaA
g
bbaababA
g
bbaababa
g
S AA
Dans la drivation directe n n+1 on passe travers une rgle qui ne change pas la
parit, en effet
A bA
A Ab
A AAA
Aa
Donc l'hypothse est aussi vraie l'ordre n+1. Donc toute forme sententielle a un nombre
paire de a ou A, or la forme sententielle terminale ne contient que des terminaux (0A)
donc elle contient forcement un nombre paire de a. Donc L(G), possde 2n a.
Dmonstration L L(G)
soit L, = bm1 a bm2 a... bm2n-1 a bm2n a bm2n+1
Voici une drivation de S en w
S AA
1 fois
AA
A AAA
(n-1) fois
AA....A
A bA
m1 fois
b AA...A
Aa
1 fois
bm1aA...A
(2n A)
m1
A bA
Aa
2n-1 fois
bm1abm2a....bm2n-1aA
A bA
m2n fois
bm1abm2a....bm2n-1aA bm2nA
A Ab
m2n+1 fois
bm1abm2a....bm2n-1aA bm2nAbm2n+1
A a
1 fois
bm1abm2a....bm2n-1aA bm2nabm2n+1
peut scrire A
Peut scrire
Avec , , , dans V* (suite de terminaux ou non terminaux)
A dans Vn (non terminal)
Dans V* (suite non vide de terminaux ou non terminaux)
On voit que le symbole A de Vn qui se trouve dans prcd par et suivi par (dans le
contexte et ) peut tre substitu par et prcd par et suivi par (do le nom
contextuelle).
Exemple:
aBab
B est substitu par b que si elle est prcde par a.
IV. 7.2 Grammaires non contextuelles context-free ou de type 2 (CFG)
Les productions dans ce cas sont de mme forme que les CG mais avec une nouvelle
contrainte telle que :
= = et = =
Ainsi toutes les productions sont de la forme :
A
Avec A Vn (non terminal)
et B V* (suite non vide de terminaux et de non terminaux )
Le symbole A de Vn est substitu par sans restriction de contexte
Exemple : Soit G une grammaire dfinie par :
G= {Vn ,Vt ,P,S}
Avec Vn = {S ,A,B} et Vt={a,b}
P:
S aB|bA
A a|aS|bAA
Bb|bS|aBB
G est une grammaire hors contexte; toutes les productions de G ont un seul lment de
Vn gauche.
IV. 7.3 Grammaires Rgulires ou de type3 :RG
C'est une grammaire Hors contexte, on impose en plus la contrainte suivante :
toutes les productions sont de la forme : A
avec = a ou =aB ou =
38
Un langage contextuel ou de type 1 est un langage gnr par une grammaire contextuelle.
Un langage non contextuel ou de type 2 est un langage gnr par une grammaire non
contextuelle.
Un langage rgulier ou de type 3 est un langage gnr par une grammaire rgulire .
Soient F0,F1,F2,F3 les familles de langages de types 0 ,type1,type2 et type3 respectives alors
F3 F2 F1 F0
N{X}( un
Pour toute production BC de P, il existe la flche (B, ,C) dans (au renommage
prs)
39
Exemple
b
P{AaA
A
AbB
Ac (devient ACX et X)
BbB
Ba(devient BaX)
B
E :a*bb*(a ) (a*C)
A=(,Q,, q0=A, F)
={a,b,c},={A,B,X},F{B,X}
L(G) = L(A)
Pour tout lment (q,6,q) de il existe la production q 6q dans P(au renommage prs)
Exemple :
A=(,Q,, q0=A,F)
={a,b},Q={A,B,C,D},F={D}
a,b
G=(V,,R ,A)
V- ={A,B,C,D},axiome A
D
b
={a,b}
40
R={AaC
AbB
BaD
BbA
CaD
CbB
DaD
DbD
D}
L (G) = L (A)
41
V.1 Introduction
Par analogie avec les expressions rgulires qui engendrent les langages rguliers, les
grammaires hors contextes engendrent les langages hors contexte. Aussi par analogie avec
automates tats finis qui reconnaissent les langages rguliers, les automates pile
reconnaissent les langages hors contextes.
Exemple: Utilisation d'un automate pile
L'automate pile va tenter de lire le mot aaabbb pour vrifier s'il appartient ou pas L = {
{a,b}*, = anbn n 0} qui n'est pas rgulier sinon on aurait utilis un DFA.
Le PDA enpile un X la lecture d'un a et ds la lecture du premier b il commence dpiler
la rencontre de chaque b. Il accepte le mot quand la pile devient vide.
a a
b
Pile
PDA
X
empiler X la lecture d'un a
a
b
Pile
PDA
X
X
empiler X la lecture d'un a
a a
b
Pile
PDA
X
X
X
42
b
Pile
PDA
X
X
dpiler X la lecture d'un b
a a
b
Pile
PDA
X
dpiler X la lecture d'un b
a a
b
Pile vide
PDA
Les automates finis n'ont pas d'autres mmoires que leurs tats.
q0 : tat initial
La relation de transition est l'ensemble des rgles de transition vues comme des
quintuples (Q ( {}) ( {})) (Q *)
(q, , q',): on est l'tat q avec en sommet de pile, on peut lire du restant lire,
remplacer par et transiter l'tat q'.
Le langage reconnu par un PDA est l'ensemble des mots lus partir de la configuration
initiale jusqu' l'obtention d'une configuration finale.
Formellement
L(A) = {*/ (q0, ,z) * (qF, , ) avec qF F et *}
44
Remarque:
Pour la configuration finale d'un PDA, le contenu de la pile importe peu. Cependant, un cas
particulier est de considrer une configuration finale o la pile serait alors vide. L'automate
est dit alors automate pile vide.
2 (q1,a,X) = (q1,XX)
3 (q1,b,X) = (q2,)
4 (q2,b,X) = (q2, )
5 (q2,,#) = (q3,#)
b) a2b
c)ab2
a)
tat
restant lire
contenu de la pile
transition utilise
q0
aabb
q1
abb
X#
q1
bb
XX#
q2
X#
q2
q3
Autre reprsentation
(q0,aabb, #) (q1,abb,X#) (q1, bb,XX#) (q2,b,X#) (q2, , #) (q3, , #)
45
on a (q0, a2b2, #) * (q3, , #) donc le mot est lu on est arriv un tat d'acceptation donc a2b2
L(A)..
b) (q0, aab,#) (q1, ab, X#) (q1, b, XX#) (q2, , X#) il n y'a pas de transition pour la
configuration dont l'tat courant est q2, le mot est lu et il y a un X en sommet de la pile; Bien
que le mot soit lu, la configuration finale n'est pas obtenue, Donc aab L(A).
c) (q0, abb, #) (q1,ab,X#) (q2,b,#) il n'existe pas de transition quand l'automate est en q2,
il reste un b lire et # en sommet de pile, il y a donc blocage et abb L.
Remarque: si on veut un PDA pile vide, il faut ajouter la transition (q2, ,#) = (q3, )
Notation
(qi, , )(qj, )
sans tenir compte du restant lire (ne pas avancer dans le ruban)
(qi, ,)(qj, X) empiler X quel que soit le contenu de la pile.
sans tenir compte de la pile
Exemple:
(p, , a) (q, ) dpiler a le restant lire et aller q
(p, , ) (q,a) empiler a le contenu de la pile et le restant lire (sans avancer dans le
ruban)
Exemple: soit = {a,b} et L = {cR : *}
a b c b a
empiler a
empiler b
aller l'tat de
dpilement
dpiler b
A (Q,,,,q0, #, F)
1
(q0,a, #) (q1,a#)
(q0,b,#) (q1,b#)
(q1,a, ) (q1, a)
Q= {q0,q1,q2}, = , F = q2
empiler a la tte de la pile
46
dpiler a
(q1,b, ) (q1,b)
(q1, c, ) (q2, )
(q2,a,a) (q2, )
(q2,b,b) (q2, )
(q2, , #) (q2, )
a,a
b,b
a,a
b,b
,#
q0 c, q1
abbcbba
tat
restant lire
contenu pile
Transition utilise
q0
abbcbba
# 1
q1
bbcbba
a# 4
q1
bcbba
ba# 4
q1
cbba
bba# 5
q2
bba
bba# 7
q2
ba
ba# 7
q2
a# 6
q2
# 8
q2
Remarque : Un NFA M= {Q, , , s, F) est la mme chose qu'un PDA M'(Q,,,',s, null,
F) avec '= ((p,u, ) (q, ) tel que (p,u,q) } c'est dire un PDA dont la pile n'est pas
utilise.
Equivalence: Tout langage hors contexte reconnu par un PDA avec le mode de
reconnaissance sur pile vide est galement reconnu par un automate pile acceptant sur tat
final et vice-versa.
V.6 Dterminisme
un automate pile est dterministe (PDA dterministe) si:
ceci correspond bien au fait de ne pas avoir le choix quant- la transition appliquer
Thorme
Il existe des langages non contextuels qui ne sont pas reconnus par un automate pile
dterministe.
Exemple:
Le langage { R , *} n'est pas reconnu par un PDA dterministe.
M (Q,,,,s, null, F)
1
(s, a, ) (s,a)
(s, b, ) (s,b)
(s, ,) (f, )
(f,a,a) (f, )
(f,b,b) (f, )
Dfinitions
p1= p2
1 et 2 sont persistantes
1 et 2 sont persistantes
Thorme:
un PDA est dterministe s'il ne contient aucune transition compatible
Exemple 1
= {a,b}
L = {cR, *}
M (Q,,,,s, null, F)
:
(s,a,a) (s,a)
(s,b, ) (s,b)
(s,c,) (f,)
(f,a,a) (f, )
(f,b,b) (f, )
48
(s,b, ) (s,b)
(s, ,) (f,)
(f,a,a) (f, )
(f,b,b) (f, )
[F1]
[F2]
[F3]
(q1, b, b) = (q1, )
(q1, , #) = (q1, )
[F4]
Soient G1 = (N1, T1, R1, S1) et G2 = (N2, T2, R2, S2) engendrant respectivement L1 et L2
Soient G1 = (N1, T1, R1, S1) et G2 = (N2, T2, R2, S2) engendrant respectivement L1 et L2
50
La classe des langages algbriques est close pour lopration toile de Kleene
Preuve par construction
Concernant L1 :{ai bj ck, i=j, k 0} est la concatnation de L1= {ai bj, i=j}
L1= {ck, k 0}
Les langages {ck, k 0}, respectivement {ai, i 0} sont toile de {c}, respectivement {a}.
T = {a, b}
P = {S1 | a S1 b; S2 | c S2; SL1 S1 S2; S3 | a S3;
S4 | b S4 c; SL2 S3 S4; S SL1 | SL2}
La classe des langages hors contexte nest pas close par intersection.
Contre exemple :
Comme on la montr par lemme de Pompage, le langage
L = {ai bj ck, i 0} nest pas hors contexte.
Or L = L1 L2 avec L1 et L2 les deux langages hors contexte ;
L1 = {ai bj ck, i = j} /*concatnation de ai bj et ck
L2 = {ai bj ck, j = k} /*concatnation de ai et bj ck
Thorme:
L'intersection d'un langage hors contexte et d'un langage rgulier est un langage hors
contexte.
Bibliographie
52
53