Sujet automate et grammaires Théorie des langages-téléc...

Théorie des langages : Sujet automate et grammaires

Télécharger PDF

Automate & Grammairespolytech’ grenoble/ricm3

nom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prénom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

RICM3 – Automates et Grammaires

Durée : 1h00, sans documents.

— Tous les appareils électroniques sont interdits à l’exception des montres, et encore,

à condition qu’elles ne communiquent pas.

— Le barème est donné à titre indicatif.

— Le sujet est sur 20 points et comporte 2 exercices indépendants.

SUJET A

Exercice 1

Fonctions tabulées en bijection(11 pt)

Un tableauG[0..N−1]permet de représenter une fonctiongdéfinie sur[0..N−1]. Il suffit de placer

dans la casekdu tableauGla valeur de la fonctiongenk.

Exemple :Considéronsg(k) = (k+ 2)modN. Le tableauGcontient les valeurs précalculées deg.

k01234...k...N−2N−1

G[k]23456...g(k)...01

En pratique on utilise la technique des fonctions tabulées pour calculer rapidementsin,sin−1 ,...au

moyen de tableaux préremplissin, sin- inv,....

Dans cet exercice on considère des fonctionsgetfde[0..N−1]→[0..N−1], tabulées respectivement

dans les tableauxGetF. On aimerait déterminer sigetfforment une bijection, c’est-à-dire si

∀k∈[0..N−1], g(f(k)) =k.Avec les versions tabuléesGetFdes fonctions, cela devient

GetFforment une bijection si

∀k∈[0..N−1], G[F[k]] =k

Q1.(0.5 pt)Complétez le tableauFde sorte queGetFforment une bijection :k 01234

G[k]23401k01234 F[k]34012

On considère le programme suivant qui prend en entrée deux tableauxG[0..N]etF[0..N]déjà remplis

et qui répond vrai si les tableaux sont en bijection et faux sinon.

programme

1j:= 0 ;

2while(j < N){

3if ( G[F[j]]6=j)

4then { return false }

5else { j:=j+1 }6} 7return true

M.PérinUniversité Grenoble-Alpes1

Automate & Grammairespolytech’ grenoble/ricm3

Q2. Automate(1 pt)Complétez les transitions de l’automate correspondant au programme

Indication :On rappelle que l’instruction «return valeur» se traduit par une transition vers l’état

de sortie portant une affectation «result := valeur».q 0j:=0 −−−→q1 j≥N−−−→q 2

result:=true

−−−−−−−−→qs q1 j<N−−−→q 3G[F[j]] ?=j −−−−−−−→q4 j:=j+1−−−−−→q 1q 3

G[F[j]]6=j

−−−−−−−→q5 result:=f alse

−−−−−−−−−→qs Q3. Propriété de correction(0.5 pt)Complétez la propriétéψs qui caractérise le fait que le

résultat du programme indiquesiGetFforment une bijection.ψ s: {

result=true=⇒( ∀k∈[0..N−1], G[F[k]] =k) result=false=⇒( ∃k∈[0..N−1], G[F[k]]6=k) Indication :Inspirez vous de la propriété de correction de l’algorithme de recherche par dichotomie,

vue en cours.

Q4. Preuve de correction(8 pt)Montrez par la méthode de Floyd-Dijkstra-Hoare qu’à la sortie

du programme la propriétéψs est vérifiée.

Indication :

1. Vous indiquerez toujours la transition considérée. Vous prendrez soin de rédiger complétement une

transition testet unetransition affectation,la vérification et sa conclusion.

2. Vous aurez besoin de réécrire les∀sous une forme qui fait apparaître explicitement le terme qui

vous intéresse. Aidez vous de l’équivalence

∀k∈[a..b],propriété(k)équivaut à( ∀k∈[a..b−1],propriété(k)) ∧

propriété(b)

3. On vous conseille de déterminer les invariants dans l’ordre suivant :ψ2 ,ψ1 ,ψ4 ,ψ3 ,ψ5 4. Vous prendrez comme invariant enq1 une propriété de la formeψ 1: {j≤N ∀k∈[0..j−1], G[F[k]] =k

solution  ψ 2

(1 pt)À partir de la propriétéψs , on détermine la propriétéψ2 grâce à la transitionq2 result:=true

−−−−−−−−−→

affectationq s. Cette transition fait uniquement des affectations donc le meilleur choix pourψ2 est :ψ 2def =ψs [ � result←  � true]≡ { � 

result=true=⇒( ∀k∈[0..N−1], G[F[k]] =k)  � result=false=⇒( ∃k∈[0..N−1], G[F[k]]6=k) }[  � result← � true] ≡{  � true=true=⇒( ∀k∈[0..N−1], G[F[k]] =k)  � true=false=⇒( ∃k∈[0..N−1], G[F[k]]6=k) ≡ ∀k∈[0..N−1], G[F[k]] =k  ψ 1

(1 pt)À partir de la propriétépsi2 on détermine la propriétéψ1 grâce à la transitionq1 j≥N−−−−→ testq 2

. Cette

transition effectue un test, elle doit donc satisfaire l’implication suivante :ψ 1∧j≥N ︸︷︷︸ test? =⇒ψ2 On choisit de prendreψ 1: {  j≤N ∀k∈[ � 0..   j−1 ], G[F[k]] =k

Montrons que ce choix deψ2 satisfait l’implicationψ 1

et le testj≥Nimpliquej=Nqui avec la seconde propriété deψ1 donneψ2 Ce qui conclut la preuve de l’implicationψ1 ∧j≥N=⇒ψ2 M.PérinUniversité Grenoble-Alpes2

Automate & Grammairespolytech’ grenoble/ricm3  ψ 4

(1 pt)On détermineψ4 grâce à la transitionq4 j:=j+1−−−−−→ affectationq 1ψ 4def =ψ1 [j←j+ 1]≡ {  j≤N ∀k∈[ � 0..   j−1 ], G[F[k]] =k} [j←j+ 1]≡ {  

j+ 1≤N∀k∈[  � 0.. � 

j], G[F[k]] =k  ψ 3

(1 pt)On détermineψ3 grâce à la transitionq3 G[F[j]]? =j

−−−−−−−→test q4 Cette transition effectue un test, elle doit

donc satisfaire l’implication suivante :ψ 3

∧G[F[j]]? =j︸︷︷︸ test? =⇒ψ4 Remarquons queψ4 peut s’écrireψ 4≡ {  

j+ 1≤N

G[F[j]] =j∧ (∀k∈[  � 0..  

j−1 ], G[F[k]] =k) On choisit donc de prendreψ 3def ={   j+ 1≤N∀k∈[  � 0..  

j−1 ], G[F[k]] =k

et l’implicationψ3 ∧G[F[j]] =j? =⇒ψ4 est satisfaite. � 

vérification 1(1 pt)Les propriétésψ2 etψ3 étant choisies, on utilise la transitionq1 j<N−−−−→ testq 3

pour vérifier que les

propriétés que nous avons choisies sont bien des invariants. Cette transition effectue un test, elle doit

donc satisfaire l’implication suivante :ψ 1

∧j < N︸︷︷︸ test? =⇒ψ3 ψ1 def= {  j≤N ∀k∈[ � 0..   j−1 ], G[F[k]] =k} ?=⇒ ok=⇒ ψ3 def= {  

j+ 1≤N∀k∈[  � 0..  

j−1 ], G[F[k]] =k} L’implication est valideà condition d’ajouter àψ1 la propriétéj∈Nqui avec le testj < Npermet

de démontrerj+ 1≤N  ψ 5

(1 pt)À partir de la propriétéψs , on détermine la propriétéψ5 grâce à la transitionq5 result:=false

−−−−−−−−−→

affectationq s. Cette transition fait uniquement des affectations donc le meilleur choix pourψ5 est :ψ 5def =ψs [ � result←   false]≡ { � 

result=true=⇒( ∀k∈[0..N−1], G[F[k]] =k)  � result=false=⇒( ∃k∈[0..N−1], G[F[k]]6=k) }[  � result← � true] ≡{   false=true=⇒( ∀k∈[0..N−1], G[F[k]] =k)   false=false=⇒( ∃k∈[0..N−1], G[F[k]]6=k) ≡ ∃k∈[0..N−1], G[F[k]]6=k � 

vérification 2(1 pt)Les propriétésψ3 etψ5 étant choisies, on utilise la transitionq3 G[F[j]]6=j

−−−−−−−→test q5 pour vérifier que

les propriétés que nous avons choisies sont bien des invariants. Cette transition effectue un test, elle doit

donc satisfaire l’implication suivante :ψ 3

∧G[F[j]]6=j︸︷︷︸ test? =⇒ψ5 On choisit d’ajouter àψ3 la propriété0≤j; l’implication est alors valide.

Preuve de validité de l’implication:On peut démontrerψ5 :∃k∈[0..N−1], G[F[k]]6=ken

choisissantk=jpuisque

—0≤jetj+ 1≤Nd’aprèsψ3 , ce qui donne0≤j≤N−1c’est-à-direj∈[0..N−1]

—G[F[j]]6=jd’après le test.

M.PérinUniversité Grenoble-Alpes3

Automate & Grammairespolytech’ grenoble/ricm3 � 

conclusion(1 pt)Les vérifications nous ont amené à modifier les propriétésψ1 etψ3 comme suit :ψ 1def =   j∈N  j≤N ∀k∈[ � 0..   j−1 ], G[F[k]] =k   etψ3 def=   0≤j   j+ 1≤N∀k∈[  � 0..  

j−1 ], G[F[k]] =k   avec ces modifications toutes les implications sont valides.

Conclusion :les propriétésψ1 ,ψ2 ,ψ3 ,ψ4 ,ψ5 ,ψs sont des invariants.

Q5. Conditions d’utilisation(1 pt)En déduire les conditions d’utilisation du programme.

solution

On détermine les conditions d’utilisation (propriétéψ0 ) grâce à la transitionq0 j:=0−−−→ affectationq 1

. Cette transition fait

uniquement des affectations donc le meilleur choix pourψ0 est :ψ 0def =ψ1 [j←0]≡  j∈N j≤N

∀k∈[0..j−1], G[F[k]] =k  [j←0]≡     0∈N0≤N ∀k∈[0..−1]︸ ︷︷︸∅ , G[F[k]] =k≡0≤N Conclusion :le programme est correct si on l’utilise pour un tableau ayant un nombre de caseN≥0.

Exercice 2

(9 pt)Preuve de correction partielle de l’algorithme d’ex-

ponentiation rapide

Algorithme

x:=A ; y:=N ; r:=1 ;

while(y>0){

if (y%2=0){ x:=x*x; y:=y/2; }

else { r:=r*x; y:=y-1; }} Q1.(1 pt)Donnez les transitions de l’automate pour qu’il corresponde au programme précédent.// q0 x←A;y←N;r←1 qs q1 y≤011 y>0 q3 x:=x×x;y:=y/211 q4 r:=r×x;y:=y−1mm q2 ymod26=0CC ymod2=0[[ M.PérinUniversité Grenoble-Alpes4

Automate & Grammairespolytech’ grenoble/ricm3

Q2.(1 pt)Complétez l’exécution de l’automate en adoptant la présentation ci-dessous.

a) Pour les valeursA= 3, N= 3étatq 0q 1q 2q 4q 1q 2q 3q 1q 2q 4q 1q s

x?33339999999

y?33221111000

r?11333333272727

b) Même question pour les valeursA= 2, N= 0

solutionétatq 0q 1q sx?22 y?00r?11 Q3.(0.5 pt)Donnez la propriété de correction qui exprime qu’à la sortie de l’automate la variable

rcontient la valeur deAN .

solutionψ sdef =r=AN ∧y= 0

Q4.(6 pt)Preuve de correction partielle (soignez la rédaction !)Donnez et démontrez

l’implication associée à chaque transition et donnez les 5 invariants(ψs ,ψ1 ,ψ3 ,ψ4 ,ψ2 )associés auxétatsq s,q 1,q 3,q 4,q 2. Indication :ψ1 def=r×x y=A N∧y≥0 solution

— La transitionq1 y≤0−−−→q s

nous impose de choisirψ1 de sorte qu’on ait l’implicationψ 1

∧y≤0 =⇒ψ s︷ ︸︸︷r=A N

∧y= 0

On choisitψ 1def =r×xy =AN ∧y≥0

— La transitionq4 r:=r×x;y:=y−1

−−−−−−−−−−−−→q1 comporte uniquement des instructions d’affectations donc le meilleur

choix pourψ4 est :ψ 4def =ψ1 [r←r×x;y←y−1]def = (r×x)×x(y−1) =AN ∧y−1≥0≡r×xy =AN ∧y≥1

— La transitionq3 x:=x×x;y:=y/2

−−−−−−−−−−−−→q1 comporte uniquement des instructions d’affectations donc le meilleur

choix pourψ3 est :ψ 3def =ψ1 [x←x×x;y←y/2]def =r×(x2 )(y/2) =AN ∧y/2≥0≡r×x2(y/2) =AN ∧y≥0

— La transitionq2 ymod2=0

−−−−−−−→q3 nous impose de choisirψ2 de sorte qu’on ait l’implicationψ 2

∧ymod2 = 0? =⇒ψ 3︷ ︸︸︷r×x 2(y/2)=A N∧y≥0 Preuve de l’implication:D’après le testymod2 = 0, on a donc l’égalité2(y/2) =yet on peut

simplifierψ3 enr×xy =AN ∧y≥0. On choisit alorsψ 2def =r×xy =AN ∧y≥0

M.PérinUniversité Grenoble-Alpes5

Automate & Grammairespolytech’ grenoble/ricm3

et l’implication devient triviale puisqu’elle est de la formeP⇒P

— Étape de  

VÉRIFICATION:ψ1 ,ψ2 etψ4 sont connues donc on peut utiliser les transitionsq1 y>0−−−→q 2etq 2

ymod26=0

−−−−−−−→q4 pourvérifier nos choix. Nos choix sont valides s’ils permettent de montrer les implica-

tions :ψ 1︷ ︸︸︷r×x y=A N

∧y≥0∧y >0ok =⇒ψ 2︷︸︸︷ r×xy =AN ∧y≥0et ψ2 ︷︸︸︷r×x y=A N

∧y≥0∧ymod26= 0ok =⇒ψ 4︷ ︸︸︷r×x y=A N∧y≥1 car 1 est le plus petit nombre entier≥0.

Q5.(0.5 pt)En déduire les conditions d’utilisations du programme.

solutionψ 0def =ψ1 [x←A;y←N;r←1]def = (r×xy =AN ∧y≥0)[x←A;y←N;r←1]def = 1×AN =AN ∧N≥0def =N≥0

Le résultatr=AN à la sortie du programme est guarantie pourN≥0

M.PérinUniversité Grenoble-Alpes6