• Aucun résultat trouvé

Recherche des deux points les plus rapprochés

N/A
N/A
Protected

Academic year: 2022

Partager "Recherche des deux points les plus rapprochés"

Copied!
3
0
0

Texte intégral

(1)

Recherche des deux points les plus rapprochés

Manon Runi

Entrée : Un tableau Q den>2 points du plan

Sortie : Les deux points de Qles plus rapprochés (pour la distance euclidienne) Un algorithme naïf consisterait à tester toutes les paires de points. Il y en a

n

2

= Θ(n2). Étape 1

On va utiliser le paradigme diviser pour régner.

SoitP un sous-ensemble deQ. SoitX un tableau contenant les points de P triés par ordre croissant des abscisses ; Soit Y un tableau contenant les points de P triés par ordre croissant des ordonnées.

Si |P| 6 3, on utilise l'algorithme naïf. Comme ça, on appelle jamais l'algorithme sur un ensemble de cardinal61. Sinon :

Diviser : On trouve une droit ∆ qui sépare les points de P en PG et PD qui sont les points à droite et à gauche de ∆, avec |PG|=b|P2|cet |PD|=b|P|2 c+ 1.

Régner : On appelle l'algorithme récursivement sur PG et PD. Soient δG et δD les plus petites distances pour PG etPD. Soit δ = min(δG, δD)

Combiner : La paire de points recherchée est soit celle espacée de δ, soit une telle qu'un point soit dans PG et l'autre dans PD. On cherche s'il existe une telle paire espacée de moins de δ. Si ces deux points existent, ils doivent être espacés de moins de δ de la droite ∆.

Étape 2

Implémentation de l'algorithme

Algorithme 1 : PPR(P)

X ← trier Q par abscisses croissantes;

Y ← trier Q par ordonnées croissantes;

PPR-rec(X, Y)

Algorithme 2 : PPR-rec(X, Y) si X63 alors

retourner PPR-naif(X)

(XG, XD, YG, YD)← PPR-diviser(X, Y); δG ←PPR-rec(XG, YG);

δD ← PPR-rec(XD, YD); δ ←min(δG, δD);

Y0 ← extraire de Y les points espacés de moins de δ de ∆;

/* Comme dans PPR-diviser */

δ0 ← PPR-bande(Y0); retourner min(δ, δ0)

1

(2)

Étape 3

Description de PPR-diviser

On veut divise X et Y enXG,XD, YG, YD qui sont les points de PG etPD triés par ordre croissant des abscisses ou des ordonnées.

Algorithme 3 : PPR-diviser(X, Y) XG←X[1,b|X|/2c];

XD ←X[b|X|/2c+ 1,|X|]; x←X[b|X|/2c].abs ;

YG ← tableau de taille|XG|; YD ← tableau de taille|XD|; tG ←1;

tD ←1;

pour 16i6|Y| faire siY[i].abs 6xalors

Y[tG]←T[i]; tG ←tG+ 1 sinon

Y[tD]←T[i]; tD ←tD + 1 n

nretourner (XG, XD, YG, YD)

Cet algorithme renvoie bien les tableaux XG, XD, YG, YD des points à droite et à gauche de ∆ triés par abscisses et ordonnées croissantes. La complexité est enO(n), où n =|X|=|Y|.

Étape 4

Description de PPR-bande

On note b1. . . br les points de Y0 triés par ordonnées croissantes. On va utiliser le résultat suivant : Proposition 1

Il existe bi 6= bj ∈ Y0, avec d(bi, bj) < δ ssi il existe i, j ∈ [|1, r|] tels que : i < j 6 i+ 7 et d(bi, bj)< δ

Démonstration : ”⇐”: immédiat.

”⇒” : On suppose qu'il existebi 6=bj ∈Y0, avec d(bi, bj)< δ. (OPSi < j)

Alors bi etbj sont dans un rectangle R de dimensionδ×2δ centré en∆. Quitte à translater, on peut supposer que biest sur le côté inférieur de R. Montrons qu'au plus 8 points deP se trouvent dans R.

Pour cela, considérons le carré δ×δ formant la moitié gauche de ce rectangle. Puisque tous les points de PG sont distants d'au moins δ, il y en a au plus 4 qui se trouvent dans ce carré (1 par sous-carré δ/2×δ/2 de diagonale√

2δ/2< δ).

De même, il y a au plus 4 points qui se trouvent dans la moitié droite de R. Donc,Rcontient au plus 8 points et on a bien (les bi sont classés par ordonnées croissantes) :

i < j 6i+ 7etd(bi, bj)< δ

Ainsi, on a l'algorithme suivant :

Cet algorithme a une complexité en O(|Y0|) donc en O(n).

2

(3)

Algorithme 4 : PPR-bande(Y0) δ0 ←δ;

pour 16i6|Y0| −1)faire

pour i+ 1 6j 6max(i+ 7,|Y0|)faire sid(Y0[i], Y0[j])< δ0 alors

δ0 ←d(Y0[i], Y0[j]) n

nretourner (δ0)

Étape 5

Complexité de PPR.

Soit T(n) la complexité de PPR-rec pourn points. On a : T(n) =

2T(n/2) +O(n) si n >3 O(1) sin 63

D'où

T(n) =O(nlogn) Finalement, l'algorithme PPR est en O(nlogn)

Références

[1] Thomas H. Cormen, Algorithmique. Dunod, 3è édition, 2010.

3

Références

Documents relatifs

´equilat´eral, et F le point ext´erieur `a ABCD tel que le triangle BCF soit aussi ´equilat´eral.. On souhaite montrer que les points A, E et F

Cela doit se situer dans le prolonge ment des autres faits.. Bon, la ques tion est simplement

Je sbjppóse tihré 1 lin'ttMIt &amp;&amp;trfc elifcmm. 'Soif M un de ses points. Je substilue à la courbe une ligne brisée inscrite* partant de A et finissant en B, dont je rabats

En effet, tout chemin ApqB ne passant pas par le point M coupe les petits cercles en p et q\ or le plus court chemin de A en p est égal au plus court chemin de A en M (lemme connu),

Dans les éléments, pour prouver que, de toutes les lignes tracées sur la surface d'une sphère et terminées aux deux mêmes points, la plus courte est l'arc de grand cercle qui joint

ANNff SCOlAIRE JOlt/ ZOZO FIOIE SUR LfS IAIIYŒNTRD ET LIGNES OE NMAUX1. EXAMINATIUR : NIUUDIOI RENE NlllfAU : Prtnllèe

~ Activité : Faire placer deux points A et B de coordonnées entières, construire le milieu M de [AB] et en lire les coordonnées. Chercher une formule permettant d’obtenir

Prendre notes des 4 cas de facteurs