3
Théorème 2 (Principe d’optimalité)
Tout sous-chemin xi, … , xj d’un chemin optimal x1, …, xi, … , xj, … , xk de x1 à xk est un
chemin optimal de xi à xj
Nous retrouverons ce Principe dans un cadre plus général, celui de la Programmation
Dynamique
Le théorème suivant concrétise davantage les choses
Théorème 3
La suite d(1), d(2), … , d(n) représente les plus courtes distances de 1 à 2, … , n
respectivement si et seulement si d(1) = 0, d(y) ≤ d(x) + v(x, y)
∀
xy
∈
U et le graphe partiel des
PC2 de 1 aux autres sommets, G’ = (X, U’) où U’ =
{
xy
∈
U | d(y) = d(x) + v(x, y)
}
, admet 1
comme racine (c’est une arborescence si chaque PC2 est unique)
(3) Structures des données et des résultats
Répétons-le, quel que soit le problème, pour le résoudre effectivement, il faut toujours
savoir définir, d’une façon ou d’une autre, tant que c’est possible, quelles sont précisément ses
données (en gros d’où part-on ?) et quelles structures doivent avoir, ou souhaiterions nous, pour
les résultats (où va t’on ? que cherche t’on exactement ?), ceux-ci peuvent en effet à leur tour
faire l’objet de traitements ultérieurs. Cela participe de la modélisation du problème
Nous supposerons ici que le graphe G = (X, U, v) où X = {1, 2, … , n} est donné par sa
matrice d’adjacence M, de taille n.n, définie par M(i, j) = v(i, j) si et seulement si ij ∈ U,
sinon M(i, j) = ∞, pour simplifier on note ∞ pour + ∞, avec bien sûr M(i, i) = 0
(P1) consistera à chercher les PC2 du sommet 1 aux autres sommets
Pour le calcul des PC2 de 1 aux autres sommets il faut déterminer le tableau d(1),
d(2), … , d(n) des distances (d(i) = ∞ si un tel chemin n’existe pas) et le tableau p(1), p(2), …
, p(n) des prédécesseurs défini par : p(1) = 1 et p(i) = j ⇔ j est le prédécesseur de i sur un PC2
de 1 à i, s’il existe, 0 sinon. Nous aurons ainsi au plus un PC2 par sommet
Le tableau p permet, à la demande et s’il existe, de construire effectivement un PC2 de 1
à un sommet donné ainsi que l’arborescence des PC2
Pour le calcul des PC2 entre tous les couples de sommets il faut déterminer la matrice
D des distances, D(i, j) = longueur d’un PC2 de i à j s’il existe, ∞ sinon, bien sûr D(i, i) = 0, et
la matrice P des prédécesseurs, P(i, j) = prédécesseur immédiat de j sur un PC2 de i à j s’il
existe, 0 sinon. Là aussi il y aura au plus un PC2 pour chaque couple de sommets
Comme dans le cas précédent P permet de construire effectivement un PC2 entre tout
couple de sommets ainsi que le sous graphe des PC2, si nécessaire
Remarquons enfin que l’étude faite dans le cadre général des graphes orientés reste
bien sûr valable pour les graphes non orientés