Vous êtes sur la page 1sur 2

Université d’Alger 1 Benyoucef Benkhedda 2ème année master ISII

Département de Mathématiques et Informatique Module : Bio-inspired computing

Série n°1: Heuristiques et Métaheuristiques

Exercice n° 1 :
Le problème de satisfiabilité (SAT) consiste à déterminer les assignations des variables
propositionnelles qui rendent une formule de logique propositionnelle satisfiable (vraie).
Considérons l’ instance I du problème SAT définie comme suit :

• Donnée:
▪ X = {x1, x2, x3} un ensemble de variables booléennes.
▪ C = {c1, c2, c3, c4} un ensemble de clauses où chaque ci est une disjonction de
littéraux.
▪ Un littéral est une variable booléenne avec ou sans le connecteur de négation.

c =x +𝑥
̅̅̅2 + x
1 1 3
c = x +x
2 2 3
c = ̅̅̅
𝑥1 + ̅̅̅
𝑥2 + x
3 3
c = ̅̅̅
𝑥1 + ̅̅̅
𝑥3
4

• Question: existe-t-il une instanciation de X, telle que la conjonction des clauses de C


est vraie ?
1. Dessiner l’arbre de recherche associé à cette instance.
2. Ecrire l’algorithme de recherche en profondeur d’abord (DFS) pour résoudre le
problème SAT.
3. Dérouler l’algorithme DFS sur l’instance I.
4. Ecrire l’algorithme de recherche en largeur d’abord (BFS) pour résoudre le problème
SAT.
5. Dérouler l’algorithme BFS pour l’instance I.

Exercice n° 2 :
Considérons l’instance I du problème SAT donnée dans l’exercice précédent.

1. Proposer une heuristique pour guider la recherche d’une solution au problème SAT.
2. Ecrire l’algorithme A* pour résoudre le problème SAT en utilisant l’heuristique
proposée dans la question précédente.
3. Tracer l’arbre de recherche généré par A* et dérouler l’algorithme sur l’instance I.

Page 1 sur 2
Exercice n° 3 :
Considérons l’instance I du problème SAT donnée dans l’exercice 1 ainsi qu’une solution de
départ générée aléatoirement s0 = ( 1 0 0 ).
1. Ecrire l’algorithme de la Recherche Locale (Local Search) qui permet de résoudre le
problème SAT.
a. Définir clairement les opérateurs à utiliser.
2. Ecrire l’algorithme de la Recherche Tabou (Tabu Search) pour de résoudre le problème
SAT.
a. Définir clairement les opérateurs à utiliser.

Vous aimerez peut-être aussi