Examen sur l'analyse d'algorithmes - 3, Examens de Analyse circuit électriques
Christophe
Christophe28 février 2014

Examen sur l'analyse d'algorithmes - 3, Examens de Analyse circuit électriques

PDF (193 KB)
3 pages
696Numéro de visites
Description
Exercices de mathématique - examen sur l'analyse d'algorithmes - 3. Les principaux thèmes abordés sont les suivants: exercices,
20 points
Points de téléchargement necessaire pour télécharger
ce document
Télécharger le document
Aperçu3 pages / 3
Télécharger le document

ENSEIRB 2007-2008 - Département informatique - Première année IF105 - Analyse d’algorithmes

Examen (session1)

Veillez à soigner la rédaction de vos solutions, particulièrement vos justifications et vos preuves. Soyez précis et concis. Les coefficients relatifs des exercices sont donnés à titre indi- catif. Bon courage et bonne chance !

Exercice 1 (6 points)

Prouvez, à l’aide du calcul de Hoare, que les triplets suivants sont valides. Vous présenterez vos calculs de preuve détaillés.

1. {0 = 0}x := 0 {x = 0} 2. {y = y}x := y {x = y} 3. {x = x}x := y {x = y}

4. {a′ × b′ = m + a× b} if (b%2 = 1) then

m := m+a

else

skip

endif

{a′ × b′ = m + a× 2× (b div 2)}

où div donne le quotient de la division entière et % en donne le reste

5. {(x ∈ R≥0) ∧ (ε ∈ R>0) ∧ (a = x) ∧ (b = 1)} while (|b-a| > ε) do

b := (b+a)/2;

a := x/b

endwhile

{b− ε ≤ √ x ≤ b + ε}

Cet algorithme s’appuie sur le principe suivant :

r2 = x ⇒ 2r2 = r2 + x ⇒ r = r 2 + x

2r ⇒ r = 1

2

( r +

x

r

) dont on déduit la série : ri+1 =

1 2

( ri +

x ri

) .

Exercice 2 (4 points)

1. Un algorithme brute-force se décompose en deux parties. Lesquelles ? Quel est le rôle de chacune d’elles ?

2. Qu’est-ce qu’un problème de décision ?

3. À quelle condition un problème est-il décidable ?

1

4. Quelle différence fâıtes-vous entre une solution déterministe et une solution non-dé- terministe pour l’énumération des solutions potentielles à un problème ? Quel en est l’impact sur la complexité de l’énumération ?

Exercice 3 (5 points)

Soit T un tableau d’entiers triés par ordre croissant et x un entier. L’algorithme ci-dessous indique si x appartient à T en effectuant une recherche dichotomique.

1 l := 0; r := length(T)-1; p := b(l+r)/2c; 2 while ((l < r) ∧ (get(T,p) 6= x)) do 3 if (x < get(T,p)) then

4 r := p-1

5 else

6 l := p+1

7 endif;

8 p := b(l+r)/2c 9 endwhile

length(T) est le nombre d’élément du tableau T. get(T,i) est l’élément situé dans la case d’indice i (numérotées à partir de 0) dans T.

Soit sorted(T) le prédicat défini par :

sorted(T) ≡ ∀i ∈ [0..length(T)− 1[, get(T, i) ≤ get(T, i + 1)

Les spécifications de ce algorithme sont données par : – Précond : sorted(T) ∧ (length(T) ≥ 1) – Postcond : (∃i, get(T, i) = x) ⇔ (get(T, p) = x)

Voici l’invariant qui a été choisi pour prouver la correction de cet algorithme :

(∀i ∈ [0..l[, get(T, i) < x) ∧ (∀i ∈]r..length(T)[, x < get(T, i)) ∧ sorted(T) ∧ (p = b(l + r)/2c)

1. Expliquez la signification et justifiez la présence de chacune des formules en conjonction dans l’invariant.

2. Rappelez les conditions que doit satisfaire une mesure de boucle selon la méthode des ensembles bien fondés. En utilisant la définition d’un ensemble bien fondé, prouvez qu’une telle mesure garantit la terminaison.

3. Définissez une mesure de terminaison pour l’algorithme ci-dessus. Vous justifierez votre choix vis-à-vis de la méthode des ensembles bien fondés.

Exercice 4 (5 points)

Le calcul de preuve de l’algorithme de l’exercice 3 a généré les obligations de preuve suivantes. Prouvez leur validité.

sorted(T) ∧ (length(T) ≥ 1) [0] ------------------- implies -------------------

(∀i ∈ [0..0[, get(T, i) < x) ∧ (∀i ∈]length(T)− 1..length(T)[, x < get(T, i)) ∧ sorted(T) ∧ (b(0 + length(T)− 1)/2c = b(0 + length(T)− 1)/2c)

2

(∀i ∈ [0..l[, get(T, i) < x) ∧ (∀i ∈]r..length(T)[, x < get(T, i)) ∧ sorted(T) ∧ (p = b(l + r)/2c) ∧ (l < r) ∧ (get(T, p) 6= x)

[1] ------------------- implies -------------------

((x < get(T, p)) ⇒ ((∀i ∈ [0..l[, get(T, i) < x) ∧ (∀i ∈]p− 1..length(T)[, x < get(T, i)) ∧ sorted(T) ∧ (b(l + p− 1)/2c = b(l + p− 1)/2c))))

∧ (¬(x < get(T, p)) ⇒ ((∀i ∈ [0..p + 1[, get(T, i) < x) ∧ (∀i ∈]r..length(T)[, x < get(T, i)) ∧ sorted(T) ∧ (b(p + 1 + r)/2c = b(p + 1 + r)/2c)))))

(∀i ∈ [0..l[, get(T, i) < x) ∧ (∀i ∈]r..length(T)[, x < get(T, i)) ∧ sorted(T) ∧ (p = b(l + r)/2c) ∧ ¬ ((l < r) ∧ (get(T, p) 6= x))

[2] ------------------- implies -------------------

(∃i get(T, i) = x) ⇔ (get(T, p) = x)

A Règles de Hoare

Règle de conséquence :

P ′ ⇒ P , {P}S {Q} , Q ⇒ Q′ {P ′}S {Q′}

Règle d’affectation :

{P [e/x]}x:=e {P}

Règle de séquence : {P}S1 {Q} , {Q}S2 {R} {P}S1;S2 {R}

Règle du if : {P ∧ B}S1 {R} , {P ∧ ¬B}S2 {R} {P} if B then S1 else S2 endif {R}

Règle du while (avec terminaison) :

{P ∧ B ∧ (t = X) ∧ (t ∈ D)}S {P ∧ (t < X) ∧ (t ∈ D)} {P ∧ (t ∈ D)} while (B) do S endwhile {P ∧ ¬B}

où :

1. t est un terme (la mesure) ;

2. X est une nouvelle variable qui n’apparâıt ni dans P , ni dans B, ni dans S, ni dans t ;

3. (D,≤) est bien fondé ; 4. t < X est défini par la formule t ≤ X ∧ X 6≤ t.

3

commentaires (0)

Aucun commentaire n'a été pas fait

Écrire ton premier commentaire

Télécharger le document