Vous êtes sur la page 1sur 9

Nom

ou

..................................

Numro d'tudiant

Prnom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Groupe . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . si l'examen est anonyme

RICM3  Automates et Grammaires


Dure : 1h30, sans documents.








Tous les appareils lectroniques sont interdits l'exception des montres


Le barme est donn titre indicatif
Le sujet comporte 3 exercices indpendants
Il est not sur 30
Rpondez sur votre copie sauf pour les questions avec pointills
N'oubliez pas de mettre votre nom ou votre numro d'tudiant sur le sujet
Commencez par lire tout le sujet pour reprer les questions faciles

Exercice 1 : Reconnaissance d'un terme par un automate d'arbre (5min)

1.5 pt

On considre l'alphabet = { a, f#2 , g#1 } et l'automate d'arbre dni par les transitions suivantes :

f(

Qa (a)

g(

2
Qg (x) )
Qg ( g(x) )

g(

3
Qa (x) )
Qg ( g(x) )

4
Qg (x), Qg (y) )
Qf ( f(x, y) )

o
 Qa , Qg , Qf reprsentent les tats de l'automate d'arbre,
 Qf est l'unique tat accepteur
 x et y sont des variables
0.5 pt

Q1.

Donnez un terme qui n'est pas reconnu par l'automate ?


solution

a conduit

ou bien

Qa (a) et l'tat Qa n'est pas accepteur.

f(a,a) conduit f(

Qa (a), Qa (a) ) et aucune rgle de drivation ne permet de poursuivre l'excution.

1 pt

Q2.

l'automate

Donnez l'excution qui permet de montrer que le terme

f(g(a),g(a))

est reconnu par

solution
f(
f(

g(a),

g(a)

1
g( Qa (a) ),
3
Qg (g(a)),

f(
4
Qf ( f(g(a), g(a)) )

On a lu tout le terme et

1 pt

Qf

)
1
g( Qa (a) ) )
3
Qg (g(a)) )

est un tat accepteur.

Exercice 2 : Expressions rgulires

(5min)

Q1.

0.25 pt

On note L l'ensemble des lettres minuscules et C l'ensemble des chires. Donnez l'expression
rgulire qui dcrit les noms de variables forms sur l'alphabet = L C { - } sachant qu'un
identicateur est form d'au moins un caractre et doit commencer par un lettre ou un soulign.
def

id = (L + -). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Dnition de l'oprateur   sur les expressions rgulires


0.25 pt

Q2.
On note L (e) le langage associ l'expression rgulire e. Soit e1 et e2 deux expressions
rgulires, dnissez l'oprateur  priv de , note  - 
def

L (e1 e2 ) = L (e1 ) \ L (e2 ) = L (e1 ) L (e2 )

l'aide des oprateurs ensemblistes ,


0.25 pt

et

Q3.
Soit A1 l'automate associ e1 et A2 l'automate associ e2 , expliquez comment construire
l'automate associ e1 e2 .
L (e1 e2 ) = L (e1 ) L (e2 )
= L (A1 ) L (A2 )
= L (A1 AC
2)

Donc l'automate associ e1 e2 est A1 AC


2 .
0.25 pt

Q4.

Donnez l'expression rgulire qui dcrit les noms de variables de la question 1 mais en
interdisant les mots-clefs if,then,else.
def

id = ((L + -). ) (if + then + else)

4 pt

Exercice 3 : Inclusions de langages

(20min)

On considre l'alphabet = {a, b} et les langages L1 L5 ci-dessous. Comparez les langages 2 2


et indiquez les relations qu'ils vrient : (inclusion large), (inclusion stricte), = (galit), ou bien
intersection vide. Justiez chacunes de vos rponses par un raisonnement ou un contre-exemple.
Les justications comptent pour 23 des points. Attention, le fait de dcrire en franais ce que reprsente
l'expression rgulire n'est pas considr comme un raisonnement.
def
 L1 = L ( )
def

 L2 = L ( (b + a) )
def

 L3 = L ( ((a ).b + a.(b )) )


def

 L4 = L ( a + b )
def

 L5 = L ( (ab) )

3 pt

Exercice 4 : Grammaires attribues des ottants

(15min)

On utilise les notations suivantes pour les non-terminaux F pour Flottant, E pour partie Entire, D
pour partie Dcimale, C pour Chire, P pour le Point qui spare la partie entire de la partie dcimale.
On donne la grammaire qui dnit les critures des nombres ottants :
(1)

F E P D
(2)

E C
(3)

E C E
(4)

P "."

(5)

D C

(6)

D C D

(7)

C
"0" | "1" | . . . | "9"

0.75 pt

Q1.
Donnez l'arbre de drivation qui permet de gnrer le ottant 20.01 et indiquez chaque
drivation le numro de la rgle utilise.
solution

z
z

C
(7)
"2"

E
(2)
}|

E
(3)
C
(7)
"0"

F
(1)
}|
P
(4)
"."

C
(7)
"0"

D
(6)
}|

D
(6)
C
(7)
"1"

Q2.

0.75 pt

Compltez la grammaire des chires dcimaux avec un attribut an qu'elle retourne le nombre
de dcimales lues. Par exemple D doit retourner 3 lorsqu'elle reconnat la partie 007 du ottant 18.007

D .................

(4)

C ..........................................................

0)

D . . . . . . . . . . . . . . . . . (4
C

(4)

D {d} C ; {d := 1}

D {d}

1.5 pt

(40 )

C D {d0 } ; {d := d0 + 1}

Q3.

Compltez la grammaire des ottants avec le calcul des attributs an que le non-terminal F
retourne le ottant f reconnu.

(1)

F {f }
(2)

(3)

{i} E {e} C {c} ; {i0 := i 10 + c} ;


{i0 } E {e0 } ; {e := e0 }
P

(4)

"."

4.1

Q4.
4 pt

{0} E {e} P {0} D {(n, d)} ; {f := e + (n/10d )}

{i} E {e} C {c} ; {e := c}

(5)

{i} D {(n, d)}

(6)

{i} D {(n, d)}

(7)

C {c}

4 pt

........................... D ...........................

C {c} ; {d := 1 ; n := 10 i + c}
C {c} ; {i0 := 10 i + c} ;
{i0 } D {(n0 , d0 )} ; {d := d0 + 1 ; n := n0 }

"0" ; {c := 0}
"1" ; {c := 1}
...
"9" ; {c := 9}

Grammaires des listes html

(15min)

Donnez une grammaire qui dnit les documents html forms des balises suivantes

<html> <ol> <li> </li> </ol> </html>

o
 <html> indique le dbut (et </html> la n) d'un document html
 <ol> indique le dbut (et </ol> la n) d'une liste
 <li> indique le dbut (et </li> la n) d'un item (lment de la liste)
La grammaire doit tre telle que
 on ne s'occupe pas des espaces, de l'indentation et des sauts de ligne
 un document html commence par <html> et se termine par </html>
 entre les balises <html> et </html> on peut mettre 0 ou plusieurs listes
4






entre les balises <ol> et </ol> il doit y avoir au moins un item


entre les balises <li> et </li> on peut mettre 0 ou plusieurs mots et 0 ou plusieurs listes
on ne peut mettre des mots qu'entre les balises <li> et </li>.
les mots sont forms de (0 ou plusieurs) lettres de l'alphabet et de 0 ou plusieurs espaces

Exemples de documents accepts par la grammaire


<html>
<ol>
<li> premier item</li>
<li> second item
mots avant la sous liste
<ol>
<li></li>
</ol>
mots apres la sous liste
</li>
<li> dernier item</li>
</ol>
</html>

<html>
<ol>
<li></li>
</ol>
<ol>
<li></li>
</ol>
</html>

<html>
</html>

Exemples de documents rejets par la grammaire


<html>
<ol></ol>
</html>

<html>
<ol> pas de mots ici
<li> mots </li>
</ol>
</html>

<html>
pas de mots ici
</html>

solution

H <html> Ls </html>
Ls 
Ls L Ls
L <ol> I </ol>
I <li> M Ls M </li>
II I
M 
M LM
L a | ... | z |

5 pt

Exercice 5 : Dterminisation d'automate


On considre l'automate :
A i 1 2 3 4a
a 1, 2 3
4
b
1 3 4 4

0.25 pt

Q1.

Dessinez l'automate.
5

(20min)

0.75 pt

Q2.

Donnez une excution qui montre que le mot "aabbaa" est reconnu par l'automate A.
solution
a

(1, "aabbaa")
(1, "abbaa")
(1, "bbaa")
(1, "baa")
(1, "aa")
(2, "a")
(3, "") ne marche pas car 3
/
Accept(A)
a

mais l'excution (1, "aabbaa")


(2, "abbaa")
(3, "bbaa")
(4, "baa")
(4, "aa")
(4, "a")
(4, "") accepte
le mot car on a lu tout le mot et 4 Accept(A)

2 pt

Q3.

Donnez, sous forme de tableau, un automate dterministe quivalent l'automate A.


solution

A
a
b

0.25 pt

Q4.

{1}
{ 1, 2 }
{1}

{ 1, 2 }
{ 1, 2, 3 }
{ 1, 3 }

{ 1, 2, 3 }
{ 1, 2, 3 }
{ 1, 3, 4 }

{ 1, 3 }
{ 1, 2 }
{ 1, 4 }

{ 1, 3, 4 }a
{ 1, 2, 4 }
{ 1, 4 }

{ 1, 4 }a
{ 1, 2, 4 }
{ 1, 4 }

{ 1, 2, 4 }a
{ 1, 2, 3, 4 }
{ 1, 3, 4 }

{ 1, 2, 3, 4 }a
{ 1, 2, 3, 4 }
{ 1, 3, 4 }

Que signie qu'un automate A est quivalent un automate B ?


solution

Cela signie que L (A) = L (B).

0.75 pt

Q5.

Rappelez la condition d'acception d'un mot par un automate non-dterministe.


solution

0.25 pt

Un mot est accept par un automate non-dterministe s'il existe


une excution
de A partant d'un tat
initial qui consomme tout le mot et se termine sur un tat accepteur avec le mot vide .

0.25 pt

Q6.

Justiez que le mot "ababaa" n'est pas reconnu par l'automate A.

0.25 pt

0.25 pt

1 pt

solution

Puisque AD est quivalent A, il sut de considrer la version dterministe de l'automate.


Ainsi il n'y a qu'une excution considrer tandis qu'avec l'automate non dterministe on doit examiner toutes
les excutions possibles : chaque transition non-dterministe ore conduit plusieurs excutions (une par choix).
Excution de l'automate dterministe AD sur "ababa"
a

0.25 pt

"ababa"

est rejet car

{ 1, 2 }
/ Acc(AD )

1 pt

1.25 pt

({ 1 }, "ababa")
({ 1, 2 }, "baba")
({ 1, 3 }, "aba")
({ 1, 2 }, "ba")
({ 1, 3 }, "a")
({ 1, 2 }, "")

solution

Excutions de l'automate non-dterministe A sur "ababa"a


a

(1, "ababa")

(1, "baba")
(1, "aba")

(1, "ba")
(1, "a")
a

(1, "") :
a

(2, "") :
a

(2, "ba")
(3, "a")
:
a

(2, "bab")
(3, "ab")
:

rejet car

1
/ Acc(A)

rejet car

2
/ Acc(A)

pas de suite dexcution possible

pas de suite dexcution possible

4 pt

Exercice 6 : Modlisation de politiques de scurit

(20min)

On considre un rseau constitu de deux parties : un rseau  sr  car protg par un pare-feu et
l'internet.
Pour contrler l'usage des machines sur le rseau on installe sur chaque compte utilisateur un moniteur
de scurit qui observe les commandes suivantes :
 login qui lance la session principale
 quit qui ferme la session principale
 rlogin qui permet d'ouvrir une connection sur une machine du rseau protg
 ssh qui permet d'ouvrir une session avec encryption des changes sur une machine hors du rseau
protg.
 exit qui permet de fermer toutes les sessions en cours (sauf la session principale)
Dans cet exercice on considre que les autres commandes que tape l'utilisateur ne sont pas soumises
au contrle de scurit.
Principe d'un moniteur de scurit : Un moniteur de scurit prend en entre une politique
de scurit P dcrite sous la forme d'une expression rgulire ou d'un automate ( nombre)

d'tats ni ou d'un automate une pile dterministe. Il autorise uniquement les squences
de commandes qui appartiennent au langage L (P ).

0.25 pt

Q1.

Donnez l'alphabet considre par les politique de scurit sur ce rseau.


solution

= { login, quit, rlogin, ssh, exit }

0.75 pt

Q2.
Donnez 3 exemples de squences de commandes qui respectent toutes les contraintes de la
politique de scurit n 1 ci-dessous et 3 exemples de squences de commandes qui ne les respectent
pas.
Politique de scurit n 1 :
1. La session principale commence par un login et se termine par quit
2. au coeur de la session principale on peut eectuer des sessions ssh et des sessions
rlogin

3. on ne peut ouvrir qu'une session rlogin la fois qu'on doit fermer par exit
4. on ne peut ouvrir qu'une session ssh la fois qu'on doit fermer par exit
5. on ne peut pas avoir simultanment une session ssh et une session rlogin
solution

{ login.quit, login.ssh.exit.quit, login.rlogin.exit.ssh.exit.quit} L (P1 )


{ login, login.ssh.ssh.exit.exit.quit, login.ssh.rlogin.exit.exit.quit } L (P1 ) =

1 pt

Q3.

Donnez une expression rgulire P1 qui dcrit la politique de scurit n 1.


solution

On accepte deux rponses :


def

P1 = login.((ssh + rlogin).exit) .quit login.(ssh.exit + rlogin.exit) .quit



def
P1 = login.(ssh.exit + rlogin.exit) .quit

1 pt

Q4.

Donnez un automate tats nis P2 qui dcrit la politique de scurit n 2.

Politique de scurit n 2 :

1. La session principale commence par un login et se termine par quit


2. au coeur de la session principale on peut eectuer soit des sessions ssh, soit une session
rlogin

3. on peut ouvrir au plus une session rlogin qu'on doit chacune fermer par exit
4. on peut ouvrir au plus deux sessions ssh la fois qu'on doit chacune fermer par exit
5. il est interdit d'avoir simultanment des sessions ssh et rlogin.
solution
quit

quit

On accepte deux rponses : soit la transition 2 1 avec 1 accepteur ou bien la transition 2 7 vers un
tat 7 accepteur.

def

A2 =

?()*+
/.-,
>=<
/ 89:;
1 j
J

quit

login

* ?>=<
89:;
2 j

quit

?>=<
89:;
5

?>=<
89:;
6 j

* ?>=<
89:;
3 j

ssh
exit
rlogin

ssh

* ?>=<
89:;
4

exit

exit

1 pt

Q5.

Donnez un automate P3 qui dcrit la politique de scurit n 3.

Politique de scurit n 3 :
1.
2.
3.
4.

La session principale commence par un login et se termine par quit


au coeur de la session principale on peut eectuer uniquement sessions ssh
on autorise plusieurs sessions ssh simultanes.
on peut ouvrir autant de session ssh qu'on veut mais on devra fermer chacune des
sessions par la commande exit. Autrement dit si on fait ssh.ssh.ssh il faudra ensuite
faire exit.exit.exit.
solution

Pour plus de clart on n'indique pas la pile sur les transitions lorsqu'elle ne joue aucun rle et qu'elle n'est pas
modie.

?()*+
/.-,
>=<
/ 89:;
1

ssh:/ s

login

quit
/

4 pt


+ ?>=<
89:;
2
U

exit: s /

Exercice 7 : Minimisation d'automate


On considre l'automate suivant :
A i 1 2a 3 4a 5 6 7
a
b

2
3

2
3

4
9

4
5

8 9 10 11 12a
7 11 4 12 9 10 4 12
4 4 7 8 10 9 11 6

(20min)

0.75 pt

Q1.
Le langage reconnu par l'automate de la question prcdente est-il vide ? Justiez votre
rponse.
solution
a

L (A) 6= car l'excution (1, "a")


(2, "") reconnat le mot "a" puisque 1 Init(A) et 2 Accept(A)

2 pt

Q2.

Les

2
3

Minimisez l'automate en justiant chaque tape de l'algorithme


des points sont attribus aux justications.
solution
non-accepteurs

accepteurs

}|
{
z
}|
{ z
{ 2a , 4a , 12a } { i 1, 3, 5, 6, 7, 8, 11, 9, 10 }
|
{z
} |
{z
}
G1
b

5, 6
4 G1

G2

tandis que

1, 3, 7, 8, 11, 9, 10
G2

{ 2, 4, 12 } { 1, 3, 7, 8, 11, 9, 10 } { 5, 6 }
{z
} | {z }
| {z } |
G1
b

G2

4, 12
5, 6 G3

G3

tandis que

2
C G2

{ 2 } { 1, 3, 7, 8, 11, 9, 10 } { 5, 6 } { 4, 12 }
{z
} | {z } | {z }
|{z} |
G1
a

G2

3, 7, 8, 11
G4

tandis que

G3
a

1
2 G1

G4

et que

9, 10
9, 10 G2

{ 2 } { 3, 7, 8, 11 } { 5, 6 } { 4, 12 } { 1 } { 9, 10 }
|{z} |
{z
} | {z } | {z } |{z} | {z }
G1

G2
b

3
9 G6

G3

tandis que

G5

G4

G6

7, 8, 11
7, 8, 11 G2

{ 2 } { 7, 8, 11 } { 5, 6 } { 4, 12 } { 1 } { 9, 10 } { 3 }
|{z} | {z } | {z } | {z } |{z} | {z } |{z}
G1

G2

G3

Vrication de la stabilit
A i G5
G1 a
G7
a
G1
G1
G4
b
G7
G7
G6
(1)

0.25 pt

1 pt

Q3.

(2)

(3)

G4

(4)

(2)

(2)

(4)

(4)

(3)

(3)

(9)

(5)

G4 a
G4
G3

G5

(5)
(7)
(4)

G7

G6

G3
G2
G4

(6)
(11)
(4)

G3
G2
G4

(7)
(4)
(7)

G2
G4
G2

(8)
(12)
(8)

G2
G4
G2

(9)
(9)
(10)

G6
G6
G6

(10)
(10)
(9)

G6
G6
G6

(11)
(4)
(11)

G2
G4
G2

(12)
(12)
(6)

Donnez l'automate minimis sous forme de tableau.

Q4.
L'automate de la question prcdente reconnat-il le langage universel
votre rponse.

{a, b} ?

Justiez

solution

L (A) 6= . En eet :
 le langage est reconnu par un automate un unique tat (qui est initial et accepteur, il n'a pas d'tats
non-accepteur).
 Si A reconnassait le langage universel, sa version minimis aurait un seul tat.
 L'automate minimis possde au moins deux tats (puisque l'automate de dpart des tats accepteurs et
des tats non-accepteurs).
 Conclusion : A ne peut tre quivalent l'automate qui reconnat .

G4 a
G4
G3

Vous aimerez peut-être aussi