S´election en temps lin´eaire - IGI3006 - Michel Couprie
NOTE : Les sections A, B, C, D, E, F font partie de l’´enonc´e donn´e aux ´etudiants, les
sections suivantes contiennent des indications ou des solutions.
A. Motivation
Le prince-´emir du Kotar (pays abritant de gigantesques gisements de gaz naturel et de
p´etrole) offre une somme fabuleuse `a l’ing´enieur qui r´epondra `a la question suivante.
On va construire dans ce pays un r´eseau de gazoducs reliant les diff´erents sites d’extraction
de gaz, de mani`ere `a ce que chaque site soit reli´e par un gazoduc nord-sud `a un unique
gazoduc est-ouest (voir la figure 1).
Nord
Sud
EstOuest
Fig. 1 – Les gazoducs du Kotar
La question est de savoir `a quelle latitude placer le gazoduc est-ouest pour que le coˆut de
construction soit minimal. Autrement dit, la longueur totale des canalisations `a construire
doit ˆetre minimale. On suppose pour simplifier que les latitudes des sites sont toutes
diff´erentes.
Question
Montrez par un contre-exemple simple que, dans le cas g´en´eral, c’est-`a-dire quelle que soit
la configuration des sites, la latitude du site le plus au nord (ou le plus au sud) n’est pas
toujours optimale.
Question
1
Montrez par un contre-exemple que la latitude moyenne des sites n’est pas toujours la
solution optimale dans le cas g´en´eral.
Question
Quelle est la solution optimale dans le cas g´en´eral ? Justifiez votre r´eponse.
B. Les probl`emes de la m´ediane et de la s´election
On dispose de nvaleurs num´eriques, entiers ou r´eels, not´ees Vi(i∈ {1,...,n}). Ces
valeurs sont dans un ordre quelconque (i.e., elles ne sont pas tri´ees suivant les indices
croissants ou d´ecroissants). On les suppose toutes diff´erentes entre elles.
La ediane de Vest la ki`eme plus petite valeur parmi les Vi, avec k=n
2. Autrement dit,
il y a exactement k1 valeurs dans Vqui sont strictement inf´erieures `a la m´ediane.
Un premier probl`eme est de trouver un algorithme efficace qui retourne la m´ediane d’un
tableau Vde valeurs.
Un second probl`eme, dit de la s´election, est de trouver un algorithme efficace qui retourne
la ki`eme plus petite valeur parmi les Vi, avec kdonn´e `a l’avance (param`etre).
Il est bien ´evident que le probl`eme de la m´ediane est un cas particulier du probl`eme de
la s´election.
C. Un algorithme na¨ıf
Proposer deux algorithmes, l’un na¨ıf, l’autre un peu moins na¨ıf et plus efficace que le
premier, pour r´esoudre le probl`eme de la s´election. Quelle est la complexit´e de calcul de
chacun d’eux ?
D. M´ediane et s´election en temps lin´eaire
Montrez que, si l’on dispose d’un algorithme permettant de calculer la m´ediane en temps
lin´eaire, alors on peut r´esoudre le probl`eme de la s´election (pour un rang kquelconque)
en temps lin´eaire.
2
Pour cela, proposez un algorithme pour la s´election bas´e sur l’approche diviser pour r´egner,
qui utilise l’algorithme lin´eaire de calcul de la m´ediane, et analysez sa complexit´e.
E. S´election en temps lin´eaire en moyenne
Proposez un algorithme de complexit´e lin´eaire en moyenne, bas´e sur l’approche diviser
pour r´egner, pour esoudre le probl`eme de la s´election. Analysez sa complexit´e.
F. S´election en O(n)dans le pire des cas
Proposer un algorithme pour r´esoudre le probl`eme de la s´election, bas´e sur le principe
“diviser pour r´egner”, et dont la complexit´e de calcul est en O(n).
A’. Motivation
Contre-exemple 1 : latitudes 0, 100, 200 (exprim´ees en km vers le sud par rapport `a une
latitude de r´ef´erence, celle la plus au nord). Longueur des gazoducs nord-sud si l’on choisit
la latitude 0 : 300 km. Si l’on choisit la latitude 100 : 200 km.
Contre-exemple 2 : latitudes 0, 10, 290. Longueur des gazoducs nord-sud si l’on choisit la
latitude 100 (latitude moyenne) : 380 km. Si l’on choisit la latitude 10 : 290 km.
Solution optimale dans le cas g´en´eral : il faut choisir la latitude m´ediane.
Justification : soit Lune latitude choisie pour le gazoduc horizontal. Soient nNet nS,
respectivement, les nombres de sites au nord et au sud de L. Si nN> nS, en remontant le
gazoduc horizontal plus au nord, on diminue le coˆut. Ce faisant, on peut diminuer nNet
augmenter nS. Et si nN< nS, en abaissant le gazoduc horizontal plus au sud, on diminue
le coˆut. Donc, le coˆut minimal est obtenu pour nN=nS, ce qui correspond `a la latitude de
l’´el´ement m´edian si nest impair. Dans le cas o`u nest pair, on peut choisir indiff´eremment
la latitude de l’´el´ement de rang n
2ou de celui de rang n
2.
3
C’. Un algorithme na¨ıf
Algorithme na¨ıf : on extrait le max (en O(n)) et on le retire du tableau V(marquage en
0(1) ou compactage en O(n)). On r´ep`ete ceci kfois. Complexit´e globale en O(kn), donc
au pire en O(n2).
Algorithme moins na¨ıf : on trie le tableau V(en O(nlog n) avec un tri-fusion par exemple),
puis on retourne la valeur V[k] (en O(1)).
D’. M´ediane et s´election en temps lin´eaire
Algorithme 1 : Select1
Donn´ees :V, k
m=Median(V);1
si k=|V|
2alors retourner m;2
V1={vV, v < m};V2={vV, v >m};3
si k < |V|
2alors4
retourner Select1(V1, k);5
sinon6
retourner Select1(V2, k − |V1|);7
Si l’on note T(n) le coˆut en temps de calcul de Select1 pour une taille de donn´ees n, on
a la r´ecurrence suivante :
T(n) = an +T(n
2)
avec T(1) = 1.
D’o`u T(n) = an +an
2+an
4+...+ 1.
Il s’agit ici, essentiellement, d’une s´erie g´eom´etrique dont la raison est 1
2<1, donc conver-
gente et dont la somme sur une infinit´e de termes est 1 + 1
2+...+1
2i+... = 2, D’o`u
T(n)62an + 1. C’est la erie qui esoud le fameux paradoxe de Z´enon d’´
El´ee, dit de la
dichotomie1.
On notera que toute s´erie de raison strictement inf´erieure `a 1 conduirait aussi `a une com-
1http ://fr.wikipedia.org/wiki/Paradoxes de enon#Paradoxe de la dichotomie
4
plexit´e lin´eaire. La strat´egie diviser pour egner consiste ici `a ´eliminer `a chaque ecursion
la moiti´e des ´el´ements, mais un algorithme sur le mˆeme canevas qui en ´eliminerait un
quart, un cinqui`eme, un huiti`eme... serait ´egalement lin´eaire.
E’. S´election en temps lin´eaire en moyenne
La nouveaut´e dans cet algorithme est d’´eliminer `a chaque ´etape, non pas une proportion
fixe d’´el´ements, mais un nombre al´eatoire de ceux-ci. Pour cela on tire au sort une valeur
p(appel´ee pivot) prise dans l’ensemble V, et l’on compte le nombre de valeurs de Vqui
sont au dessus et en dessous de p. Selon le cas, on r´ep`ete la mˆeme op´eration sur les valeurs
sup´erieures ou inf´erieures.
Algorithme 2 : Select2
Donn´ees :V, k
p= un ´el´ement al´eatoirement choisi dans V;1
V1={vV, v < p};V2={vV, v >p};2
si |V1|=k1alors retourner p;3
si |V1|< k 1alors retourner Select2(V2, k − |V1|);4
retourner Select2(V1, k);5
L’analyse de la complexit´e de cet algorithme n’est pas facile car, contrairement au cas
pr´ec´edent, on ne sait pas quelle est la proportion d’´el´ements ´elimin´es `a chaque ´etape.
Pour simplifier l’analyse, on modifie l’algorithme pour que cette proportion soit mieux
d´elimit´ee. L’id´ee est de recommencer le partitionnement jusqu’`a ce que la valeur pivot
se trouve dans une zone “centrale” du tableau, de mani`ere `a ce que la proportion des
´el´ements ´elimin´ees soit dans tous les cas d’au moins un quart.
Algorithme 3 : Select3
Donn´ees :V, k
ep´eter1
p= un ´el´ement al´eatoirement choisi dans V;2
V1={vV, v < p};V2={vV, v >p};3
jusqu’`a |V1|>|V|
4et |V2|>|V|
4;4
si |V1|=k1alors retourner p;5
si |V1|< k 1alors retourner Select3(V2, k − |V1|);6
retourner Select3(V1, k);7
Pour ´evaluer la complexit´e en moyenne, il faut resoudre la r´ecurrence suivante :
5
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !