1 Union d`ellipses 2 Arrangement de droites

publicité
Algorithmes géométriques, théorie et pratique, exercices arrangements, énoncé
1
Union d'ellipses
On a un ensemble de n ellipses dans le plan, et on va s'intéresser au bord de leur union, et en
particulier au nombre de morceaux d'ellipses intervenant dans ce bord.
On supposera (ou on construira les exemples de telle sorte) que ce bord a une seule composante
connexe.
1.1
Dessiner un exemple avec 5 ellipses où ce bord est composé de trois morceaux d'ellipses.
1.2
Dessiner un exemple avec 3 ellipses où ce bord est composé de 8 morceaux d'ellipses.
1.3
Étant donné n ellipses et un alphabet à n lettres, on va construire un mot sur cet alphabet de
la façon suivante :
On choisi un point de début sur un des morceaux d'ellipses
On énumère les lettres associées dans l'ordre du bord.
(Rq : la dernière lettre est toujours la même que la première)
Donner les mots correspondants aux deux exemples précédents.
1.4
Montrer que le mot formé est une séquence de Davenport Schinzel d'ordre s pour un certain s
que vous déterminerez.
1.5
Quelle est l'ordre de grandeur de la longueur maximale d'une telle séquence ? (vu en cours)
1.6
Quelle est la longueur maximale du bord de l'union de n ellipses ?
1.7
Dessiner deux exemple avec 4 ellipses où le bord est composé de 12 morceaux d'ellipses et qui
ne soit pas "isomorphes" (pas le même mot, quelque soit la manière de choisir le début).
1.8
Question subsidiaire si tout le reste est ni : proposer un algorithme pour calculer un telle
union, analyser sa complexité.
2
Arrangement de droites
Un jardinier cherche à faire 5 rangées de 4 arbres,
2.1
Quel est le nombre minimal d'arbres nécessaire ?
3
Droite ordinaire
On considère un ensemble S de 2n points, n points sur l'axe des x (c'est à dire avec y = 0) et n
points dans le demi-plan avec y > 0. On appelle droite ordinaire une droite passant par exactement
deux points de S (et pas plus ni moins). On cherche à trouver une droite ordinaire (gure 1).
droites non ordinaires
droite ordinaire
Fig.
1
3.1
Dessiner un exemple où il y a un point p de S tel que aucune droite passant par p n'est
ordinaire.
3.2
Si p est un point de S tel que yp > 0 montrer qu'il y a au moins une droite ordinaire passant
par p.
3.3
Donner un algorithme permettant de trouver cette droite ordinaire. Quelle est sa complexité ?
4
Enveloppe inférieure, arrangement
On considère un ensemble E de n ellipses dont la longueur du grand axe est le double de celui
du petit axe et dont le grand axe est soit vertical soit horizontal comme dans l'exemple ci dessous.
On cherche à calculer l'enveloppe inférieure de l'ensemble des ellipses (en gras sur le dessin).
1. En combien de points peuvent se couper deux ellipses de E ? Dessiner un exemple.
2. Qu'en conclure sur la taille de l'enveloppe inférieure ?
3. Si toutes les ellipses avaient leur grand axe vertical (pas d'ellipses d'horizontales), le résultat
serait-il modié ?
4. Est-il possible de tirer parti de la question précédente pour améliorer le résultat sur la
complexité de l'enveloppe inférieure de E .
5. Pouvez-vous suggérer brièvement un algorithme pour calculer cette enveloppe inférieure et
donner sa complexité ?
5
Union de disques
On a un ensemble de n disques dans le plan, et on va s'intéresser au bord de leur union, et en
particulier au nombre de segments de cercles intervenant dans ce bord.
On supposera (ou on construira les exemples de telle sorte) que ce bord a une seule composante
connexe.
1) Dessiner un exemple avec 5 cercles où ce bord est composé de deux segments de cercles.
2) Dessiner un exemple avec 5 cercles où ce bord est composé de 8 segments de cercles.
3) Étant donné n cercles et un alphabet à n lettres, on va construire un mot sur cet alphabet
de la façon suivante :
On choisi un point de début sur un des segment de cercles
On énumère les lettres associées au cercle dans l'ordre du bord.
(Rq : la dernière lettre est toujours la même que la première)
Donner les mots associés aux deux exemples des questions 1 et 2.
4) Montrer que le mot formé est une séquence de Davenport Schinzel d'ordre s pour un certain
s que vous déterminerez.
5) Quelle est la longueur maximale d'une telle séquence ?
6) Quelle est la longueur maximale du bord de l'union de n cercles ?
7) Dessiner un deuxième exemple avec 5 cercles où le bord est composé de 8 segments de
cercles, qui ne soit pas "isomorphe" au précédent (pas le même mot, quelque soit la manière de
choisir le début).
8) Question subsidiaire si tout le reste est ni : proposer un algorithme pour calculer un telle
union, analyser sa complexité et donner une borne inférieure sur la complexité de ce problème.
6
Enveloppe inférieure de segments
La taille d'une enveloppe inférieure de segments est Θ(nα(n)) et l'algorithme vu en cours calcule
cette enveloppe en temps O(nα(n) log n). Nous allons développer dans cet exercice un algorithme
de complexité optimale Θ(n log n).
• Etudier le problème du calcul de l'enveloppe inférieure de n segments coupant la droite
verticale x = 0. (Taille de l'enveloppe, algorithme, temps de calcul).
• Etant donné n segments (quelconques). On note x1 < x2 < . . . < x2n les abcisses des
extrémités des segments. On construit un arbre binaire équilibré tel que la racine correspond à
l'intervalle [x1 , x2n ] et les ls de [xi , xj ] sont [xi , xk ] et [xk , xj ] avec k = b(i + j)/2c Les feuilles de
l'arbre correspondent aux intervalles [xi , xi+1 ].
Chaque segment est stocké dans le n÷ud de l'arbre correspondant au plus petit intervalle le
contenant.
Utiliser la structure décrite ci dessus pour calculer l'enveloppe inférieure des n segments en
temps optimal. On calculera d'abord des enveloppes inférieures avec l'algorithme de la question
précédente. Ensuite on les regroupera en O(log n) paquets dont on calculera l'enveloppe inférieure
facilement. Pour nir, on fusionnera ensuite ces O(log n) enveloppes par l'algorithme divisionfusion classique.
Détailler l'algorithme et étudier sa complexité.
7
Alignement
Étant donné n points rouges, n points verts et 1 point bleu. On cherche si il y a trois points
de couleurs diérentes alignés.
Donner une borne inférieure.
Proposer un algorithme.
8
Enveloppe inférieure
On cherche à calculer l'enveloppe inférieure de demi-droites.
Expliquer comment compléter les demi-droites pour se ramener à une enveloppe inférieure
de fonctions dénies sur IR.
En combien de points se coupent deux demi-droites complétées ? En déduire une borne
sur la taille de l'enveloppe inférieure de demi-droites.
Même question si toutes les demi-droites ont leur coté inni vers les abcisses positives.
Peux-t-on améliorer la complexité de la taille de l'enveloppe inférieure de demi-droites dans le cas
général ?
Proposer un algorithme de calcul de l'enveloppe inférieure de demi-droites. Donner sa complexité et une borne inférieure.
9
Controle aérien
n avions se déplacent en ligne droite à vitesse constante, la position de l'avion i au temps t est
pi (t) = qi + tvi , qi , vi ∈ IR2 . Un controleur aérien doit concentrer son attention sur l'avion le plus
proche.
Combien de fois le controleur devra-t-il changer d'avion dans la cas le pire ?
Si il suivait l'avion le plus loin ?
Si il s'agissait d'objets tombant en chute libre pi (t) = qi + tvi + t2 g (g est indentique pour
tous les objets)
Algorithmes géométriques, théorie et pratique, exercices arrangements, correction
1
Union d'ellipses
b
c
a
a
b
c
1.3
abca et acbcacbca
1.4
Deux ellipses se coupent en 4 points... DS d'ordre 4.
1.5
O(n2α(n) ), presque linéaire !
1.6
juste 1 en moins puisque la première et dernière lettres correspondent en fait au même morceau.
1.7
b
b
d
d
c
c
a
a
acdbdcbcdbdca
acdbdcbcdbdca
acdbdbdcacdca
acdbdbdcacdca
1.8
En O(n2α(n) log n) par balayage par exemple.
2
Arrangement de droites
Nombre de sommets d'une arrangement de n droites : n(n − 1)/2 soit 5 rangées non parallèles nous
donnent 10 sommets (arbres). Introduire des dégénérescences fait diminuer le nombre de sommet par
droite pour n donné.
3
Droite ordinaire
1 n points sur l'axe des x dont l'origine, n points sur l'axe des y en plus de l'origine, il n'y a pas de
droite ordinaire passant par l'origine.
2 Si on prends les n droites par p et les points de l'axe des x, il y en a au moins une qui ne porte pas
un des points restant puisqu'il n'y en a que n − 1.
3 Trier les points autour de p et trouver l'angle où il n'y a qu'un seul point. Ça fait O(n log n). On
peut faire O(n) dans ce cas mais c'est un peu plus compliqué.
4
Enveloppe inférieure, arrangement
1. 4, comme n'importe quelle paire de coniques. Dans la gure, si on considère les deux ellipses de
droite, on peut déplacer un peu la petite vers la droite pour qu'elle dépasse des deux cotés et
obtenir l'enveloppe grosse,petite,grosse,petite,grosse.
2. Que c'est plus petit que λ4 (n) longueur d'une séquence de Davenport Schinzel d'ordre 4, c'est à dire
presque linéaire, mais quand même en théorie supra linéaire.
3. Ben oui ! Il n'y a plus que deux points d'intersection pour deux ellipses (puisqu'à une anité près
c'est des cercles), on descend à λ2 (n) = 2n − 1. C'est la même chose si on a que des horizontales et
pas de verticales.
4. On découpe E = Ev ∪ Eh en ellipses horizontales et verticales, les enveloppes inférieures de Ev et Eh
sont donc linéaires. L'enveloppe nale est linéaire puisque le nombre de sommets des deux enveloppes
est linéaire et qu'entre deux tels sommets on introduit au plus 4 nouveaux sommets.
5. On sépare les horizontales et les verticales en O(n), on fait l'enveloppe de chaque (division + fusion
par balayage vu en cours) en O(n log n) fusion nale des deux enveloppes en O(n) par balayage.
5
Union de disques
1)
2)
3)
4)
5)
6)
7)
8)
Trois petits cercles dans deux gros qui se coupent.
Quatre petits cercles disjoints qui coupent le bord d'un gros.
aba et abacadaea
Deux cercles se coupent en 2 points... DS d'ordre 2.
2n-1
2n-2 puisque la première et dernière lettres correspondent en fait au même segment.
abcdedcba et abacadaea
En Θ(n log n) par balayage par exemple. Borne inférieure en considérant des valeurs à trier xi ∈
[0, 2Π]1 ≤ i ≤ n − 1 et en considérant les cercles de rayon 1 : C0 de centre (0, 0) Ci de centre (cos xi , sin xi ).
6
Enveloppe inférieure de segments
[Hersheberger]
7
Alignement
8
Enveloppe inférieure
avec une demi-droite qui monte vite
3 points, O(nα(n))
2 points, O(n) on fait 2 paquets : les demi-droites à droites et celles à gauche.
la fusion nale n'augmente pas dramatiquement la complexité O(n)
2 paquets. division fusion dans chaque paquet. fusion nale. O(n log n)
9
Controle aérien
C'est une enveloppe inférieure de paraboles. Ça se coupe en 2 points, donc λ2 (n) = 2n − 1
Pareil
La distance au carré est alors une fonction de degré 4 en t, mais le terme de degré 4 est le même
pour tout le monde. On regarde donc une enveloppe inférieure de fonction se coupant en au plus 3
points. λ3 (n) = O(nα(n))
Téléchargement