MIT 1re ann´ee - 2011/12 Module Logique et Calculabilit´e
Test de primalit´e Les formules de la logique propositionnelle peuvent ˆetre mises en cor-
respondance avec les circuits digitaux, et peuvent donc encoder des fonctions arithm´etiques
complexes. L’algorithme de test de primalit´e d’un naturel donn´e peut ˆetre encod´e par un
tel circuit. La fonction prime de la librairie g´en`ere la formule associ´ee. La formule prime n
est une tautologie si et seulement si nest premier.
Nombres de Ramsey Le nombre de Ramsey Rs,t est d´efini comme le nombre d’invit´es
minimum qu’il faut inviter `a une fˆete pour qu’au moins spersonnes se connaissent ou qu’au
moins tne se connaissent pas. Le probl`eme peut se traduire en terme de graphes : c’est le
nombre minimum de sommets qu’un graphe simple non orient´e doit comporter pour qu’il
contienne une s-clique (sous-graphe complet `a ssommets) ou un t-stable (sous-graphe `a t
sommets sans arˆete). Les nombres de Ramsey ne sont pas tous connus. Dans la librairie,
la fonction ramsey vous permet de construire des tautologies : (ramsey s t n) est une
tautologie si et seulement si Rs,t ≤n. La formule construit tous les graphes `a nsommets
et v´erifie qu’ils satisfont les contraintes sur les arˆetes. Google est votre ami pour trouver
les valeurs de set tpour lesquels on connaˆıt la valeur ou un encadrement de Rs,t.
3 L’algorithme DP
La version initiale de l’algorithme est propos´ee en 1960 par Davis et Putnam (algorithme
DP), et une am´elioration est apport´ee en 1962 par Davis, Logemann et Loveland (algo-
rithme DLL ou DPLL, voir Section 4). L’id´ee de base de DP est d’appliquer des r`egles
de transformations sur la formule d’entr´ee Fen CNF, qui pr´eservent sa satisfiabilit´e et sa
forme clausale. Les trois r`egles sont les suivantes :
UP (Unit propagation) Si Fcontient une clause unitaire (Ci={l}), toutes les clauses
contenant le litt´eral lpeuvent ˆetre supprim´ees et le litt´eral compl´ement de lpeut ˆetre
supprim´e de chaque clause le contenant.
PL (Pure literal) Si un litt´eral ln’apparaˆıt que positivement (ou n´egativement) dans F,
toutes les clauses le contenant peuvent ˆetre supprim´ees.
R(Resolution) R´esolution entre deux clauses, par coupure sur un litt´eral l(cf. cours).
Question 4 Montrez que les r`egles UP et PL pr´eservent la satisfiabilit´e de la formule (la
preuve pour R a d´ej`a ´et´e faite en cours).
L’algorithme consiste `a appliquer les r`egles UP et PL tant que possible, avant d’appliquer
la r`egle R, sur un litt´eral l, en produisant toutes les r´esolvantes possibles (approche par
saturation). On d´ecide ensuite r´ecursivement de la satisfiabilit´e de ce nouvel ensemble de
clauses. Appliquer R n´ecessite de choisir un litt´eral sur lequel r´esoudre. Un crit`ere de choix
possible est de minimiser l’augmentation du nombre de clauses r´esultantes. L’algorithme
s’arrˆete d`es que la formule est vide ou qu’elle contient la clause vide.
Impl´ementation 1 (Algorithme DP)
Impl´ementez l’algorithme DP. Vous veillerez `a la d´efinition de fonctions auxiliaires bien
choisies pour ne pas alourdir la fonction principale. Par exemple, vous ´ecrirez une fonction
par r`egle de transformation de formule.
– Vous ´ecrirez une fonction dp rendant un r´esultat bool´een qui d´etermine la satisfiabilit´e
d’une formule sous forme CNF.
3