Adloun

OCaml (option informatique) · Chapitre 17 · Exercice de TD

Nombre de modèles

Logique propositionnelle · niveau 2

Énoncé

Écrire nb_modeles f : le nombre de valuations qui satisfont f.

Corrigé

let nb_modeles f =
  let n = nb_variables f in
  let v = Array.make n false in
  let rec compte i =
    if i = n then (if evalue v f then 1 else 0)
    else begin
      v.(i) <- false;
      let a = compte (i + 1) in
      v.(i) <- true;
      a + compte (i + 1)
    end
  in
  compte 0

On parcourt l'arbre des valuations en additionnant les contributions (comme le comptage de sous-ensembles du chapitre 11), au lieu de s'arrêter à la première. Une tautologie a modèles, une contradiction .

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre