CM3 B Flashcards
Qu’est-ce qu’une contrainte globale ?
Une classe de contraintes définie par une fonction booléenne qui prend un nombre non-borné de variables
À quoi servent les contraintes globales ?
À exprimer de façon compacte certaines propriétés d’un problème
Peut-on utiliser l’algorithme classique d’arc-cohérence sur un réseau avec des contraintes globables ?
Oui, mais leur complexité est O(dn) avec n = |X| et d = max(|D(xi)|
Comment faire de la propagation sur les contraintes globables de façon efficace ?
En utilisant des propagateurs ad hoc spécifiques aux contraintes
Quel problème pose l’idée d’utiliser des propagateurs ad hoc ?
Il y a plus de 400 contraintes globales, donc on ne peut pas faire un propagateur pour chacune d’elles
Pourquoi faire de la décomposition sur les contraintes globales ?
Pour éviter de faire un propagateur ad hoc par contrainte
Qu’est-ce qu’une décomposition simple ?
Soit G une contrainte globable et c(X) = (X, DX, {c}) une instance de celle-ci, la décomposition simple de G est δG(c) = (X, DX, C) où C = {c1, c2, …} et tout ci de C porte sur un nombre limité de variables, et sol(c) = sol(δG(c))
Qu’est-ce qu’une décomposition ?
Soit G une contrainte globable et c(X) = (X, DX, {c}) une instance de celle-ci, la décomposition de G est δG(c) = (X ∪ Y, DX + DY, C) où
- C = {c1, c2, …} et tout ci de C porte sur un nombre limité de variables
- sol(c) = sol(δG(c))[X]
- |Y| + |DY| est molynomial en |X| + |DX|
Quand est-ce qu’une décomposition préserve l’arc-cohérence ?
δG préserve l’arc-cohérence si et seulement si pour toute instance c(X) = (X, DX, {c}) de G et tout domaine D’X ⊆ DX, D’AC(c) = D’AC(δG(c))[X]
Qu’est-ce qu’une contrainte globable AC-décomposable ?
Une contrainte globable qui a une décomposition qui préserve l’arc-cohérence
Exemple de contrainte AC-décomposable
At-Least-p-v(X1, …, Xn)
Exemple de contrainte non AC-décomposable
AllDiff(X1, …, Xn)
Définition du problème checkerG
Soit G une contrainte globale, alors :
- Instance : (X(c), D, {c}) où c est une instance de G
- Question : Est-ce qu’il existe un tuple τ ∈ DX(c) tel que c(τ) ?
Lien entre le problème checkerG et l’arc-cohérence
Si checkerG est NPC, l’arc-cohérence est NP-dure pour G
Lien entre le problème checkerG et l’AC-décomposabilité
Si checkerG est NPC, il n’existe pas d’AC-décomposition pour G
Que faire pour les contraines non AC-décomposables ?
On peut leur appliquer une cohénrence plus faible : la bound-cohérence
Comment obtenir la définition de la boun-cohérence à partir de celle de l’arc-cohérence ?
En relaxant la définition d’un tuple support : dans la BC, un tuple support est τ tel que τ ∈ c(X) ∧ ∀ xi ∈ X, min(xi) ≤ τ[xi] ≤ max(xi)
Qu’est-ce qu’un graphe d’incidence ?
Pour (X, D, C) un réseau, le graphe d’incidence est GN = (X ∪ C, E) avec E = {(x, c) | c ∈ C, x ∈ portée(c)}
Qu’est-ce qu’un réseau Berge-acyclique ?
Un réseau dont le graphe d’incidence est acyclique
Que sait-on d’un réseau si celui-ci est Berge-acyclique ?
Toutes les valeurs de son AC-décomposition appartiennent à une solution
Lien entre l’AC-décomposabilité et la Berge-acyclicité
Si une décomposition d’une contrainte globable est Berge-acyclique, alors c’est une AC-décomposition
Lien entre l’AC-décomposabilité et l’existence d’un circuit monotone booléen
S’il n’existe pas de circuit booléen monotone de taille polynomiale pour une fonction booléenne G, alors il n’existe aucune décomposition en formule normale clausifiée qui calcule l’AC et il n’existe aucune AC-décomposition pour G
Qu’est-ce qu’un circuit booléen monotone ?
Un circuit booléen qui n’utilise que des opérateurs ∨et ∧
Quels sont les trois cas possibles pour les contraintes globables vis-à-vis de l’AC-décomposition ?
- L’AC peut être NP-dure sur la contrainte, il faut alors appliquer une cohérence plus faible (BC)
- L’AC peut être AC-décomposable, il faut alors décomposer
- Si la contrainte n’est dans aucun des deux cas (il est polynomial d’appliquer AC, mais il n’y a pas d’AC-décomposition), il faut construire un algorithme ad hoc
Comment appliquer l’AC sur AllDifferent (NPC) ?
- Tracer le graphe des valeurs avec une source qui domine les variables et un puits qui domine les valeurs
- Calculer le flow max
- Calculer le graphe résiduel
- Calculer les composantes fortement connexes des deux graphes superposés
- Supprimer les arêtes isolées et les valeurs associées dans les domaines
Quand est-ce que les solveurs SAT ne peuvent pas simuler les solveurs CP ?
Lorsqu’il y a des contraintes non-décomposables