4 Parcours en largeur
L’algorithme ?? pr´esente la proc´edure de parcours en largeur d’un graphe non-
orient´e. (NB : l’algorithme est identique pour les graphes orient´es).
Proc´edure PL(G,s)
//G=(S, A)
begin
pour chaque x2S\{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 F6=;faire
x:= ExtraireTˆete(F);
pour chaque (x, y)2Afaire
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´ed´ecesseurs.
Id´ee g´en´erale. ´
Etant donn´es un graphe Get un sommet s, l’algorithme va parcourir
les sommets accessibles depuis sen commen¸cant par ceux situ´es `a la distance 1, puis ceux
situ´es `a la distance 2, etc. De plus, l’algorithme va (1) calculer la distance de chaque sommet
`a l’origine s, et (2) construire un arbre G⇧=(S⇧,A
⇧)contenantlessommetsaccessibles
depuis set tel que chaque chemin de s`a udans 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)pourmarquerles´etats.Lesensdece
coloriage est le suivant :
—blanc : c’est la couleur des sommets non encore d´ecouverts (et c’est la couleur de
chaque sommet, except´e s, `a l’initialisation) ;
—gris : c’est la couleur des sommets d´ej`a d´ecouverts et dont les successeurs (imm´ediats)
n’ont pas encore ´et´e tous d´ecouverts ;
—noir : caract´erise les sommets d´ecouverts dont tous les successeurs (imm´ediats) ont
aussi ´et´e d´ecouverts.
10