Algorithme du plus court chemin

Disponible uniquement sur Etudier
  • Pages : 17 (4077 mots )
  • Téléchargement(s) : 0
  • Publié le : 29 novembre 2011
Lire le document complet
Aperçu du document
Note
La règle (appelée « principe d’optimalité ») commune aux algorithmes de recherche de plus courts chemins
peut s’énoncer ainsi : un plus court chemin [S1, Sn] entre deux sommets S1 et Sn d’un graphe est constitué
de plus courts chemins reliant deux sommets du chemin [S1, Sn] ; on la démontre par l’absurde sans
problème.
La recherche du plus court chemin passe donc par la recherche desplus courts chemins reliant S1 à tous les
sommets du graphe susceptibles de se trouver sur le trajet ; reste à déterminer dans quel ordre on liste les
sommets intermédiaires : c’est principalement là que résident les différences d’un algorithme à l’autre.

un graphe est un ensemble de noeuds pouvant être
reliés deux à deux par des arêtes. Un graphe pondéré
est un graphe où une valeur numériqueappellée poids
est associée à chaque arête.
Un arbre couvrant d’un graphe est un ensemble
d’arêtes de ce graphe tel que, si M et N sont deux
noeuds du graphe, alors il existe exactement un chemin
constitué d’arêtes de l’arbre joignant M à N.
On appelle poids de l’arbre la somme des poids des
arêtes qu’il contient. Un arbre couvrant minimal est un
arbre couvrant dont le poids est minimalparmi tous
les arbres couvrants d’un graphe donné.
1-Algorithme de DIJKSTRA-MOORE
(pour les graphes pondérés par des poids positifs)
L'algorithme de Dijkstra permet de trouver le chemin le plus court entre 2 points d'un graphe. Pour ce faire, il
détermine le chemin le plus court entre 1 point et n'importe quel autre point du graphe, jusqu'à ce qu'il tombe sur le
point d'arrivée recherché (ous'il n'y a plus de point à visiter: dans ce cas, il n'existe pas de chemin entre les points
considérés).
L'algorithme de Dijkstra ne s'applique que dans le cas d'un graphe orienté et pour lequel le poids des arcs est
non négatif (ce qui constitue la majorité des graphes).

Il effectue une recherche en largeur sur le graphe.

Présentant de grands avantages de rapidité, cet algorithme nepermet que la recherche des chemins
de longueur minimale et pour des graphes pondérés par des poids positifs.
Donnons cet algorithme, autorisant la recherche d’un chemin minimal entre deux sommets I
(initial) et F (final). Il se décompose en quatre phases, comme suit :

Phase 1 : mise en place
- On désigne par Σ l’ensemble dans lequel on met les sommets au fur et à mesure de leur
marquagedéfinitif ;
- A chaque sommet S, on associe le couple (dist(S), p(S)) où dist(S) désigne la distance
(provisoire ou définitive) de I à S, et p(S) le prédécesseur de S ;
Phase 2 : initialisation
- Attribuer au sommet I, le couple (0, I) ;
- Attribuer à chaque sommet adjacent à I, le couple (poids de l’arc le reliant à I, I) ;
- Attribuer aux autres sommets, le couple (+ ∞, ?) ;
Phase 3 :fonctionnement
Tant que tous les sommets ne sont pas dans Σ, ou que le sommet F n’est pas affecté de la plus
petite distance provisoire :
- Choisir parmi les sommets non placés dans Σ, un dont la distance provisoire est minimale :
appelons-le S ;
- Mettre S dans Σ ;
- Pour chacun des sommets i Y qui lui sont adjacents et qui ne sont pas dans Σ :
• Calculer s = dist(S) + poids de l’arc [S, i Y ] ;
•Si s est inférieur à la distance provisoire de i Y , attribuer à i Y le couple (s, S);
(ainsi, dist( i Y ) := min{dist(S) + poids de l’arc [S, i Y ] , dist( i Y )})
Phase 4 : conclusion
- La longueur du plus court chemin de I à F est alors dist(F) ;
- La chaîne de poids minimum se lit « à l’envers », de F à chacun de ses prédécesseurs
successifs.

Le principe est donc le suivant : onaffecte provisoirement le poids maximal (+ ∞) à tous les
sommets, sauf pour le sommet initial de poids 0 et ses successeurs (recevant le poids de l’arc les
reliant à I) ; tant que c’est possible, on diminue les poids provisoires qui deviennent définitifs (un
sommet affecté d’un poids définitif est dit marqué) lorsque leur diminution devient impossible.
Remarque : il se peut que l’algorithme se...
tracking img