Adloun

Chemins de longueur 2

Exercice · OCaml (option informatique), chapitre 14 — Graphes : modélisation et représentations

Énoncé

Écrire chemins_deux m renvoyant une matrice r telle que r.(i).(j) soit le nombre de chemins de longueur exactement de i à j.

Corrigé

let chemins_deux m =
  let n = Array.length m in
  let r = Array.make_matrix n n 0 in
  for i = 0 to n - 1 do
    for j = 0 to n - 1 do
      let c = ref 0 in
      for k = 0 to n - 1 do
        if m.(i).(k) && m.(k).(j) then c := !c + 1
      done;
      r.(i).(j) <- !c
    done
  done;
  r

Un chemin de longueur de i à j passe par un sommet intermédiaire k adjacent aux deux : on compte ces k. C'est exactement le carré de la matrice d'adjacence () : plus généralement, (M^p).(i).(j) compte les chemins de longueur p. Coût (un produit matriciel).

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.