Algorithmique TD4
L3 Informatique – ENS Cachan
Thomas Chatain
Exercice 1
On voudrait rechercher un ´el´ement xdonn´e dans un tableau Anon tri´e. On suppose l’´equipro-
babilit´e de toutes les permutations du tableau Adonn´e. On veut analyser l’algorithme d´eterministe
incr´emental qui cherche un ´el´ement xen testant tous les indices de gauche `a droite.
1. S’il y a un seul xdans A, quel est le temps d’ex´ecution en moyenne ?
2. On suppose qu’il y a kcopies de xdans A. Quel est le temps d’ex´ecution en moyenne ?
Exercice 2
On recherche le k-i`eme plus petit ´el´ement d’un tableau non tri´e de taille n.
1. Proposer un (ou deux) algorithme(s) simple(s) pour r´esoudre ce probl`eme et analyser sa
(leur) complexit´e.
2. Proposer un algorithme qui r´esout ce probl`eme en utilisant un pivot comme le tri rapide.
Donner sa complexit´e dans le pire des cas.
3. On suppose pour simplifier que tous les ´el´ements du tableau sont distincts et que toutes les
permutations sont ´equiprobables. Montrer que la complexit´e en moyenne est lin´eaire.
4. On cherche une approche en temps lin´eaire dans le pire des cas. On d´ecoupe le tableau en
blocs de 5 ´el´ements, on calcule le m´edian de chaque bloc, et on choisit pour pivot le m´edian
de ces m´edians. Montrer que ce choix de pivot est acceptable.
5. ´
Ecrire l’algorithme complet et donner sa complexit´e.
6. Que se passe-t-il si l’on prend des blocs de 3 ´el´ements, 7 ´el´ements. . .
Exercice 3
On consid`ere un ensemble d’objets positionn´es dans le plan euclidien. Ces objets sont assimil´es
`a des disques ayant tous le mˆeme diam`etre det sont rep´er´es par les coordonn´ees (abscisse et
ordonn´ee) de leur centre. Formellement, on dispose en entr´ee d’un tableau Tde dimension ndont
chaque ´el´ement T[i] indique les coordonn´ees du centre d’un objet. On note T[i].x son abscisse et
T[i].y son ordonn´ee.
Le probl`eme consiste `a d´ecider si deux objets du tableau sont en collision, c’est-`a-dire si leurs
centres sont distants de dou moins.
On consid`ere que les op´erations suivantes se font en temps constant : acc´eder aux coordonn´ees
du centre d’un objet, comparer les abscisses ou les ordonn´ees de deux objets, calculer la distance
entre deux points, comparer des indices de tableau.
1. Proposer un premier algorithme tr`es simple qui prend en entr´ee le tableau Tet le diam`etre
ddes objets, et qui retourne vrai s’il y a (au moins) une collision, faux sinon. ´
Evaluer sa
complexit´e en temps et en espace dans le pire des cas.
On tente maintenant une approche de type diviser pour r´egner . On g´en`ere deux sous-probl`emes
en prenant d’une part les bn
2cobjets de plus petite abscisse et d’autre part les dn
2eobjets de plus
grande abscisse. On suppose que les deux sous-probl`emes ont ´et´e trait´es sans qu’aucune collision
n’ait ´et´e d´etect´ee. Il reste `a v´erifier l’absence de collision entre un objet de petite abscisse et un
objet de grande abscisse.
1