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
© Copyright 2024