Adloun

OCaml (option informatique) · Chapitre 16 · Application directe du cours

Longueur d'un chemin

Plus courts chemins : Dijkstra · niveau 1 (application)

Énoncé

Écrire longueur adj chemin : la somme des poids le long d'un chemin donné (liste de sommets), ou failwith si une arête manque.

Corrigé

let rec poids_arc adj u v =
  match adj.(u) with
  | [] -> failwith "arête absente"
  | (w, p) :: reste -> if w = v then p else poids_arc_liste reste v
and poids_arc_liste l v =
  match l with
  | [] -> failwith "arête absente"
  | (w, p) :: reste -> if w = v then p else poids_arc_liste reste v

let rec longueur adj chemin =
  match chemin with
  | [] | [_] -> 0
  | u :: (v :: _ as reste) -> poids_arc adj u v + longueur adj reste

On additionne le poids de chaque arête consécutive du chemin. Le motif u :: (v :: _ as reste) (chapitre 9) donne les deux premiers sommets et la queue.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre