De la g´eom´etrie algorithmique au calcul g´eom´etrique
l’exemple
de la triangulation de Delaunay
Les grands classiques
G´eom´etrie algorithmique Probl`eme g´eom´etrique Analyse des performances
Borne inf´erieure Borne sup´erieure
Complexit´e asymptotique Analyse dans le cas le pire Analyse en moyenne
Borne inf´erieure pour
la triangulation de Delaunay
Ω (f(n))
r´esolvant toutes
les instances du probl`eme avec moins de f(n) op´erations
d’algorithme Il n’existe pas
Borne inf´erieure pour le tri
Borne inf´erieure pour le tri
Trier ⇐⇒ trouver une permutation
Borne inf´erieure pour le tri
Trier ⇐⇒ trouver une permutation
Ordre 6= =⇒ ex´ecution 6=
Borne inf´erieure pour le tri
Arbre des executions
d´ecision
resultat (permutation)
Borne inf´erieure pour le tri
Arbre des executions Arbre binaire
n! feuilles
hauteur ≥ log2 n! ' n log n
Borne inf´erieure pour le tri
Ω(n log n)
Borne inf´erieure pour Delaunay
Delaunay sert `a trier
Borne inf´erieure pour Delaunay
Delaunay sert `a trier
Prendre un probl`eme de tri
Supposer que l’on sait faire Delaunay Utiliser Delaunay pour trier
Borne inf´erieure pour Delaunay
x1, x2, . . . , xn `a trier
xi
Borne inf´erieure pour Delaunay
x1, x2, . . . , xn `a trier
xi
(xi, x2i)
(x1, x21), . . . ,(xn, x2n) n points
Borne inf´erieure pour Delaunay
x1, x2, . . . , xn `a trier
xi
(x1, x21), . . . ,(xn, x2n) n points
Delaunay
ordre en x
Borne inf´erieure pour Delaunay
x1, x2, . . . , xn `a trier
xi
(x1, x21), . . . ,(xn, x2n) n points
Delaunay
ordre en x
O(n)
O(n) f(n)
O(n) + f(n) ∈ O(n log n)
Borne inf´erieure pour Delaunay
x1, x2, . . . , xn `a trier
xi Ω(n log n)
Algorithmes optimaux pour la triangulation de Delaunay
Produire des algorithmes optimaux
Complexit´e asymptotique Dans le cas le pire
Algorithme de balayage Division-fusion
Algorithmes optimaux pour la triangulation de Delaunay
Balayage
Couper le probl`eme 2D par un objet 1D D´eplacer l’objet
Voronoi [Fortune]
Pr´esentation duale sur Delaunay Balayage
Dessiner une arˆete quand elle est sure
Ev`enements cercle´
Front de balayage
q p
r
t
Ev`enement cercle´
q p
r
t
Ev`enement cercle´
q p
r
t
Ev`enement cercle´
q p
r
t
Ev`enement cercle´
q p
r
t
Ev`enement cercle´
Triangulation Evenements´
Front
+ 1 triangle +1 arˆete
- 1 cercle -2 cercles ?
2 arˆetes → 1 arˆete +2 cercles ?
q p v
u
Ev`enement point´
q p v
u
Ev`enement point´
q p v
u
Ev`enement point´
q p v
u
Ev`enement point´
q p v
u
Ev`enement point´
Triangulation Evenements´
Front
+ 1 sommet +1 arˆete
- 1 point -1 cercle1 ?
+ 2 arˆetes +2 cercles ?
Front de balayage
Front de balayage
Front de balayage Localisation
Front de balayage
Algorithme de balayage Complexit´e
Triangulation Front
O(n) (taille) O(n) (taille)
O(n) (taille)
O(logn) insertion, suppression, requˆete
O(logn) insertion, suppression, requˆete
O(n log n) Ev`enements´
Pr´edicats
p1 q1
r1 = p2
q2
r2 6 points
polynˆome de degr´e 24
Pr´edicat : cercle le plus `a droite
Pr´edicats
p1
q p2
3 points
polynˆome de degr´e ??
Pr´edicat : q dessus/dessous ?
Algorithmes optimaux pour la triangulation de Delaunay
Dualit´e
Rappel
Π : x2 + y2 = z
Rappel
p = (xp, yp) p? = (xp, yp, x2p + yp2)
Rappel
C : x2 + y2 − 2ax − 2by + c = 0 C† : z − 2ax − 2by + c = 0
Rappel
p ∈ C
p? au dessous de C†
Rappel
p 6∈ C
p? au dessus de C†
Rappel
p ∈ ∂C p? ∈ C†
Rappel
Pr´edicat d’orientation 3D
Pr´edicat de cocyclicit´e
Delaunay et enveloppe convexe
Complexit´e
Retour sur la bascule de diagonales
Complexit´e
pas localement Delaunay Retour sur la bascule de diagonales
Complexit´e
pas localement Delaunay pas convexe
Retour sur la bascule de diagonales
Complexit´e
pas convexe
Flip
Retour sur la bascule de diagonales
Complexit´e
pas convexe
Flip
on colle un t´etrah`edre Retour sur la bascule de diagonales
Complexit´e
pas convexe
Flip
Retour sur la bascule de diagonales
Complexit´e
pas convexe
Flip
Retour sur la bascule de diagonales
Complexit´e
pas convexe
Flip
Retour sur la bascule de diagonales
Complexit´e
Flip
on colle un t´etrah`edre Retour sur la bascule de diagonales
Complexit´e
Flip
on colle un t´etrah`edre
Une arˆete bascul´ee n’est jamais reconstruite
(les nouvelles arˆetes sont toujours dessous)
Retour sur la bascule de diagonales
Complexit´e
Une arˆete bascul´ee n’est jamais reconstruite
(les nouvelles arˆetes sont toujours dessous)
Algorithme en O(n2)
Retour sur la bascule de diagonales
Algorithmes optimaux pour la triangulation de Delaunay
Division-Fusion
Division-Fusion
Technique classique exemple: tri Probl`eme de taille n
2 sous-probl`emes de taille n2 r´esolution r´ecursive
fusion
Division-Fusion
O(n)
Probl`eme de taille n
r´esolution r´ecursive fusion
2 sous-probl`emes de taille n2
O(n)
2 · f(n2) f(n)
Division-Fusion
O(n)
Probl`eme de taille n
r´esolution r´ecursive fusion
2 sous-probl`emes de taille n2
O(n)
2 · f(n2) f(n)
f(n) = O(n) + 2f(n2)
Division-Fusion
f(n) = O(n) + 2f(n2) f(n) =
log2 n f(n) = O(n log n)
n + 2f(n2)
n + 2 n2 + 2f(n4)!
n + 2 n2 + 2 n4 + 2f(n8)!!
n + 2n2 + 2.2n4 + . . .
Division
O(n)
Fusion facile !
Partition ´equilibr´ee
Division
O(n)
Fusion facile !
Partition ´equilibr´ee
Partition par une droite
Droite m´ediane M´edian lin´eaire ? Pr´etraitement
Division
Division
Tri en x
Division
Tri en x
tous les m´edians
Triangles monocolores `a ´eliminer
Triangles bicolores `a construire
Construction des arˆetes bicolores du haut vers le bas
suivante ?
Construction des arˆetes bicolores du haut vers le bas
suivante ?
Construction des arˆetes bicolores du haut vers le bas
suivante ?
Construction des arˆetes bicolores du haut vers le bas
suivante ?
Construction des arˆetes bicolores du haut vers le bas
suivante ?
Construction des arˆetes bicolores du haut vers le bas
suivante ?
Construction des arˆetes bicolores du haut vers le bas
suivante ?
Construction des arˆetes bicolores du haut vers le bas
suivante ?
Construction des arˆetes bicolores du haut vers le bas
suivante ?
Construction des arˆetes bicolores du haut vers le bas
suivante ?
Construction des arˆetes bicolores du haut vers le bas
suivante ?
Construction des arˆetes bicolores du haut vers le bas
suivante ?
Construction des arˆetes bicolores du haut vers le bas
suivante ?
p
p r b
p rnext
premier rouge rencontr´e par le faisceau de cercles
p
bnext
premier bleu rencontr´e par le faisceau de cercles
p
On garde le meilleur des deux
p r b
premier rouge rencontr´e par le faisceau de cercles
p r b
premier rouge rencontr´e par le faisceau de cercles
r1 r2
r2 ∈ Cercle(b, r, r1)
p r b
premier rouge rencontr´e par le faisceau de cercles
r1 r2
r3
r3 ∈ Cercle(b, r, r2)
p r r4 b
premier rouge rencontr´e par le faisceau de cercles
r1 r2
r3
r4 ∈ Cercle(b, r, r3)
p r r4 b
premier rouge rencontr´e par le faisceau de cercles
r1 r2
r3 r5
r5 6∈ Cercle(b, r, r4)
p r r4 b
premier rouge rencontr´e par le faisceau de cercles
r1 r2
r3 r5
= rnext
r5 6∈ Cercle(b, r, r4)
∀rouge, rouge 6∈ Cercle(b, r, r4)
p r b
premier bleu rencontr´e par le faisceau de cercles
rnext
p r b
premier bleu rencontr´e par le faisceau de cercles
b2 b2 ∈ Cercle(b, r, b1)
rnext
b1
p r b
premier bleu rencontr´e par le faisceau de cercles
b2 b3
b3 6∈ Cercle(b, r, b2)
rnext
b1
p r b
premier bleu rencontr´e par le faisceau de cercles
b2 b3 bnext =
b3 6∈ Cercle(b, r, b2)
∀bleu, bleu 6∈ Cercle(b, r, b2) rnext
b1
p r b
bnext
rnext
p r b
bnext
rnext pas de points
p r b
bnext
rnext pas de rouges
p r b
bnext
rnext pas de bleus
p r b
bnext
rnext pas de rougespas de pointspas de bleus
p r b
bnext
rnext
p r b
p r
b rnext
p r b
bnext
p r b
r p b
rnext r p b
r p b
bnext
r p b
r p b
rnext r
p b
r p b
r p b
bnext
r p b
Complexit´e
Complexit´e
A chaque ´etape de la recherche de rnext
Complexit´e
A chaque ´etape de la recherche de rnext
On efface une arˆete rouge
Complexit´e
A chaque ´etape de la recherche de rnext
On efface une arˆete rouge
A chaque ´etape de la recherche de bnext
Complexit´e
A chaque ´etape de la recherche de rnext
On efface une arˆete rouge
A chaque ´etape de la recherche de bnext
On efface une arˆete bleue
Complexit´e
A chaque ´etape de la recherche de rnext
On efface une arˆete rouge
A chaque ´etape de la recherche de bnext
On efface une arˆete bleue
Choisir entre rnext et bnext
Complexit´e
A chaque ´etape de la recherche de rnext
On efface une arˆete rouge
A chaque ´etape de la recherche de bnext
On efface une arˆete bleue
Choisir entre rnext et bnext
On trace une arˆete noire
Complexit´e
Complexit´e ≤
+] arˆetes bleues +] arˆetes noires ] arˆetes rouges
Complexit´e
Complexit´e ≤
+] arˆetes bleues +] arˆetes noires ] arˆetes rouges
≤ 3n + 3n = O(n) Division-Fusion =⇒ O(n log n)
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 Division
Complexit´e
Complexit´e
Fusion
Complexit´e
Fusion O(n)
Complexit´e
Fusion O(n)
Division ?
Complexit´e
Fusion O(n)
Division ? m´edian ?
Complexit´e
Fusion O(n)
Division ? m´edian ? plus difficile
Complexit´e
Fusion O(n)
Division ? m´edian ? O(n)
Complexit´e
Fusion O(n)
Division ? m´edian ? O(n)
Points al´eatoires O(√
n)
O(1)
f(n) = O(√
n) + 2f(n2) f(n) =
log2 n
f(n) = O(n)
√n + 2f(n2)
√n + 2rn2 + f(n4)
√n + 2rn2 + 2 rn4 + f(n8)
√n + 2rn2 + . . . + n2√
2 + n√ 1
f(n) ≤ n + 2−12n + . . . + 2−2in + . . .
M´edian lin´eaire
M´edian lin´eaire
n nombres
M´edian lin´eaire des paquets de 5
M´edian lin´eaire des paquets de 5
M´edian lin´eaire des paquets de 5
M´edian lin´eaire des paquets de 5
M´edian lin´eaire des paquets de 5
M´edian lin´eaire des paquets de 5
M´edian lin´eaire des paquets de 5
M´edian lin´eaire des paquets de 5
M´edian lin´eaire m´edian de 5
M´edian lin´eaire m´edian de 5
M´edian lin´eaire m´edian de 5
M´edian lin´eaire m´edian de 5
M´edian lin´eaire m´edian de 5
M´edian lin´eaire m´edian de n5
M´edian lin´eaire m´edian de n5
M´edian lin´eaire
M´edian lin´eaire
plus petits
M´edian lin´eaire
plus petits plus grands
M´edian lin´eaire
plus petits plus grands
entre 103 et 107
M´edian lin´eaire m´edian de n5
M´edian lin´eaire
M´edian lin´eaire plus petits
M´edian lin´eaire plus petits
plus grands
f(n) = O(n) + f(n5) + f(7n10) f(n) =
f(n) = O(n) n + f(n5) + f(7n10)
n + 109 n +109 2n +f(. . .) + f(. . .) + . . .
f(n) ≤ 10nα
n + n5 + 7n10 +f(25n ) + f(7n50) + f(7n50) + f(49n100)
f(n) = O(n) + f(n5) + f(7n10) f(n) =
f(n) = O(n) n + f(n5) + f(7n10)
n + 109 n +109 2n +f(. . .) + f(. . .) + . . .
f(n) ≤ 10nα
n + n5 + 7n10 +f(25n ) + f(7n50) + f(7n50) + f(49n100)
α m´edian de 5 s´eparation
f(n) = O(n) + f(n5) + f(7n10) f(n) =
f(n) = O(n) n + f(n5) + f(7n10)
n + 109 n +109 2n +f(. . .) + f(. . .) + . . .
f(n) ≤ 10nα
n + n5 + 7n10 +f(25n ) + f(7n50) + f(7n50) + f(49n100)
α m´edian de 5 s´eparation
log2(5!) = 7
C’est tout pour aujourd’hui