Adloun

Ce que coûte une modélisation : le pigeonnier

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 20 — Logique propositionnelle

Énoncé

On veut exprimer en fnc que pigeons se logent dans cases, sans que deux pigeons partagent une case.

Corrigé

1. Le codage. Une variable par couple : « le pigeon est dans la case ».

On remarquera qu'on n'écrit pas « chaque pigeon est dans au plus une case » : la question ne l'exige pas, et une clause qu'on n'écrit pas est une clause que le solveur n'explore pas. Un modèle pourra loger un pigeon dans deux cases — il suffira d'en garder une.

2. Le compte. variables, et

Vérifié : donne ; donne ; donne clauses sur variables.

3. Elle est insatisfiable — c'est le principe des tiroirs : cinq pigeons, quatre cases, deux au moins se rencontrent. Mesuré :

/ variablesclausesvaluations appels de Quine
/
/
/

Le rapport est le message : appels au lieu d'un million de valuations, sur la même instance et sans changer d'algorithme. La simplification décrite au problème 20.2 coupe les branches dès qu'une clause devient vide — et ici, elle le devient vite.

L'avertissement qui va avec. Le pigeonnier est aussi l'exemple classique de ce que aucun solveur du commerce ne sait faire : la croissance reste exponentielle en , parce que toute preuve d'insatisfiabilité par résolution doit, pour cette famille, avoir une taille exponentielle. Modéliser en sat ne rend rien facile : cela rend seulement le problème exprimable.

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.