2 Boîte englobante
Le but de ce problème est de concevoir un algorithme pour calculer la boîte englobante de certains polygones.
2.1 Tableaux montagne
Un tableau montagne est un tableau constitué de deux parties. Dans la première partie du tableau, les valeurs
sont rangées par ordre croissant. Dans la seconde partie, les valeurs sont rangées par ordre décroissant. À la
jonction des deux parties du tableau se trouve le maximum. Nous supposerons que le tableau ne peut pas
contenir plusieurs fois de suite la même valeur. Le tabeau suivant est un tableau montagne :
023561096431
Notez par contre que la partie croissante ou décroissante peut être vide, et qu’un tableau trié par ordre croissant
ou décroissant est donc également un tableau montagne :
0235
Votre but dans un premier temps sera de concevoir un algorithme pour déterminer le maximum d’un tableau
montagne. Considérons une case quelconque du tableau, mais pas une extrémité. La case précédente peut avoir
une valeur inférieure ou supérieure. De même pour la case suivante.
Question 9 – Quels sont les différents cas possibles ?
Question 10 – Comment se répartissent ces différents cas dans le tableau ?
Question 11 – En déduire un algorithme pour déterminer le maximum d’un tableau montagne.
Question 12 – Quelle est la complexité de cet algorithme dans le meilleur et le pire cas ?
Question 13 – Pouvez vous modifier votre algorithme pour les tableaux vallée (décroissant puis croissant) ?
Question 14 – Comment traiter le cas des tableaux contenant plusieurs fois de suite la même valeur ?
2.2 Polygone convexe
Un polygone est convexe si lorsque vous tracez un segment d’un point à un autre du polygone, le segment est
entièrement dans le polygone. Par exemple :
convexe convexe non convexe
Dans le cas non convexe, la ligne pointillée, correspond à un segment joignant deux points du polygone qui n’est
pas dans le polygone. Si cette notion de convexité vous gêne, considérez que tous les sommets du polygone sont
sur un cercle. Ce n’est pas équivalent à convexe, mais les résultats qui suivent seront les mêmes.
Pour le stockage en mémoire, nous considérerons que le polygone est enregistré dans deux tableaux contenant
respectivement les coordonnées x et y de ses sommets. L’ordre des sommets est déterminé en partant d’un
sommet quelconque et en faisant le tour du polygone. Deux sommets voisins dans le tableau sont donc voisins
sur le bord du polygone, et le premier et le dernier sommets du tableau sont également voisins sur le polygone.
Par exemple :
(0, 0) (0.5, 0)
(0.8, 0.5)
(0.6, 0.8)
(0.2, 0.9)
(-0.2, 0.4)
0.5 0.8 0.6 0.2 -0.2 0
x :
0 0.5 0.8 0.9 0.4 0
y :