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

Documents pareils