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})