Parcours en largeur
Exercice · OCaml (option informatique), chapitre 15 — Parcours de graphes
Énoncé
Écrire parcours_largeur adj depart (avec une file).
Corrigé
let parcours_largeur adj depart =
let n = Array.length adj in
let vu = Array.make n false in
let f = Queue.create () in
let ordre = ref [] in
vu.(depart) <- true;
Queue.push depart f;
while not (Queue.is_empty f) do
let s = Queue.pop f in
ordre := s :: !ordre;
List.iter (fun v ->
if not vu.(v) then begin vu.(v) <- true; Queue.push v f end
) adj.(s)
done;
!ordre
La file impose l'ordre « premier découvert, premier traité » : les sommets sortent par distance croissante au départ.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.