suivant: Arcs à coûts positifs,
monter: Les algorithmes de plus
précédent: Les algorithmes de plus
Lorsqu'un graphe ne comporte pas de circuit, les arcs traduisent une relation
d'ordre partiel sur le graphe. Ce qui veut dire que l'on peut numéroter les
sommets de
de telle manière que
. Une telle numérotation s'appelle un tri topologique sur
.
Le calcul d'un tri topologique (ou ordre topologique) sur un réseau
se fait par un algorithme de complexité maximale en
.
Dès lors qu'il existe un circuit sur le graphe, il devient impossible de
créer un tel ordre car tout sommet membre d'un circuit est l'un de ses
propres prédécesseurs.
L'algorithme suivant permet de déterminer un ordre topologique sur un graphe.
Le principe de cet algorithme est simple et repose sur l'élimination
progressive des arcs sortant de chaque sommet. Nous utilisons les variables
indiquant à chaque instant, combien d'arcs non encore biffés
du réseau entrent dans le sommet
. Initialement,
,
et la liste contient l'ensemble des
sommets qui n'ont pas de prédécesseurs et qui sont donc directement
numérotables. A chaque fois que l'on examine un sommet, on coupe les arcs
qui en sortent et on place dans la liste les sommets qui n'ont plus d'arc
entrant. Ainsi, on est sûr d'examiner tous les prédécesseurs d'un sommet
avant de le numéroter.
Une fois cet ordre topologique connu, le calcul des plus courts chemins est
très simple. En effet, supposons que l'on cherche à calculer
et que
l'on connaisse les plus courtes distances pour tous les sommets de rang
topologique inférieur à celui de
.
De par la définition de l'ordre topologique, tous les arcs arrivant en
proviennent de sommets de rang inférieur, c'est-à-dire de sommets pour
lesquels on connaît déjà les plus courtes distances (de par
l'hypothèse). Alors, pour connaître
(et, par la même
occasion, un plus court chemin joignant
à
), il suffit de considérer :
où
est le sommet prédécesseur de
de distance minimale par rapport à
.
On obtient alors l'algorithme suivant initialisé en
, seul sommet sans
prédécesseur par définition.
suivant: Arcs à coûts positifs,
monter: Les algorithmes de plus
précédent: Les algorithmes de plus
Bruno Garcia
2000-12-17