CM1 B Flashcards

1
Q

Quels sont les 3 éléments qui caractérisent un réseau de contraintes ?

A
  • Ensemble de variables
  • Ensemble de domaines des variables (finis, ⊆ {Z})
  • Ensemble de contraintes
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qu’est-ce qu’une contrainte ?

A

Une fonction booléenne portant sur des variables

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Comment satisfaire une contrainte ?

A

Avec un tuple (un ensemble de valeurs) τ tel que C(τ) = 1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qu’est-ce qu’une instanciation ?

A

Une affectation de valeurs à une partie des variables

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Qu’est-ce qu’une instanciation valide ?

A

Une instanciation dans laquelle chaque valeur affectée à une variable appartient bien au domaine de cette dernière

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Qu’est-ce qu’une instanciation localement cohérente ?

A

Une instanciation valide qui ne viole aucune contrainte dont toutes les variables de la portée ont une affectation

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qu’est-ce qu’une solution ?

A

Une instanciation localement cohérente qui a une affectation pour chacune des variables

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Quelle est la classe de complexité du problème de la résolution de CSP ?

A

NP-Complet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Algorithme de Backtrack (entrée, sortie, algorithme)

A
  • 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
    • Renvoyer faux
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Comment fonctionne l’algorithme du Backtrack ?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Complexité (temporelle et spatiale) du backtrack

A

Soit n = |X|, m = |C|, d = maxi=1..n(D(Xi)),
- Temporelle : O(m×dn)
- Spatiale : linéaire

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Défauts de l’algorithme de Backtrack

A
  • Il redécouvre plusieurs fois les mêmes échecs
  • Il est limité aux petits problèmes par sa complexité
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Qu’est-ce qu’un tuple support ?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Qu’est-ce qu’une valeur viable ?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Qu’est-ce qu’un domaine arc-cohérent ?

A

Un domaine dont toutes les valeurs sont viables

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Comment obtenir la fermeture arc-cohérente d’un domaine ?

A

En supprimant au fur et à mesure toutes ses valeurs non-viables

17
Q

Quels liens existent entre l’arc-cohénce et la cohénce ?

A
  • Sol(X, D, C) = Sol(X, DAC, C)
  • Cohérent ⇒ Arc-cohérent
  • Arc-cohérent !⇒ Cohérent
18
Q

Algorithme AC3 (entrée, sortie, algorithme)

A
  • Entrée : Problème N = (X, D, C)
  • Sortie : booléen
  • Algorithme :
    • Q ← {(xi, c) | c ∈ C, xi ∈ portée(c)}
    • Tant que Q != ∅ :
      • Supprimer (xi, c) de Q
      • Si Revise(xi, c) :
        • Si D(xi) = ∅, renvoyer faux
        • Sinon, Q ← Q ∪ {(xj, c’) | c’ ∈ C, {xi, xj} ⊆ portée(c’), i != j}
    • Renvoyer vrai
19
Q

Algorithme Revise3 (entrée, sortie, algorithme)

A
  • Entrée : Variable xi, Contrainte cij
  • Sortie : booléen
  • Algorithme :
    • Change ← Faux
    • Pour chaque valeur vi de D(xi) :
      • vj ← first(D(xj))
      • Tant que vj != nil et ¬cij (vi, vj ) :
        • vj ← next(vj, D(xj))
      • Si vj = nil
        • D(xi) ← D(xi) \ {xi}
        • Change ← Vrai
    • Renvoyer Change
20
Q

Algorithme Revise3 (entrée, sortie, algorithme)

A
  • Entrée : Variable xi, Contrainte cij
  • Sortie : booléen
  • Algorithme :
    • Change ← Faux
    • Pour chaque valeur vi de D(xi) :
      • vj ← first(D(xj))
      • Tant que vj != nil et ¬cij (vi, vj ) :
        • vj ← next(vj, D(xj))
      • Si vj = nil
        • D(xi) ← D(xi) \ {xi}
        • Change ← Vrai
    • Renvoyer Change
21
Q

Quels sont les défauts d’AC3 ?

A

Il refait des calculs qu’il a déjà faitn il n’est donc pas optimal

22
Q

Qu’est-ce qui change dans l’algorithme d’AC2001 par rapport à celui d’AC3 ?

A

AC2001 apporte la notion de “last” qui enregistre le dernier tuple support vérifié pour chaque couple (xi, c), de façon à reprendre à cet endroit là pour tester seulement les couples qui n’ont jamais été testé

23
Q

Algorithme Revise2001 (entrée, sortie, algorithme)

A
  • Entrée : Variable xi, Contrainte cij
  • Sortie : booléen
  • Algorithme :
    • Change ← Faux
    • Pour chaque valeur vi de D(xi) telle que Last(xi, vi, xj) !∈ D(xj) :
      • vj ← next(Last(xi, vi, xj), D(xj))
      • Tant que vj != nil et ¬cij (vi, vj ) :
        • vj ← next(vj, D(xj))
      • Si vj != nil
        • Last(xi, vi, xj) !∈ D(xj) ← vj
      • Sinon :
        • D(xi) ← D(xi) - {xi}
        • Change ← Vrai
    • Renvoyer Change
24
Q

Complexité (temporelle et spatiale) d’AC3

A

Soit n = |X|, m = |C|, d = maxi=1..n(D(Xi)),
- Temporelle : O(m×d3) pour des contraintes binaires
- Spatiale : O(m)

25
Q

Complexité (temporelle et spatiale) d’AC2001

A

Soit n = |X|, m = |C|, d = maxi=1..n(D(Xi)),
- Temporelle : O(m×d2) pour des contraintes binaires
- Spatiale : O(m×d)

26
Q

Qu’est-ce qu’un “removal event” ?

A

Une fonction qui réduit les domaines d’une certaine façon

27
Q

Quels sont les principaux “removal event ?

A
  • remValue qui supprime une valeur
  • incMin qui supprime la plus petite valeur
  • decMax qui supprime la plus grande valeur
  • instantiate qui réduit le domaine à un singleton
28
Q

Quand est-ce qu’un réseau est arc-cohérent ?

A

Quand pour tout ensemble de variables de taille k-1, pour toute instanciation localement consistante sur cet ensemble, toute variable n’y appartenant pas a au moins une valeur de son domaine qui permet d’étendre l’instanciation sans perdre la cohénrence

29
Q

Comment la 2-cohérence (2C) et l’arc-cohérence (AC) sont elles comparables ?

A

Pour les réseaux binaires :
- Si le réseau est normalisé, 2C = AC
- Sinon, 2C est plus fort que AC
Pour les réseaux non-binaires :
- Si le réseau est normalisé, 2C est moins fort que AC
- Sinon, 2C et AC sont incomparables

30
Q

Qu’est-ce qu’une réseau fortement k-cohérent ?

A

Un réseau j-cohérent pour j=1..k

31
Q

Complexité (temporelle et spatiale) du calcul de la k-cohérence forte

A

Soit n = |X|, m = |C|, d = maxi=1..n(D(Xi)),
- Temporelle : O(nk+1×dk+1)
- Spatiale : O(nk-1×dk-1)
ou
- Temporelle : O(nk×dk)
- Spatiale : O(nk×dk)

32
Q

Qu’est-ce qu’une instanciation globalement cohérente ?

A

Une instanciation qui peut être étendue à une solution

33
Q

Qu’est-ce qu’un réseau globalement cohérent ?

A

Un réseau dans lequel toute instanciation localement cohérente est globalement cohérente

34
Q

Quel lien peut-on établir entre la cohérence globale et le Backtrack ?

A

Il n’y a jamais besoin de backtracker dans un réseau globalement cohérent

35
Q

Quel lien peut-on établir entre la cohérence globale et la k-cohérence forte ?

A

Un réseau est globalement cohérent si et seulement s’il est fortement n-cohérent avec n = |X|