suivant: Algorithme
monter: Programmation dynamique
précédent: Programmation dynamique
  Table des matières
On cherche à triangulariser des polygones de manière optimale. Pour cela on va
utiliser la méthode par programmation dynamique. On va donc chercher à établir
une formule de calcul sous forme d'une récurrence complète.
On cherche la taille optimale de la triangularisation, on peut donc déjà dire que
la formule de récurrence sera de la forme:
Les
restant à déterminer.
Préalablement à tout début de calcul, nous avons besoin de la valeur de toutes
les cordes qu'il est possible de réaliser dans le polygone considéré. A cette fin
nous allons remplir un tableau
, avec
le nombre de sommets du
polygone, tel que:
Ensuite, nous allons mettre en équation le problème.
Soit le sous-problème
de taille
débutant au sommet
. Selon
l'énoncé, la résolution de sous-problème de taille inférieure à trois ne demande
aucune action; donc on peut en déduire que:
Dans les autres cas, pour résoudre
, on va considérer les trois options
suivantes présentées dans l'énoncé:
-
-
![$ T_{i,t}=lgCorde[s_i][s_{i+t-1}]+lgCorde[s_{i+1}][s_{i+t-1}]+
lgCorde[s_i][s_{i+1}]+T_{i+1,t-1}$](img32.gif)
-
![$ T_{i,t}=lgCorde[s_i][s_{i+k}]+lgCorde[s_{i+k}][s_{i+t-1}]+T_{i,k+1}+
T_{i+k,t-k}$](img33.gif)
Figure 2:
Schéma du polygone avec deux cordes partant de
|
|
On voit bien que pour calculer
, on va avoir besoin du calcul de
et de
. De plus, les deux premières options sont des cas
particuliers de la troisième. Mais en prenant en compte le fait que l'on calcule
l'indice d'un sommet modulo le nombre de sommets du polygone.
Pour cela, on va faire varier l'indice
sur l'intervalle
. Mais deux
cas particuliers se dégagent:
: on considère une arête du polygone, donc
et
![$ lgCorde[s_i][s_{i+1}]=0 $](img41.gif)
: on considère encore une fois une arête du polygone,
donc
et
![$ lgCorde[s_i][s_{i+t-2}]=0 $](img44.gif)
On peut donc généraliser sous la forme:
suivant: Algorithme
monter: Programmation dynamique
précédent: Programmation dynamique
  Table des matières
Alexandre DAGAN
2000-07-07