orienté. (NB : l`algorithme est identique pour les graphes orientés

publicité
4
Parcours en largeur
L’algorithme ?? présente la procédure de parcours en largeur d’un graphe nonorienté. (NB : l’algorithme est identique pour les graphes orientés).
Procédure PL(G,s)
//G = (S, A)
begin
pour chaque x 2 S\{s} faire
Couleur[x] := blanc ; ⇧[x] := nil ; Dist[x] := 1 ;
Couleur[s] := gris; ⇧(s) := nil; Dist[s] := 0 ;
F := File vide
// File = structure FIFO
Ajouter(F, s)
tant que F 6= ; faire
x := ExtraireTête(F );
pour chaque (x, y) 2 A faire
si Couleur[y] = blanc alors
Couleur[y] := gris ;
Dist[y] := Dist[x] + 1 ;
⇧[y] := x ;
Ajouter(F, y) ;
Couleur[x] := noir
end
Algorithme 2 : algorithme de parcours en largeur
Discuter le codage de l’arbre de parcours sous la forme d’une table des prédécesseurs.
Idée générale. Étant donnés un graphe G et un sommet s, l’algorithme va parcourir
les sommets accessibles depuis s en commençant par ceux situés à la distance 1, puis ceux
situés à la distance 2, etc. De plus, l’algorithme va (1) calculer la distance de chaque sommet
à l’origine s, et (2) construire un arbre G⇧ = (S⇧ , A⇧ ) contenant les sommets accessibles
depuis s et tel que chaque chemin de s à u dans G⇧ soit un plus court chemin de G.
NB : ici la longueur d’un chemin est le nombre de transitions le long de ce chemin.
On va utiliser les trois couleurs (blanc, gris, noir) pour marquer les états. Le sens de ce
coloriage est le suivant :
— blanc : c’est la couleur des sommets non encore découverts (et c’est la couleur de
chaque sommet, excepté s, à l’initialisation) ;
— gris : c’est la couleur des sommets déjà découverts et dont les successeurs (immédiats)
n’ont pas encore été tous découverts ;
— noir : caractérise les sommets découverts dont tous les successeurs (immédiats) ont
aussi été découverts.
10
Téléchargement