Distances depuis un sommet
Exercice · OCaml (option informatique), chapitre 15 — Parcours de graphes
Énoncé
Écrire distances adj depart et expliquer pourquoi il donne les plus courts chemins.
Corrigé
let distances adj depart =
let n = Array.length adj in
let dist = Array.make n (-1) in
let f = Queue.create () in
dist.(depart) <- 0;
Queue.push depart f;
while not (Queue.is_empty f) do
let s = Queue.pop f in
List.iter (fun v ->
if dist.(v) = -1 then begin dist.(v) <- dist.(s) + 1; Queue.push v f end
) adj.(s)
done;
dist
Le BFS traite les sommets par distance croissante : quand on atteint v pour la première fois, c'est par le plus court chemin, et dist.(v) = dist.(s) + 1. Les sommets inatteignables gardent -1.
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.