# CSP ## Introduction - Un CSP (Constraint Satisfaction Problem) consiste à trouver une affectation de valeurs aux variables qui satisfait toutes les contraintes. - Parfait pour modéliser des problèmes comme les N dames, emplois du temps, etc. ## Définition d'un CSP - Notation : P = (X, D, C) - X : Variables (ex. X1, X2, ...) - D : Domaines, ensemble des valeurs possibles pour chaque variable. - C : Contraintes, relations qui doivent être respectées entre les variables. ## Types de Contraintes - **Unaire :** Concerne une seule variable. - **Binaire :** Concerne deux variables (ex. X ≠ Y). - **N-aire :** Concerne n variables (ex. allDifferent pour un ensemble de variables). ## Méthodes de Résolution ### Backtracking (BT) - Procédure récursive qui instancie les variables une par une. - À chaque étape, on vérifie la consistance de l'instanciation. - Revenir en arrière dès qu'une contrainte est violée. ### Arc Consistency (AC) - Filtre les domaines en éliminant les valeurs qui ne peuvent aboutir à une solution. - Algorithmes AC3, AC4, etc., permettent de réduire l'espace de recherche. - Astuce : Appliquer AC avant le BT pour optimiser. ## Pseudo-code Backtracking ``` BT(V, A): Si V est vide, alors A est une solution. Sinon: Choisir xi dans V. Pour chaque valeur v dans D(xi): Si A ∪ {xi = v} est consistante: BT(V - {xi}, A ∪ {xi = v}) ```