Académique Documents
Professionnel Documents
Culture Documents
Q1. (1 pt) Donnez une grammaire ou des équations de langage (dites équations d’Arden) qui
génèrent le langage reconnu par l’automate ci-dessous :
b a
a
$
/ 1 j 2
T
a,b
b
solution
Q2. (1 pt) Donnez une grammaire qui reconnaît les expressions bien parenthésées écrites sur l’al-
phabet à 5 symboles { (, [, e, ], ) } (la virgule et les accolades ne font pas partie de l’alphabet).
Exemple : "([)]" et "(()" sont mal parenthésées. "e", "[()[]]" et "([(ee)e])" sont bien paren-
thésées.
solution
S → e
S → S · S
S → (·S·)
S → [·S·]
Q3. (1 pt) Les palindromes sont les mots qui sont inchangés par renversement.
Exemple : "", "a", "abba", "abcba" sont des palindromes sur l’alphabet {a, b, c }.
Donnez une grammaire qui reconnait les palindromes sur l’alphabet {a, b, c}.
solution
S →
S → a
S → b
S → c
S → a · S · a
S → b · S · b
S → c · S · c
Q4. (1 pt) Donnez l’arbre de dérivation qui permet à la grammaire suivante de générer le mot
"abccba".
1 3 4
S −→ S −→ S · S S −→ b · S · a
2 5
S −→ c · S S −→ a · S · b
solution
S
↓3
z }| {
S · S
↓5 ↓2
z }| { z }| {
a · S · b c · S
↓1 ↓2
z}|{ z }| {
c · S
↓4
z }| {
b · S · a
↓1
z}|{
Q5. (1 pt) Ajoutez des attributs synthétisés sur la Figure 1 afin que la grammaire précédente
calcule le nombre de a, de b et de c du mot et retourne le résultat sous la forme d’un triplet (na , nb , nc ).
a b
• •
γ/ γ γ /γ
/ 1 / 2
γ/γ
Nom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prénom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
S {(0, 0, 0)}
↓1
S {(na , nb , nc + 1)}
↓2
c · S {(na , nb , nc )}
S {(na + 1, nb + 1, nc )}
↓4
b · S {(na , nb , nc )} · a
S {(na + 1, nb + 1, nc )}
↓5
a · S {(na , nb , nc )} · b
Q7. Question de cours (1 pt) Rappelez les conditions pour qu’un mot m soit reconnu par un
automate à une pile A.
solution
Un mot m est reconnu par un automate à une pile A si il existe une exécution de A qui commence dans l’état
initial de A avec une pile vide qui consomme toutes les lettres/symboles du mot m et atteint un état accepteur
avec une pile vide.
Q8. (0.5 pt) Décrire par une phrase en français le langage L = {ω ∈ {a, b}∗ | |ω|a = |ω|b }
Indication : On rappelle que |ω|` est le nombre d’occurences du symbole ` dans le mot ω.
solution
L est le langage formé des mots sur l’alphabet Σ = { a, b} qui ont autant de a que de b (sans tenir compte de
l’ordre des lettres).
Q9. (0.5 pt) Donnez trois mots de Σ∗ qui appartiennent au langage L et trois mots de Σ∗ qui
n’appartiennent pas à L. En particulier, que dire du mot ?
solution
, abab, baab ∈ L
a, b, abb ∈
/L
Q10. (1.5 pt) Donnez un aup qui reconnaît le langage L.
solution
/
_ a
a '
/ 1 γ/ γ
b
7 2_
a
b /γ γ/ γb
γ
b
a /γ a , b
γ
a b
a a b
γ/ γ γ / γb
Q11. (1 pt) Donnez un arbre de dérivation correspondant au flot [h !(b && !(b)) && (x+y = z+1) i]
Parsing de proposition On définit en caml le type prop des propositions booléennes dont les
constructeurs permettent de représenter des variables, des booléens, des équations entre expressions,
des conjonctions, des disjonctions, des négations.
Q12. (1.5 pt) Complétez la grammaire de la Figure 2 avec des attributs afin de générer la propo-
sition (de type prop) correspondant au flot passé en paramètre au parser Prop .
Exemple : Appliqué au flot [h a || (2 * x = y) i] le parser Prop produit
la proposition OU( V("a") , EQ(e1 ,e2 ) ) de type prop où e1 (respectivement e2 ) est l’expression
de type expr retournée par l’appel au parser Expr [h 2 * x i] (respectivement au parser Expr [h y i]).
Q13. (1 pt) Donnez la proposition de type prop produite par le parser Prop de la question Q12
appliqué au flot [h !(b && !(b)) && (x+y = z+1) i].
solution
et(neg(et(v("b"), neg(v("b")))), eq(Expr [h x+y i], Expr [h z+1 i]))
Q14. (1.5 pt) Complétez le code caml de la fonction simpl afin qu’elle applique des règles simpli-
cations de conjonctions telles que (p ∧ ¬p) ≡ false, (p ∧ true ) ≡ p, . . .
let (negation: prop → prop) = function
| B(b) → B(not b)
| Neg(p) → p
| p → Neg(p)
Q15. (0.75 pt) Que donne la fonction simpl sur la proposition issue de la reconnaissance de
[h !(b && !(b)) && (x+y = z+1) i].
solution
On obtient la proposition eq(Expr [h x+y i], Expr [h z+1 i]) qui correspond à (x + y = z + 1).
Q16. (1 pt) Donnez les modifications à apporter à la grammaire pour qu’elle effectue la simplification
lors de la reconnaissance.
solution
Il suffit de modifier les règles 1 et 2 de la grammaire comme suit :
Prop {simpl p } Prop {simpl p }
↓1 ↓2
( · Prop { p} · ) Lit { p1 } · {p1 } OpProp {p }
Q17. (1.25 pt) On aimerait ajouter l’opérateur d’implication => au langage des propositions. Donnez
les modifications à apporter à la grammaire pour traiter l’implication.
solution
Rappelons que (A ⇒ B) ≡ (¬A ∨ B). Il suffit donc d’ajouter la régle suivante à la grammaire
{p1 } OpProp { ou(neg(p1 ), p2 )}
↓9
=> · Prop {p2 }
Nom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prénom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Prop {p}
↓1
( · Prop {p} · )
Prop {p}
↓2
Lit {p1 } · {p1 } OpProp {p}
Lit {v(v)}
↓3
Var {v }
Lit {eq(e1 , e2 )}
↓4
( · Expr {e1 } · = · Expr {e2 } · )
Lit {neg(p)}
↓5
! · Prop {p}
Q18. (0.5 pt) Dessinez l’automate obtenu par élimination des -transitions dans l’automate ci-
dessous
a b
/ 1 j *
2
a
solution
a b
a,b
$
/ 1 j 2
a U
a
/
Q20. (0.5 pt) Donnez un automate complet qui reconnaît le langage Σ
solution
a,b,c
/ a,b,c
/ a,b,c,
/
/ a,b,c
/ a,b,c
/
solution
L1 • L2 = { ω1 .ω2 | ω1 ∈ L1 , ω2 ∈ L2 }
Q23. (0.5 pt) Décrivez en une phrase en français le langage reconnu par l’expression régulière Σ • Σ∗
solution
L’automate reconnaît les mots d’au moins une lettre, écrits sur l’alphabet { a, b, c }.
/ a,b,c
/
/ a,b,c
/ ou sa version minimale /
On considère l’automate suivant qui comporte deux états initiaux et un état accepteur :
A 1i 2 3i 4a
a 1, 2 3 4
b 1 3 4
Q26. (1 pt) Rappelez la définition de l’acceptation d’un mot par un automate non-déterministe.
solution
Un mot est reconnu/accepté par un automate s’il existe une exécution de l’automate
1. qui commence/débute dans un état initial
2. qui consomme toutes les lettres du mot
3. qui se termine dans un état accepteur
Q27. (1 pt) Donnez l’arbre d’exécution de l’automate sur le mot « aabb ». Dessinez toutes les
branches, celles qui n’acceptent pas le mot et celles qui l’acceptent.
solution
a a b b
1, aabb −→ 1, abb −→ 1, bb −→ 1, b −→ 1, : acc
a
1, aabb −→ a b b
1, abb −→ 2, bb −→ 3, b −→ 4, : acc
a a b
1, aabb −→ 2, abb −→ 3, bb −→ 4, b 6→
a
3, aabb −→
4, abb 6→
Q28. (1.5 pt) Déterminisez l’automate et donnez le résultat sous forme de tableau.
solution
Det(A) {1} {1, 2} {1, 2, 3} {1, 2, 3, 4}a {1, 2, 4}a {1, 3}i {1, 3, 4}a {1, 4}a
a {1, 2} {1, 2, 3} {1, 2, 3, 4} {1, 2, 3, 4} {1, 2, 3} {1, 2, 4} {1, 2, 4} {1, 2}
b {1} {1, 3} {1, 3, 4} {1, 3, 4} {1, 3} {1, 4} {1, 4} {1}
solution
Les états de AD sont les sous-ensembles de copies de A s’exécutant en parallèle à partir d’un état différent.
Par exemple, l’état { 1, 3} de AD signifie que la suite du mot sera analysée en parallèle par une copie de A dans
l’état 1 et une copie de A dans l’état 3.
Q30. (0.25 pt) Étant donné un automate non-déterministe A à n états, quel est le nombre maximal
d’états que peut avoir la version déterminisée AD ?
solution
AD aura au maximum 2n états car 2n est le nombre de sous-ensembles différents qu’on peut construire avec
n éléments/états.
Exercice 6 : Minimisation (4 pt)
A1 1i 2a 3a A2 1ai 2a 3a A3 1i 2 3
Q31. a 2 1 2 Q32. a 2 1 2 Q33. a 2 1 2
b 3 3 b 3 3 b 3 3
solution
— (1.5 pt) On commence par compléter l’automate A1 avec un état puit 0. On calcule les classes d’équiva-
lence
* initial partition = { {0,1,2,3} }
— Aucun état accepteur donc le langage de A3 est L (A3 ) = ∅ et l’automate minimal qui reconnaît ∅ sur
Σ = { a, b} est
A3 m Eq{1, 2, 3}i
a Eq{1, 2, 3}
b Eq{1, 2, 3}