Théorie des Langages - Département informatique de l`IUT

Transcription

Théorie des Langages - Département informatique de l`IUT
iut Lille A – Université Lille1 – département Informatique
Mathématiques – un énoncé de ≪ Théorie des Langages
≫
Exercice I - Des constructions d’AFdc.
Dans cet exercice, on s’intéresse au langage L des mots sur l’alphabet x | y | z qui commencent par xy ET
qui finissent par yyz ; plus précisément, on cherche à construire des AF (automates finis) qui reconnaissent ce
langage.
1. Donner la liste des mots du langage L de longueur inférieure ou égale à 6. Indication : cette liste devrait
comporter cinq mots ; si vous n’en trouvez que quatre, alors vous avez sans doute oublié le plus court d’entre
eux !
xyyz
,
xyyyz
,
xyαyyz pour α parmi {x, y, z}
2. On propose l’AF suivant :
−
x
2
1
2
3
4
5
6 +
3
y
z
3
3|4 3
5
6
Dessiner cet AF. Cet AF convient-il ? Pourquoi ?
1
x
2
y
y
3
4
y
5
z
6
x|y|z
Cet AF reconnaı̂t le langage xy(x | y | z)∗ yyz qui est certes inclus dans le langage L — en effet, les mots de
xy(x | y | z)∗ yyz commencent tous par xy et se terminent par yyz — mais il y manque le mot xyyz pour
obtenir tous les mots de L...
L’AF proposé ne convient donc pas !
3. En tentant de corriger le défaut de l’AF précédent en lui ajoutant une transition de l’état 4 vers l’état 6,
d’étiquette z :
x
y
z
− 1
2
2
3
3
3 3|4 3
4
5
6
5
6
6 +
Le défaut de l’AF précédent a-t-il été corrigé ? Ce nouvel AF convient-il pour autant ? Pourquoi ?
1
x
2
y
y
3
4
y
5
z
6
z
x|y|z
La transition ajoutée permet une lecture qui conduit à accepter maintenant le mot xyyz !
y
x
y
z
1 −→ 2 −→ 3 −→ 3 | 4 −→ 3 | 6
où 6 est acceptant
Mais notre enthousiasme est de courte durée, car le nouvel AF accepte aussi le mot xyzyz
x
y
z
y
z
1 −→ 2 −→ 3 −→ 3 −→ 3 | 4 −→ 3 | 6 où 6 est acceptant
qui pourtant ne se termine pas par yyz et n’appartient donc pas à L...
Un énoncé de théorie des langages
2
4. Proposer une expression régulière pour le langage L.
Le langage L a été défini 1 comme le ≪ langage des mots sur l’alphabet x | y | z qui commencent par xy
ET qui finissent par yyz ≫, il est composé de mots constitués du préfixe xy et du suffixe yyz entre lesquels
s’intercale un mot quelconque, à ces mots de longueur au moins 5 s’ajoute le mot xyyz de longueur 4 ; d’où
l’expression régulière du langage :
L = xy(x | y | z)∗ yyz
|
xyyz
5. Dessiner l’AF suivant puis expliquer pourquoi il reconnaı̂t le langage L :
−
1
2
3
4
5
6 +
x
2
3
y
z
3|4
3|4 3
5
6
y
x
1
2
y
3
y
y
4
z
5
6
x|y|z
y
Les chemins menant de l’état de départ 1 à l’état acceptant 6 passent soit par les transitions 2 −→ 3 et
y
y
3 −→ 4, soit par la transition 2 −→ 4, d’où l’expression régulière sous forme de réunion
xy(x | y | z)∗ yyz
|
xyyz.
6. Construire, par l’algorithme de subset construction, un AFdc (Automate Fini déterministe complet) équivalent
à cet AF : on dessinera l’automate obtenu.
Indication : on devrait obtenir un AFdc à 7 états — on n’oubliera pas l’état de blocage...
−
1/1
2/2
×/3
34/4
3/5
345/6
36/7 +
x
y
z
2/2 ×/3 ×/3
×/3 34/4 ×/3
×/3 ×/3 ×/3
3/5 345/6 3/5
3/5 34/4 3/5
3/5 345/6 36/7
3/5 34/4 3/5
y
y
345/6
x|z
x|z
1/1
x
x|z
y|z
×/3
x|y|z
2/2
y
34/4
x
3/5
y
z
x|z
y
36/7
1. Attention à éviter tout contresens dans la lecture de l’énoncé : cette définition de L a été donnée en tout début d’énoncé,
avant sa première question : il n’est donc plus question ici des mots de L de longueur au plus 6 comme dans la première question,
ni du langage reconnu par l’AF étudié dans la question suivante...
Un énoncé de théorie des langages
3
7. En déduire l’Afdc minimal équivalent.
Reste à ≪ minimaliser ≫ cet AFdc par l’algorithme de Nérode ; les 6 états refusants permettent de
2
construire 6×5
2 = 15 peper tandis que le seul état acceptant n’en fournit aucune :
−
1
2
3
4
5
6
7 +
12
13
14
15
16
23
24
25
26
34
35
36
45
46
56
x
2
3
3
5
5
5
5
23◦
23◦
25◦
25◦
25◦
3◦
35◦
35◦
35◦
35◦
35◦
35◦
5◦
5◦
5◦
y
3
4
3
6
4
6
4
34◦
3◦
36◦
34◦
36◦
34◦
46◦
4◦
46◦
36◦
34◦
36◦
46◦
6◦
46◦
z
3
3
3
5
5
7
5
3◦
3◦
35◦
35◦
37•
3◦
35◦
35◦
37•
35◦
35◦
37•
5◦
57•
57•
12
13
14
15
23
24
25
34
35
45
12
13
15
23
25
35
13
25
x
23◦
23◦
25◦
25◦
3◦
35◦
35◦
35◦
35◦
5◦
23◦
23◦
25◦
3◦
35◦
35◦
23•
35•
y
34◦
3◦
36•
34◦
34◦
46•
4◦
36•
34◦
46•
34•
3◦
34•
34•
4◦
34•
3◦
4◦
z
3◦
3◦
35◦
35◦
3◦
35◦
35◦
35◦
35◦
5◦
3◦
3◦
35◦
3◦
35◦
35◦
3◦
35•
Nous voyons qu’il ne reste plus aucune peper en fin de calcul et que donc l’AFdc obtenu est l’AFdc minimal
du langage étudié.
Exercice II - Des grammaires
On considère la grammaire G dont l’ensemble des terminaux est {a, b, c}, dont l’ensemble des variables est
{S, X, Y, Z}, dont l’axiome est S et qui a pour ensemble de règles de production :
:
:
R3 :
R4 :
R1
R2
S−→ aX
Y −→ cbY
X−→ abcZ
X−→ aS
: X−→ abY c
: Z−→ abcZ
R7 : Y −→ ε
R5
R6
1. Cette grammaire est-elle régulière ? Linéaire ? Algébrique ? Pourquoi ?
Cette grammaire est algébrique car le membre gauche de chaque règle est une variable, elle est de plus
linéaire car en plus de la condition précédente on voit que le membre droit de chaque règle comporte soit
zéro, soit une variable. Elle est par contre non régulière car dans le membre droit d’au moins une règle –
R5 : X −→ abY c – la variable présente n’est pas en fin du membre droit.
2. Proposez 3 mots produits par la grammaire G en montrant pour chacun d’eux comment (production ou
arbre de dérivation) il est produit.
Les trois mots aabc, aabcbcbc et aaaabcbcbc appartiennent au langage produit, comme l’indiquent les
productions
R1
R5
R7
S =⇒ aX =⇒ aabY c =⇒ aabc,
R1
R5
R2
R2
R7
S =⇒ aX =⇒ aabY c =⇒ aabcbY c =⇒ aabcbcbY c =⇒ aabcbcbc et
R1
R4
R1
R5
R2
R2
R7
S =⇒ aX =⇒ aaS =⇒ aaaX =⇒ aaaabY c =⇒ aaaabcbY c =⇒ aaaabcbcbY c =⇒ aaaabcbcbc.
Comme la grammaire étudiée est algébrique (autrement dit context free), on peut préférer proposer des arbres
de dérivation :
2. La notation 23◦ indique que la paire 2 | 3 fait (pour l’instant) partie de la liste des peper tandis que 23• indique que cette
paire ne fait pas ou ne fait plus partie de la liste des peper .
Un énoncé de théorie des langages
4
S
S
R1
S
R1
a
X
a
R5
ab
R1
Y
c
R7
X
a
R5
ab
Y
c
R2
ε
cb
R4
a
Y
S
R1
a
R2
cb
X
Y
X
R5
ab
R7
ε
Y
c
R2
cb
Y
R2
cb
Y
R7
ε
3. Dessiner un ≪ automate fini ≫ qui montre quels sont les enchaı̂nements possibles entre règles lorsque l’on
cherche à produire des mots terminanux en partant du symbôle initial S ; en particulier, justifier que certaines
règles sont ≪ inaccessibles ≫ : on précisera clairement quelles sont ces règles inutiles.
Dans l’AF suivant, on note mcS pour ≪ mot contenant S pour seule variable ≫ :
R1
: S −→ aX
mcS
R5
: X −→ abY c
mcX
R4
mcY
: X −→ aS
R2
R3
R7
: Y −→ ε
mot terminal
: Y −→ cbY
: X −→ abcZ
mcZ
R6
: Z −→ abcZ
Aucun chemin depuis le départ jusqu’à l’acceptant ne passe par mcZ (état dit ≪ non co-accessible ≫ car il
n’en part aucun chemin vers un acceptant), ce qui indique que la variable Z et les règles R3 et R6 sont inutiles 3
.
4. À l’aide de l’≪ automate ≫ de la question précédente, déterminer
le langage produit par la grammaire
G. Indication : on devrait trouver a2m+2 (bc)n+1 : m, n ∈ N .
Toute production d’un mot terminal est donc de type suivant (en remarquant au préalable l’enchaı̂nement
R1
R4
S =⇒ aX =⇒ aaS) :
(R1 R4)m
R1
R5
(R2)n
R7
S =⇒ (aa)m S =⇒ (aa)m aX =⇒ (aa)m aabY c =⇒ (aa)m aab(cb)n Y c =⇒ (aa)m aab(cb)n εc
où (aa)m aab(cb)n εc = (aa)m+1 (bc)n+1 = a2m+2 (bc)n+1 et où les deux paramètres 4 sont des entiers naturels
quelconques et indépendants.
5. Montrer que le langage précédent peut être écrit sous forme d’expression régulière (on donnera une telle
expression régulière) et proposer une grammaire régulière qui engendre ce langage.
3. On remarquera que la grammaire obtenue après effacement des règles R3 et R6 reste (évidemment !) linéaire mais ne devient
pas pour autant régulière, la régle ≪ fautive ≫ R5 n’ayant pas été effacée. Cependant et comme on le verra plus loin, le langage
obtenu est aa(aa)∗ bc(bc)∗ et est donc régulier, et d’ailleurs on pourra proposer une autre grammaire, celle-là régulière, qui engendre
ce même langage.
4. Les trois mots aabc, aabcbcbc et aaaabcbcbc de la question 2 sont obtenus respectivement pour (m, n) = (0, 0), (m, n) = (0, 2)
et (m, n) = (1, 2).
Un énoncé de théorie des langages
5
Ce langage est décrit par l’expression régulière aa(aa)∗ bc(bc)∗ , il est reconnu par l’AF :
S
a
a
a
c
b
X
a
Y
c
b
il est donc produit par la grammaire régulière
({a, b, c} ; {S, X, Y } ; S; {S −→ aaX; X −→ aaX | bcY ; Y −→ bcY | ε})
6. On envisage maintenant le langage a2n+2 (bc)n+1 : n ∈ N .
6.a. Proposer une grammaire linéaire qui engendre ce langage.
Il est plus facile de présenter le langage à produire en mettant en évidence l’exposant n, soit donc :
2n+2
a
(bc)n+1 : n ∈ N = {(aa)n aabc(bc)n : n ∈ N}
Il s’agit maintenant de créer une règle qui produise un aa en début de mot en même temps qu’un bc en fin
de mot : S −→ aaSbc que l’on applique n fois à partir de l’axiome S pour arriver à (aa)n S(bc)n , mot que
l’on ≪ termine ≫ par la règle S −→ aabc.
Une grammaire produisant le langage proposé est donc :
({a, b, c} ; {S} ; S; {S −→ aaSbc; S −→ aabc})
6.b. Est-il possible de proposer une grammaire régulière qui engendre ce langage ? Justifier la réponse !
Un tel langage n’est pas régulier car, en cours de lecture d’un mot a2n+2 (bc)n+1 du langage, on doit
≪ mémoriser ≫ la valeur de l’entier n ∈ N, ce qui suppose une mémoire infinie et donc inaccessible à un
automate fini.
Plus précisément, si ce langage était régulier, alors il serait reconnaissable, il existerait donc un automate fini qui le reconnaı̂trait, on en déduirait donc un AFdc équivalent. Notons δ l’état de départ de cet
(hypothétique) AFdc. La liste d’états
δ · a2n+2 bc
:
n∈N
paraı̂t certes infinie du fait de son indexation par n ∈ N, mais notre AFdc ne compterait qu’un nombre fini
d’états, l’un au moins d’entre eux serait donc ≪ atteint ≫ pour plusieurs valeurs différentes de l’indice n,
nous aurions donc nécessairement 5 :
∃n ≥ 0 : ∃p > 0 : δ · a2n+2 bc = δ · a2n+2p+2 bc
d’où l’on déduirait, en lisant (bc)n depuis cet état, que :
δ · a2n+2 (bc)n+1 = δ · a2n+2p+2 (bc)n+1
et ce dernier état devrait être à la fois acceptant (car a2n+2 (bc)n+1 appartient au langage reconnu) et
refusant (car a2n+2p+2 (bc)n+1 n’appartient pas au langage reconnu).
Cette contradiction montre l’absurdité de l’hypothèse émise, à savoir la régularité du langage
2n+2
a
(bc)n+1 : n ∈ N
Exercice III - Automates finis & grammaires.
1. Soit un AFdc A sur l’alphabet a | b | c qui reconnaı̂t le seul mot a2007 .
5. Le lecteur remarquera que l’on peut prolonger ce raisonnement : de δ · a2n+2 bc = δ · a2n+2p+2 bc on déduirait que ∀k ≥ 0 :
δ · a2n+2 bc = δ · a2n+2kp+2 bc et donc que δ · a2n+2 (ap )∗ bc serait inclus dans le langage reconnu L.
Un énoncé de théorie des langages
6
1.a. Justifier que alors cet automate a au moins 2009 états...
On remarquera d’abord (même si la question n’était pas formellement posée) que l’AF :
−
a
1
2
3
..
.
i
..
.
2006
2007 +
×
0
a
b|c
a
1
b|c
a
i
2
b|c
b
×
×
×
..
.
c
×
×
×
..
.
i+1 ×
..
..
.
.
2007 ×
×
×
×
×
×
..
.
0
1
2
..
.
i+1
b|c
b|c
×
×
×
2006
a
b|c
2007
a|b|c
×
a|b|c
est déterministe et complet, qu’il comporte exactement 2009 états et qu’il reconnaı̂t le seul mot a2007 ... La
question posée est donc de savoir si l’on peut ≪ faire mieux ≫ que l’AFdc proposé ci-dessus !
Soit un AFdc dont je note le départ δ et qui reconnaı̂t ce langage. S’il existait deux entiers i, j avec
0 ≤ i < j ≤ 2008 mais pourtant δ · ai = δ · aj alors – du fait que 0 ≤ i < j ≤ 2008 et donc que 0 ≤ i ≤ 2007
— l’état δ · ai est sur le chemin menant de l’état de départ δ à l’état acceptant δ · a2007 :
δ
ai
δ · ai = δ · aj
a2007−i
δ · a2007
aj−i
on aurait un 6 autre mot reconnu a2007+(j−i) .
Cette contradiction impose que l’hypothèse faite – à savoir l’égalité de deux états parmi les δ · ai : 0 ≤
i ≤ 2008 – est absurde, il y a donc au moins autant d’états que d’entiers entre 0 et 2008 inclus, soit 2009.
1.b. En quoi la réponse précédente est-elle modifiée si l’alphabet est réduit à la seule lettre a ?
En rien ! Dans la démonstration précédente, on n’a pas utilisé les lettres b et c, on a ≪ besoin
l’état poubelle pour rejeter les mots du type ai avec i > 2007.
≫
de
2. On a étudié en cours la grammaire (linéaire) 7 S −→ aSb | ε qui produit le langage {an bn : n ≥ 0}. En
vous inspirant de cet exemple, proposer des grammaires pour chacun des langages suivants (on se contentera
d’en énoncer les règles...) :
2.a. a2 n (bc)3 n : n ≥ 0 ,
S −→ aaSbcbcbc | ε
2.b. a2 n b3 c2007 n : n ≥ 0 ,
S −→ aaSc2007 | bbb
6. On aurait même une infinité de mots reconnus : en notant m = j − i avec m > 0 puisque i < j, on voit que tous les mots de
a2007 (am )∗ seraient reconnus...
7. Comme à l’habitude, les variables sont notées par des lettres majuscules et les terminaux par des lettres minuscules, la variable
de départ est S comme start : on se contente donc pour définir cette grammaire d’en énoncer les régles de production qui sont donc
S −→ aSb et S −→ ε.
Un énoncé de théorie des langages
7
2.c. a2 n b3 n c2007 : n ≥ 0 ,
S −→ Xc2007
;
X −→ aaXbbb | ε
2.d. {am bn : m ≥ n ≥ 0},
S −→ XY
;
X −→ aX | ε
;
Y −→ aY b | ε
encore que
S −→ aS | aSb | ε
ne manque pas non plus d’élégance.
2.e. langage des mots sur {a; b} qui comportent autant de a que de b.
On admirera la règle AB −→ BA, dite shuffle :
S −→ ASB | ε
;
AB −→ BA ;
A −→ a
;
B −→ b
2.f. langage des mots sur {a; b; c} qui comportent autant de a que de b.
Par rapport au cas précédent – la lettre supplémentaire c qui apparaı̂t dans des positions et quantités
quelconques, alors que l’égalité des nombres de a et de b doit elle être maintenue – il ≪ suffit ≫ de
permettre la production des c en nombre quelconque au début du processus (ainsi, en appliquant k fois la
′
règle S −→ ASB et k ′ fois la règle S −→ Sc, on produit Ak Sck B k puis en appliquant S −→ ε on obtient
′
Ak ck B k , il s’agit ensuite de pouvoir non seulement échanger l’ordre des A et des B mais aussi de pouvoir
déplacer les c parmi les A et les B :
S −→ ASB | Sc | ε
;
AB −→ BA ;
Ac −→ cA
;
Bc −→ cB
;
A −→ a
;
B −→ b
Exercice IV - Des transitions ≪ instantanées ≫.
1. On désire construire l’AFdc minimal sur l’alphabet x | y | z du langage x∗ y ∗ zx∗ y ∗ ,
On propose pour cela l’AF (évidemment non déterministe) suivant :
− 1
2
3
4
ε
2
x y
1
2
3
4
4
+
z
3
En enchaı̂nant les procédés vus en cours (suppression des transitions ≪ instantanées ≫, subset construction,
algorithme de Nérode), construire l’AFdc minimal équivalent.
Comme à l’habitude et en suivant les chemins depuis le départ 1 vers l’acceptant 4, on obtient une
expression régulière du langage reconnu x∗ εy ∗ εzx∗ εy ∗ qui se simplifie fort heureusement en x∗ y ∗ zx∗ y ∗ .
ε
1
2
z
y
x
ε
3
4
y
x
On constate d’abord que
1·ε = 1| 2 ;
2·ε = 2 ;
3·ε=3|4 ;
ce qui nous permet de retirer les transitions instantanées :
− 1
− 2
3
4
+
x y
12
2
34
4
y
z
y
z
2
x
34
z
1
x
4·ε=4
3
x
4
x
Un énoncé de théorie des langages
8
puis d’appliquer 8 l’algorithme de subset construction et enfin de représenter l’AFdc obtenu :
x
−
12/1
2/2
34/3 +
×/4
4/5 +
x
z
12/1
x
y
z
12/1 2/2 34/3
×/4 2/2 34/3
34/3 4/5 ×/4
×/4 ×/4 ×/4
×/4 4/5 ×/4
34/3
y
z
z
y
2/2
y y
x
×/4
4/5
x|z
x|y|z
Reste à ≪ minimaliser ≫ cet AFdc par l’algorithme de Nérode ; les 3 états refusants permettent de construire
3×2
9
2 = 3 peper tandis que les 2 états acceptants fournissent une quatrième peper :
−
x
y
z
1
2
3
4
2
3
3
5
4
4
4
4
4
5
4
14◦ 2◦ 3◦
14◦ 24◦ 34•
4◦ 24◦ 34•
34• 5◦ 4◦
14• 2◦ 3◦
1
2
3 +
4
5 +
12
14
24
35
12
Nous voyons qu’il ne reste plus aucune peper en fin de calcul et que donc l’AFdc obtenu est l’AFdc minimal
du langage x∗ y ∗ zx∗ y ∗ .
2. On envisage maintenant l’AF :
− 1
2
3
4
5
ε
2
3
5
x y
1
2
z
4
3
+
5
2.a. Proposer une expression régulière de son langage reconnu.
1
L’AF
x
ε
2
ε
y
ε
3
z
x
5
reconnaı̂t x∗ y ∗ (zx)∗ y ∗ .
y
4
2.b. Construire l’AFdc minimal équivalent.
On constate d’abord que
1·ε=1|2|3|5
;
2·ε = 2|3 |5
;
3·ε =3 | 5
;
4·ε =4
;
5·ε = 5
ce qui nous permet de retirer les transitions instantanées :
−
−
−
−
1
2
3
4
5
x
1235
y
z
235
4
35
+
5
8. Comme à l’habitude, nous notons 12 pour 1 | 2 et × pour le ≪ blocage ≫, nous avons aussi renuméroté les états dans leur
ordre de création c’est-à-dire en ≪ largeur d’abord ≫.
9. La notation 14◦ indique que la paire 14 fait (pour l’instant) partie de la liste des peper tandis que 14• indique que la paire
14 ne fait pas ou ne fait plus partie de la liste des peper .
Un énoncé de théorie des langages
9
puis d’appliquer l’algorithme de subset construction :
−
1235/1
235/2
4/3
×/4
35/5
5/6
+
+
+
+
1235/1 235/2 4/3
×/4
235/2 4/3
35/5
×/4 ×/4
×/4
×/4 ×/4
×/4
5/6
4/3
×/4
5/6 ×/4
Nous pouvons représenter l’AFdc obtenu :
x
4/3
z
1235/1
x
35/5
z
y
y|z
z
y
y
x
235/2
x
×/4
5/6
x|y
y
x|y|z
Reste à ≪ minimaliser ≫ cet AFdc par l’algorithme de Nérode ; les 4 états acceptants permettent de
10
construire 4×3
:
2 = 6 peper tandis que les 2 états refusants fournissent une septième peper
−
1
2
3
4
5
6
12
15
16
25
26
34
56
25
26
56
25
+
+
+
+
x
1
4
5
4
4
4
14•
14•
14•
4◦
4◦
45•
4◦
4◦
4•
4•
4◦
y
2
2
4
4
6
6
2◦
26◦
26◦
26◦
26◦
4◦
6◦
26◦
26◦
6◦
26•
z
3
3
4
4
3
4
3◦
3◦
34◦
3◦
34◦
4◦
34◦
3◦
34◦
34◦
3◦
Nous voyons qu’il ne reste plus aucune peper en fin de calcul et que donc l’AFdc obtenu est l’AFdc minimal
du langage x∗ y ∗ (zx)∗ y ∗ .
10. La notation 14◦ indique que la paire 14 fait (pour l’instant) partie de la liste des peper tandis que 14• indique que la paire
14 ne fait pas ou ne fait plus partie de la liste des peper .