1ereSession Pr Correction
FS/1/5684 – Algorithmique
Examen de première session – Partie pratique
Le 12 février 2008
Consignes
– Pour cette partie, vous avez le droit de consulter vos notes et tout ouvrage qui vous semble utile.
– Cette partie de l’examen dure 1 heure 45 minutes.
– Veillez à bien justifier vos réponses. Une réponse mal justifiée, même correcte, ne permet pas d’obtenir le maximum des points.
– Quand vous indiquez une complexité, veillez à bien expliquer ce que sont les paramètres qui apparaissent dans le O. Par exemple, O(n2 ) n’a aucun sens si n n’apparaît pas dans l’algorithme ou dans la définition de la structure qui est traitée. . .
Question 1 – 4 points
Considérons un tableau M de nombres entiers à lignes et c colonnes. On appelle M[i][ j] l’élément à la ligne i et à la colonne j. Ce tableau possède la propriété suivante : si on parcourt le tableau M ligne par ligne, la séquence des éléments rencontrés est strictement croissante. Par exemple, le tableau M pourrait être ( = 3 et c = 4) :
1 3
5
7
10 15 27 28
30 39 52 100
On propose l’Algorithme 1, qui reçoit un tableau M tel que décrit ci-dessus ainsi qu’une valeur k. Il renvoie vrai si et seulement si k apparaît dans une des cases de M.
Expliquez comment fonctionne cet algorithme, et donnez-en la complexité en fonction des dimensions du tableau (veillez à bien détailler tout le raisonnement qui amène à la réponse finale).
1
début
Entier i := 1 ; tant que M[i][1] ≤ k et i ≤ faire i := i + 1 ; si i = 1 alors retourner faux ; sinon i := i − 1 ;
Entier bi := 1, bs := c, m := bi + bs−bi
;
2 tant que M[i][m] = k et bi ≤ bs faire si M[i][m] < k alors bi := m + 1 ; sinon bs := m − 1 ;
;
m := bi + bs−bi
2
si bs < bi alors retourner faux ; sinon retourner vrai ; fin Algorithme 1 : Un algorithme pour recherche une valeur k dans une matrice.
❈♦rr❡❝t✐♦♥
▲✬❛❧❣♦r✐t❤♠❡ ❝♦♥s✐st❡ à r❡❝❤❡r❝❤❡ ✉♥❡ ❧✐❣♥❡ i ❞❡ ❧❛ ♠❛tr✐❝❡ q✉✐ ❡st s✉s❝❡♣t✐❜❧❡ ❞❡ ❝♦♥t❡♥✐r ❧❛ ✈❛❧❡✉r k✱
♣✉✐s à ❡✛❡❝t✉❡r ✉♥❡ r❡❝❤❡r❝❤❡ ❞✐❝❤♦t♦♠✐q✉❡ ❞❛♥s