CM1 B Flashcards
Quels sont les 3 éléments qui caractérisent un réseau de contraintes ?
- Ensemble de variables
- Ensemble de domaines des variables (finis, ⊆ {Z})
- Ensemble de contraintes
Qu’est-ce qu’une contrainte ?
Une fonction booléenne portant sur des variables
Comment satisfaire une contrainte ?
Avec un tuple (un ensemble de valeurs) τ tel que C(τ) = 1
Qu’est-ce qu’une instanciation ?
Une affectation de valeurs à une partie des variables
Qu’est-ce qu’une instanciation valide ?
Une instanciation dans laquelle chaque valeur affectée à une variable appartient bien au domaine de cette dernière
Qu’est-ce qu’une instanciation localement cohérente ?
Une instanciation valide qui ne viole aucune contrainte dont toutes les variables de la portée ont une affectation
Qu’est-ce qu’une solution ?
Une instanciation localement cohérente qui a une affectation pour chacune des variables
Quelle est la classe de complexité du problème de la résolution de CSP ?
NP-Complet
Algorithme de Backtrack (entrée, sortie, algorithme)
- Entrée : problème N = (X, D, C), instanciation I
- Sortie : booléen
- BT(N, I) :
- Si |I| = |X|, renvoyer vrai
- Choisir xi une variable non-affectée (!∈ I)
- Pour vi ∈ Dom(xi)
- Si I ∪ {xi, vi} est localement cohérente :
- Si BT(N, I ∪ {xi, vi}), renvoyer vrai
- Si I ∪ {xi, vi} est localement cohérente :
- Renvoyer faux
Comment fonctionne l’algorithme du Backtrack ?
Tant que toutes les variables ne sont pas instanciées, l’instanciation est élargie avec une valeur pour une variable :
- Si elle est localement cohérente, on continue
- Sinon, on essaye une autre valeur et s’il n’y en a pas, on revient sur l’affectation précédente
Complexité (temporelle et spatiale) du backtrack
Soit n = |X|, m = |C|, d = maxi=1..n(D(Xi)),
- Temporelle : O(m×dn)
- Spatiale : linéaire
Défauts de l’algorithme de Backtrack
- Il redécouvre plusieurs fois les mêmes échecs
- Il est limité aux petits problèmes par sa complexité
Qu’est-ce qu’un tuple support ?
Un tuple de la contrainte c est support si toutes ses valeurs sont bien dans les domaines des variables concernées et s’il satisfait c
Qu’est-ce qu’une valeur viable ?
Une valeur d’un domaine qui est contenue dans au moins un tuple support de chaque contrainte qui porte sur la valeur à laquelle elle est associée
Qu’est-ce qu’un domaine arc-cohérent ?
Un domaine dont toutes les valeurs sont viables