Delaunay, les classiques
Transcription
Delaunay, les classiques
De la géométrie algorithmique au calcul géométrique l’exemple de la triangulation de Delaunay Les grands classiques Géométrie algorithmique Problème géométrique Analyse des performances Borne inférieure Borne supérieure Complexité asymptotique Analyse dans le cas le pire Analyse en moyenne Borne inférieure pour la triangulation de Delaunay Ω (f (n)) Il n’existe pas d’algorithme résolvant toutes les instances du problème avec moins de f (n) opérations Borne inférieure pour le tri Borne inférieure pour le tri Trier ⇐⇒ trouver une permutation Borne inférieure pour le tri Trier ⇐⇒ trouver une permutation Ordre 6= =⇒ exécution 6= Borne inférieure pour le tri Arbre des executions décision resultat (permutation) Borne inférieure pour le tri Arbre des executions Arbre binaire n! feuilles hauteur ≥ log2 n! ' n log n Borne inférieure pour le tri Ω(n log n) Borne inférieure pour Delaunay Delaunay sert à trier Borne inférieure pour Delaunay Delaunay sert à trier Prendre un problème de tri Supposer que l’on sait faire Delaunay Utiliser Delaunay pour trier Borne inférieure pour Delaunay x1, x2, . . . , xn à trier xi Borne inférieure pour Delaunay x1, x2, . . . , xn à trier (x1, x21), . . . , (xn, x2n) n points (xi, x2i ) xi Borne inférieure pour Delaunay x1, x2, . . . , xn à trier (x1, x21), . . . , (xn, x2n) n points Delaunay ordre en x xi Borne inférieure pour Delaunay x1, x2, . . . , xn à trier (x1, x21), . . . , (xn, x2n) n points Delaunay ordre en x O(n) + f (n) ∈ O(n log n) xi O(n) f (n) O(n) Borne inférieure pour Delaunay x1, x2, . . . , xn à trier Ω(n log n) xi Algorithmes optimaux pour la triangulation de Delaunay Produire des algorithmes optimaux Complexité asymptotique Dans le cas le pire Division-fusion Algorithme de balayage Algorithmes optimaux pour la triangulation de Delaunay Balayage Balayage Couper le problème 2D par un objet 1D Déplacer l’objet Voronoi [Fortune] Présentation duale sur Delaunay Dessiner une arête quand elle est sure Évènements cercle Front de balayage Évènement cercle q p r t Évènement cercle q p r t Évènement cercle q p r t Évènement cercle q p r t Évènement cercle Triangulation q p + 1 triangle +1 arête Évenements r t - 1 cercle -2 cercles ? +2 cercles ? Front 2 arêtes → 1 arête Évènement point v q p u Évènement point v q p u Évènement point v q p u Évènement point v q p u Évènement point v q Triangulation p u + 1 sommet +1 arête Évenements - 1 point -1 cercle1 ? +2 cercles ? Front + 2 arêtes Front de balayage Front de balayage Front de balayage Localisation Front de balayage Algorithme de balayage Complexité Triangulation O(n) (taille) Front O(n) (taille) O(log n) insertion, suppression, requête Évènements O(n) (taille) O(log n) insertion, suppression, requête O(n log n) Prédicats Prédicat : cercle le plus à droite p1 q1 r1 = p 2 6 points polynôme de degré 24 q2 r2 Prédicats Prédicat : q dessus/dessous ? p1 3 points polynôme de degré ?? q p2 Algorithmes optimaux pour la triangulation de Delaunay Dualité Rappel Π : x2 + y 2 = z Rappel p? = (xp, yp, x2p + yp2) p = (xp, yp) Rappel C † : z − 2ax − 2by + c = 0 C : x2 + y 2 − 2ax − 2by + c = 0 Rappel p? au dessous de C † p∈C Rappel p? au dessus de C † p 6∈ C Rappel p? ∈ C † p ∈ ∂C Rappel Prédicat d’orientation 3D Prédicat de cocyclicité Delaunay et enveloppe convexe Retour sur la bascule de diagonales Complexité Retour sur la bascule de diagonales Complexité pas localement Delaunay Retour sur la bascule de diagonales Complexité pas convexe pas localement Delaunay Retour sur la bascule de diagonales Complexité pas convexe Flip Retour sur la bascule de diagonales Complexité pas convexe on colle un tétrahèdre Flip Retour sur la bascule de diagonales Complexité pas convexe Flip Retour sur la bascule de diagonales Complexité pas convexe Flip Retour sur la bascule de diagonales Complexité pas convexe Flip Retour sur la bascule de diagonales Complexité on colle un tétrahèdre Flip Retour sur la bascule de diagonales Complexité Une arête basculée n’est jamais reconstruite (les nouvelles arêtes sont toujours dessous) on colle un tétrahèdre Flip Retour sur la bascule de diagonales Complexité Une arête basculée n’est jamais reconstruite (les nouvelles arêtes sont toujours dessous) Algorithme en O(n2) Algorithmes optimaux pour la triangulation de Delaunay Division-Fusion Division-Fusion Technique classique exemple: tri Problème de taille n 2 sous-problèmes de taille résolution récursive fusion n 2 Division-Fusion Problème de taille n f (n) 2 sous-problèmes de taille O(n) résolution récursive fusion O(n) n 2 2 · f ( n2 ) Division-Fusion f (n) = O(n) + 2f ( n2 ) Problème de taille n f (n) 2 sous-problèmes de taille O(n) résolution récursive fusion O(n) n 2 2 · f ( n2 ) Division-Fusion f (n) = O(n) + 2f ( n2 ) f (n) = n + 2f ( n2 ) ! n n n + 2 2 + 2f ( 4 ) n 2 n + 2 + 2 n4 + 2f ( n8 ) n + 2 n2 + 2.2 n4 + . . . log2 n f (n) = O(n log n) !! Division Fusion facile ! Partition équilibrée O(n) Division Fusion facile ! Partition par une droite Partition équilibrée Droite médiane O(n) Médian linéaire ? Prétraitement Division Division Tri en x Division Tri en x tous les médians Triangles monocolores à éliminer Triangles bicolores à construire Construction des arêtes bicolores du haut vers le bas suivante ? Construction des arêtes bicolores du haut vers le bas suivante ? Construction des arêtes bicolores du haut vers le bas suivante ? Construction des arêtes bicolores du haut vers le bas suivante ? Construction des arêtes bicolores du haut vers le bas suivante ? Construction des arêtes bicolores du haut vers le bas suivante ? Construction des arêtes bicolores du haut vers le bas suivante ? Construction des arêtes bicolores du haut vers le bas suivante ? Construction des arêtes bicolores du haut vers le bas suivante ? Construction des arêtes bicolores du haut vers le bas suivante ? Construction des arêtes bicolores du haut vers le bas suivante ? Construction des arêtes bicolores du haut vers le bas suivante ? Construction des arêtes bicolores du haut vers le bas suivante ? p p b r premier rouge rencontré par le faisceau de cercles p rnext premier bleu rencontré par le faisceau de cercles p bnext On garde le meilleur des deux p premier rouge rencontré par le faisceau de cercles p b r premier rouge rencontré par le faisceau de cercles p r b r2 r2 ∈ Cercle(b, r, r1) r1 premier rouge rencontré par le faisceau de cercles p r b r3 r2 r3 ∈ Cercle(b, r, r2) r1 premier rouge rencontré par le faisceau de cercles p r b r3 r2 r4 ∈ Cercle(b, r, r3) r4 r1 premier rouge rencontré par le faisceau de cercles r5 p r b r3 r2 r5 6∈ Cercle(b, r, r4) r4 r1 premier rouge rencontré par le faisceau de cercles r5 p r b r4 = rnext r3 r2 r5 6∈ Cercle(b, r, r4) r1 ∀rouge, rouge 6∈ Cercle(b, r, r4) premier bleu rencontré par le faisceau de cercles p b r rnext premier bleu rencontré par le faisceau de cercles r p b b2 b2 ∈ Cercle(b, r, b1) b1 rnext premier bleu rencontré par le faisceau de cercles p b b3 b2 b3 6∈ Cercle(b, r, b2) b1 r rnext premier bleu rencontré par le faisceau de cercles p r rnext b b3 bnext = b2 b3 6∈ Cercle(b, r, b2) b1 ∀bleu, bleu 6∈ Cercle(b, r, b2) p b bnext r rnext pas de points p b bnext r rnext pas de rouges p b bnext r rnext pas de bleus p b bnext r rnext pas pas de de rouges points bleus p b bnext r rnext p b bnext r rnext p b r p b r rnext p b bnext r p b r p b r p b r rnext p b bnext r p b r p b r p b r rnext p b r p b bnext r p b r Complexité Complexité A chaque étape de la recherche de rnext Complexité A chaque étape de la recherche de rnext On efface une arête rouge Complexité A chaque étape de la recherche de rnext On efface une arête rouge A chaque étape de la recherche de bnext Complexité A chaque étape de la recherche de rnext On efface une arête rouge A chaque étape de la recherche de bnext On efface une arête bleue Complexité A chaque étape de la recherche de rnext On efface une arête rouge A chaque étape de la recherche de bnext On efface une arête bleue Choisir entre rnext et bnext Complexité A chaque étape de la recherche de rnext On efface une arête rouge A chaque étape de la recherche de bnext On efface une arête bleue Choisir entre rnext et bnext On trace une arête noire Complexité Complexité ≤ ] arêtes rouges +] arêtes bleues +] arêtes noires Complexité Complexité ≤ ] arêtes rouges +] arêtes bleues +] arêtes noires ≤ 3n + 3n = O(n) Division-Fusion =⇒ O(n log n) Division Division Division Division Division Fusion Division Fusion Division Fusion Division Fusion Division Fusion Division Division Division Division Division Fusion Division Fusion Division Fusion Division Fusion Division Fusion Complexité Complexité Fusion Complexité Fusion O(n) Complexité Fusion Division ? O(n) Complexité Fusion Division ? O(n) médian ? Complexité Fusion Division ? O(n) médian ? plus difficile Complexité Fusion Division ? O(n) médian ? O(n) Complexité Fusion Division ? Points aléatoires √ O(n) O( n) médian ? O(n) O(1) √ f (n) = √ √ √ f (n) = O( n) + 2f ( n2 ) n + 2f ( n2 ) n+2 r r n 2 n 2 + f ( n4 ) r n 4 f ( n8 ) n+2 +2 + √ √ r √ n n n + 2 2 + ... + 2 2 + n 1 log2 n f (n) ≤ n + 2− 12 n + . . . + 2− 2i n + . . . f (n) = O(n) Médian linéaire Médian linéaire n nombres Médian linéaire des paquets de 5 Médian linéaire des paquets de 5 Médian linéaire des paquets de 5 Médian linéaire des paquets de 5 Médian linéaire des paquets de 5 Médian linéaire des paquets de 5 Médian linéaire des paquets de 5 Médian linéaire des paquets de 5 Médian linéaire médian de 5 Médian linéaire médian de 5 Médian linéaire médian de 5 Médian linéaire médian de 5 Médian linéaire médian de 5 Médian linéaire médian de n 5 Médian linéaire médian de n 5 Médian linéaire Médian linéaire plus petits Médian linéaire plus petits plus grands Médian linéaire entre plus petits 3 10 et 7 10 plus grands Médian linéaire médian de n 5 Médian linéaire Médian linéaire plus petits Médian linéaire plus petits plus grands f (n) = O(n) + f ( n5 ) + f ( 7n 10 ) f (n) = n + f ( n5 ) + f ( 7n 10 ) n 7n 7n 49n n + n5 + 7n 10 + f ( 25 ) + f ( 50 ) + f ( 50 ) + f ( 100 ) n+ 9 10 n f (n) ≤ 10nα + 9 2 10 n + f (. . .) + f (. . .) + . . . f (n) = O(n) f (n) = O(n) + f ( n5 ) + f ( 7n 10 ) f (n) = n + f ( n5 ) + f ( 7n 10 ) n 7n 7n 49n n + n5 + 7n 10 + f ( 25 ) + f ( 50 ) + f ( 50 ) + f ( 100 ) n+ 9 10 n + 9 2 10 n f (n) ≤ 10nα α médian de 5 séparation + f (. . .) + f (. . .) + . . . f (n) = O(n) f (n) = O(n) + f ( n5 ) + f ( 7n 10 ) f (n) = n + f ( n5 ) + f ( 7n 10 ) n 7n 7n 49n n + n5 + 7n 10 + f ( 25 ) + f ( 50 ) + f ( 50 ) + f ( 100 ) n+ 9 10 n + 9 2 10 n f (n) ≤ 10nα α médian de 5 séparation + f (. . .) + f (. . .) + . . . f (n) = O(n) log2(5!) = 7 C’est tout pour aujourd’hui