TD5 - Polytechnique Montréal

publicité
LOG4500
Travail Dirigé 5
Méthodes déductives de vérification
Prof. John Mullins, Ph.D.
Département de Génie Informatique
École Polytechnique de Montréal
Décembre 2004
1. Dans l’étude de cas de la section 5.3 des notes de cours, il est démontré
que:
S1. {1} Somme M in {∀i,j (1 ≤ i ≤ j ≤ n → s ≤ Si,j )}
Montrez que:
S2. {1} Somme M in {∃i,j (1 ≤ i ≤ j ≤ n ∧ s = Si,j )}
2. L’algorithme Somme Min présenté à la section 5.3 des notes de cours calcule la somme d’une section de somme minimale mais ne fournit aucune
information sur la location de cette section dans le tableau. Adaptez
l’algorithme vu en classe pour remedier à cela (votre algorithme ne devrait faire encore qu’une seule passe du tableau).
3. L’algorithme suivant calcule l’exponentielle ab de deux entiers a et b. Trouvez l’invariant de la boucle et prouvez la correction du programme.
{1}
x := a; y := b; z := 1;
while ¬(y = 0) do
if impair(y) then
z := z ∗ x; y := y − 1;
else x := x ∗ x; y := ydiv2
end
od
{z = ab }
4. Le progamme suivant calcule le PGCD de deux entiers x et y. Montrez:
1
{1}
a := x; b := y;
z := 0;
while ¬(a = b) do
if a > b then a := a − b
else b := b − a
end
od
{PGCD(x , y) = a}
Suggestion: Utilisez les relations suivantes:
(a) Si u > v alors P GCD(u, v) = P GCD(u − v, v)
(b) P GCD(u, v) = P GCD(v, u)
(c) P GCD(u, u) = u
5. Le binôme de Newton bin(n, k) se définit comme suit:
1
si k = n
bin(n, k) =
bin(n, k + 1) ∗ (k + 1) div (n − k) sinon
alors soit l’algorithme suivant:
{n ≥ k ≥ 0 }
x := n; y := 1; b := 1;
while x 6= k do
b := b ∗ x div y;
x := x − 1; y := y + 1
od
{b = bin(n, k )}
Montrer la correction de l’algorithme.
6. Montrez la correction totale de l’algorithme d’Euclide:
{y > 0 }
q := 0; r := x;
while (r ≥ y) do
r := r − y; q := q + 1
od
{q ∗ y + r = x ∧ 0 ≤ r < y}
2
Téléchargement