Upload
hajer-trabelsi
View
150
Download
0
Embed Size (px)
Citation preview
1
La complexité des algorithmes récursivesGéométrie algorithmique
Hajer TRABELSI
Master de recherche MR1-IMD/ISAMM
Juin 2014
2
Contexte
Aujourd'hui la complexité est devenue un élément important dans plusieurs domaine.
Géométrie algorithmique est un domaine relativement récent né autour des années 70s, dont le but est d'étudier les propriétés des objets géométriques.
Elle joue un rôle fondamental dans un grand nombre de domaines tels que le robotique, conception assistée par ordinateur, " design" industriel, image de synthèse, jeux vidéo...
Cela explique l’importance algorithmique des problèmes géométriques.
Nous nous intéressons de la complexité des algorithmes dans ce domaine.
La complexité des algorithmes récursivesGéométrie algorithmique
3
Plan
Géométrie algorithmique Enveloppe convexe Algorithmes
Diviser pour régner (Divide-and-conquer) Recherche Binaire (Binary search)
Théorèmes générales Conclusion
La complexité des algorithmes récursivesGéométrie algorithmique
Géométrie algorithmique
C’est le domaine qui traite des algorithmes manipulant des concepts géométriques.
« C’est l'art d'accommoder ensemble les objets géométriques élémentaires pour en faire des objets plus élaborés. » - Olivier Devillers - [10]
L'exemple le plus cité étant celui de l'enveloppe convexe : on a au départ des points dans le plan, et on cherche à organiser ces points, en l'occurrence à trouver le plus petit polygone qui contienne tous les points, et soit convexe.
4La complexité des algorithmes récursives
Géométrie algorithmique
Géométrie algorithmique
Historique : Vers les 70s: Premiers algorithmes pour résoudre les
problèmes géométriques. 1976: Première thèse de doctorat en géométrie
algorithmique (Michael Shamos) 1985: First Annual ACM Symposium on Computational
Geometry. 1996: CGAL: 1ère implémentation des algorithmes
efficaces. 1997: Le premier « handbook on computational
geometry » voit le jour (le second en 2000). [5]
La complexité des algorithmes récursivesGéométrie algorithmique
5
Enveloppe convexe
L'enveloppe convexe (convex hull) d'un ensemble S est le plus petit ensemble CH(S) convexe, contenant S.
C'est aussi l'intersection de tous les ensembles convexes contenant S.
Un ensemble S est convexe si pour toute paire de points a, b Є S, le segment ab Ϲ S.
X
✔
6La complexité des algorithmes récursives
Géométrie algorithmique
Enveloppe convexe
Soit P un ensemble de n points du plan.
On souhaite calculer l'enveloppe convexe de cet ensemble.
C'est le polygone (fermé) dont les sommets appartiennent à P et qui contient tous les points de P.
7La complexité des algorithmes récursives
Géométrie algorithmique
Enveloppe convexe
Il peut être utilisée dans plusieurs cas.
Exemple: si on a une antenne radio qui doit couvrir un certain nombre de points, on va chercher la meilleure place pour positionner cette antenne.
Cela revient à trouver la plus petite ellipse contenant les points. Comme cette ellipse est convexe, il est clair que seuls les points de l'enveloppe convexe vont jouer un rôle.
8La complexité des algorithmes récursives
Géométrie algorithmique
Algorithmes…
Pour parvenir au résultat recherché, il faut maintenant expliquer à la machine la recette.
l'algorithme. Plusieurs algorithmes et techniques s’interviennent…
9
Entrée = ensemble de points P
p1 , p2 , p3 , p4 , p5 , p6 , p7 , p8 , p9 , p10 , p11
Sortie = enveloppe convexe CH(P)
p7 , p2 , p3 , p8 , p6 , p10
La complexité des algorithmes récursivesGéométrie algorithmique
Diviser pour régner (Divide-and-conquer) Idée:
Diviser l’ensemble des éléments en deux groupes. Déterminer pour chaque ensemble l’enveloppe convexe
selon une méthode récursive. Fusionner les deux enveloppes.
Fusion de l’enveloppe: Trouver les tangentes reliant les enveloppes
10La complexité des algorithmes récursives
Géométrie algorithmique
Diviser pour régner (Divide-and-conquer)
11
26 1 7 50 4 3
26 1 7 50 4 3
26 71 40 35
26 71 40 35
N=8
N=4
N=2
N=1
La complexité des algorithmes récursivesGéométrie algorithmique
Diviser pour régner (Divide-and-conquer)
12
26 1 7 50 4 3
26 1 7 50 4 3
62 71 40 53
21 76 30 54
10 2 3 64 5 7
La complexité des algorithmes récursivesGéométrie algorithmique
Diviser pour régner (Divide-and-conquer)
Le problème se divise en deux sous-problèmes de taille approximative n/2.
2 T(n/2) La division et la fusion sont
effectués en un temps D(n) et C(n).
O (n).
Par conséquent, le temps d'exécution de l'algorithme est en O(n log n).
13La complexité des algorithmes récursives
Géométrie algorithmique
Recherche Binaire (Binary search) Elle peut être vue comme une divide-and-conquer
méthode.
Chaque itération élimine la moitié des possibilités restantes.
Cela rend les recherches binaires très efficace.
Elle nécessite une collecte sélective.
Cela signifie la collecte doit être triés avant de chercher.
14La complexité des algorithmes récursives
Géométrie algorithmique
Recherche Binaire (Binary search)
15
1 2 5 7 8 11 12 17141 2 5 7 8 11 12 17141 2 5 7 8 11 12 1714
✔
Chercher l’élément x=14
La complexité des algorithmes récursivesGéométrie algorithmique
Recherche Binaire (Binary search)
Principe dichotomie : À chaque étape d’itération,
l’intervalle de recherche doit être divisé par deux.
T(n/2) Le test est en O(1).
Le temps d’exécution est en
O(log n).
16La complexité des algorithmes récursives
Géométrie algorithmique
Autres…
Brute Force Algorithme de la ficelle (Jarvis) Gift Wrapping Quickhull …
17La complexité des algorithmes récursives
Géométrie algorithmique
Théorèmes générales
n : la taille du problème a : le nombre des sous
problèmes dans la récursivité.
n/b : la taille de chaque sous-problème.
f : le coût des traitement que l'algorithme fait en dehors des appels récursifs.
Si a≥1 , b>1 alors
T(n) = aT(n/b) + f(n)
18La complexité des algorithmes récursives
Géométrie algorithmique
Théorèmes générales
(Démonstration: voir [1])
La complexité des algorithmes récursivesGéométrie algorithmique
19
Théorèmes générales
La complexité des algorithmes récursivesGéométrie algorithmique
20
Conclusion
La géométrie algorithmique est un domaine vague contenant plusieurs algorithmes qui traitent des concepts géométriques.
Parmi ces algorithmes, il y’a ceux qui traitent l’enveloppe convexe.
Ils permettent d’organiser des points/ des éléments dans un plan.
Des techniques sont utilisées par ces algorithmes. Nous avons cité le « divide-and-conquer » et le « binary
search ». Pour calculer la complexité des algorithmes, il y’a des
théorèmes qui peuvent s’appliquer dans le domaine de la géométrie algorithmique.
21La complexité des algorithmes récursives
Géométrie algorithmique
Merci pour votre attention
22
La complexité des algorithmes récursivesGéométrie algorithmique
Bibliographie
[1]: Complexity of recursive algorithms, Computational Geometry, Vera Sacristan
[2]: Computational Geometry: from Theory to Applications (2013/14) - Luca Castelli Aleardi et Steve Oudot
[3]: Computational Geometry: Algorithms and Applications, Third Edition (March 2008), Mark de Berg, Otfried Cheong, Marc van Kreveld, Mark Overmars, published by Springer-Verlag
[4]: https://interstices.info/algorithme-geometrique
[5]: Les enveloppes convexes en géométrie algorithmique, Achraf Othman
[6]: Les enveloppes convexes en géométrie algorithmique, Achraf Othman
[7]: Computational Geometry:Convex Hulls
[8]: http://www.youtube.com/watch?v=NQMUQpmurFI
[9]: Master Theorem: Practice Problems and Solutions
[10]: Un joli algorithme géométrique et ses vilains problèmes numériques, Olivier Devillers, 2006
23La complexité des algorithmes récursives
Géométrie algorithmique