TD11 : Je divise, tu divises, ils révisent.

TD11 : Je divise, tu divises, ils r´evisent.
Auteur: Nicolas Gast
Exercice 1:
Diviser pour r´
egner : algorithme de la m´
ediane
On dispose d’un tableau V de n nombres dans lequel on cherche le i-i`eme plus petit ´el´ement.
1. Proposer un algorithme en O(i × n).
2. Proposer un algorithme en O(n log n) pour r´esoudre le probl`eme.
3. On propose l’algorithme suivant :
— Diviser V en n/5 groupes de cinq ´el´ements et calculer leur m´ediane.
— Calculer la m´ediane de ces n/5 m´edianes en appelant l’algorithme r´ecursivement. On note m
¯
ce nombre.
— Construire deux sous-tableaux P et G contenant respectivement les ´el´ements plus petits que m
¯
et les ´el´ements plus grands que m.
¯
— Soit k = |P | le nombre d’´el´ements plus petits que m.
¯
— Si i < k + 1, calculer r´ecursivement le i`eme ´el´ements de P .
— Si i = k + 1, rendre m.
¯
— Si i > k + 1, calculer r´ecursivement le (i − k − 1)i`eme ´element de G.
7
3
n ≤ |P | ≤ 10
n.
a) Montrer que 10
b) En d´eduire une formule de r´ecurrence pour la complexit´e de l’algorithme.
c) R´esoudre la formule de r´ecurrence.
4. On applique maintenant l’algorithme du tri rapide en utilisant la m´ediane ainsi calcul´ee.
a) Quelle est la complexit´e de cette version du tri rapide dans le pire cas ?
b) Pourquoi cette variante du tri rapide n’est jamais employ´ee en pratique ?
Exercice 2:
Probabilit´
e : collection de vignettes (panini)
Votre petit cousin collectionne les vignettes autocollantes des footballeurs c´el`ebres. Il ach`ete les vignettes `
a l’unit´e `
a 0.10 euros dans des pochettes opaques et cherche `a compl´eter son album en collectionnant les M = 300 vignettes distinctes qu’il existe. On suppose que l’´editeur des vignettes est honnˆete et
qu”il imprime les vignettes dans les mˆemes proportions (il n’y a pas de vignettes plus rares que d’autres
et chaque pochette achet´ee contient une des 300 vignettes au hasard).
Lorsque la collection comporte d´ej`
a i − 1 vignettes distinctes, on note Yi le nombre de vignettes `
a
acheter pour avoir une nouvelle vignette distincte. On note T le nombre de vignettes achet´ees avant
d’avoir toute la collection.
1. Que vaut Y1 ?
2. Donner, en la justifiant, la loi de Yi . Les variables Yi sont-elles ind´ependantes ?
3. Exprimer T en fonction des Yi . En d´eduire l’esp´erance de T et sa variance. Commenter votre
r´esultat et r´epondre `
a votre petit cousin.
4. Quel est le rapport entre les paninis et les tables de hachage ?
Exercice 3:
Plus grand sous-tableau
On se donne un tableau X d’entiers (positifs ou n´egatifs). On cherche `a trouver le sous-tableau contigu
X[i : j] telle que la somme des ´el´ements soit maximal. Autrement dit, on cherche `a trouver les indices i
Pj
et j qui maximisent k=i V [i].
1. Proposer un algorithme na¨ıf pour r´esoudre le probl`eme. Quelle est sa complexit´e ?
Pj
2. Montrer que si i est fix´e, alors trouver j pour maximiser k=i V [i] peut se faire en temps lin´eaire.
3. En d´eduire un algorithme en O(n2 ).
4. Peut-on r´esoudre le probl`eme en O(n) ?
Algorithmique et mod´elisation
2014-2015 – 1/ 1