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))