HAL Id: lirmm-00830411
https://hal-lirmm.ccsd.cnrs.fr/lirmm-00830411
Submitted on 10 Oct 2019
HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub- lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.
Cohérence d’arc virtuelle dynamique
Thomas Schiex, Christian Bessière, Thi Hông Hiêp Nguyên
To cite this version:
Thomas Schiex, Christian Bessière, Thi Hông Hiêp Nguyên. Cohérence d’arc virtuelle dynamique.
9èmes Journées Francophones de Programmation par Contraintes (JFPC 2013), Jun 2013, Aix-en-
Provence, France. pp.249-258. �lirmm-00830411�
Actes JFPC 2013
Coh´ erence d’arc virtuelle dynamique
Hiep Nguyen 1 Christian Bessiere 2 Thomas Schiex 1
1 Unit´ e de Biom´ etrie et Intelligence Artificielle, INRA, Toulouse, France
2 CNRS, Universit´ e de Montpellier, France
{hnguyen,tschiex}@toulouse.inra.fr bessiere@lirmm.fr
R´ esum´ e
La coh´ erence d’arc virtuelle (VAC) est une coh´ erence r´ ecente pour les r´ eseaux de fonctions de coˆ ut (ou r´ eseaux de contraintes pond´ er´ ees). VAC exploite une relation simple mais puissante avec les r´ eseaux de contraintes classiques. VAC a permis de clore des probl` emes d’af- fectation de fr´ equences difficiles, et est capable de r´ e- soudre directement les r´ eseaux de fonctions de coˆ ut sous- modulaires. L’algorithme pour ´ etablir VAC est un algo- rithme it´ eratif qui r´ esout une s´ equence de r´ eseaux de contraintes classiques. Dans cet article, nous montrons que les techniques utilis´ ees dans les algorithmes de coh´ e- rence d’arc dynamique peuvent ˆ etre inject´ ees dans l’al- gorithme it´ eratif de coh´ erence d’arc virtuelle. Cette in- t´ egration donne une acc´ el´ eration importante.
Abstract
Virtual Arc Consistency (VAC) is a recent local consistency for processing Cost Function Networks (or Weighted Constraint Networks) that exploits a simple but powerful connection with classical Constraint Net- works. It has allowed to close hard frequency assignment benchmarks and is capable of directly solving networks of submodular functions. The algorithm enforcing VAC is an iterative algorithm that solves a sequence of clas- sical Constraint Networks. In this work, we show that Dynamic Arc Consistency algorithms can be suitably in- jected in the virtual arc consistency iterative algorithm, providing noticeable speedups.
1 Introduction
L’analyse des mod` eles graphiques, et en particulier des r´ eseaux de contraintes, est un probl` eme impor- tant en intelligence artificielle. L’optimisation du coˆ ut combin´ e de fonctions de coˆ ut locales, probl` eme central dans le cadre des CSP valu´ es [11], permet de capturer des probl` emes vari´ es, tels que MaxSAT pond´ er´ e, CSP pond´ er´ e ou le probl` eme de recherche d’une explication de probabilit´ e maximum dans les mod` eles graphiques
stochastiques (r´ eseaux bay´ esiens, champs al´ eatoires de Markov). Elle a des applications en allocation de res- sources, ench` eres combinatoires, bioinformatique, etc.
Les approches de programmation dynamique, ba- s´ ees sur l’´ elimination de variables ou sur les arbres de jonction, ont ´ et´ e largement utilis´ ees pour r´ esoudre de tels probl` emes. Cependant, elles sont intrins` equement limit´ ees par leur complexit´ e exponentielle en espace et en temps dans la largeur d’arbre (treewidth) des pro- bl` emes trait´ es. Au contraire, la recherche arborescente en profondeur d’abord par “Branch and Bound” (s´ e- paration et ´ evaluation) permet de conserver une com- plexit´ e en espace raisonnable. Elle n´ ecessite cependant de bons minorants (forts et peu coˆ uteux) pour ˆ etre ef- ficace.
Ces derni` eres ann´ ees, des minorants de qualit´ e crois- sante ont ´ et´ e d´ efinis en appliquant des coh´ erences locales dans des R´ eseaux de Fonctions de Coˆ ut (ou CFN pour “Cost Function Networks”). Ces coh´ erences sont ´ etablies en appliquant it´ erativement des op´ e- rations appel´ ees Transformations Pr´ eservant l’Equi- valence (EPT, Equivalence Preserving Transforma- tions, [7]) qui ´ etendent les op´ erations de coh´ erence lo- cale usuelles utilis´ ees dans les CSP classiques. Les EPT d´ eplacent des coˆ uts entre des fonctions d’arit´ e diff´ e- rente tout en pr´ eservant l’´ equivalence du probl` eme.
En d´ epla¸ cant finalement des coˆ uts vers une fonction d’arit´ e nulle, les EPT sont capables de fournir un mi- norant du coˆ ut optimum qui peut ˆ etre maintenu de mani` ere incr´ ementale pendant la recherche arbores- cente.
Les coh´ erences locales traditionnelles des CFN telles qu’AC*, DAC*, FDAC* ou EDAC* [10] appliquent les EPT dans un ordre arbitraire. Par contre, la Coh´ e- rence d’Arc Virtuelle (VAC pour Virtual Arc Consis- tency [5, 6]) planifie une s´ equence d’EPT ` a appliquer.
Elle le fait en se basant sur le r´ esultat de l’´ etablisse-
ment de la coh´ erence d’arc classique dans un r´ eseau
de contraintes classique qui interdit toutes les com- binaisons de valeurs de coˆ ut non nul. VAC est non seulement plus fort que ces coh´ erences locales mais est capable de r´ esoudre les r´ eseaux form´ es de fonctions de coˆ ut sous-modulaires. Une it´ eration de VAC peut ˆ etre appliqu´ ee via un algorithme polynomial d’ordre faible et VAC a permis de clore des probl` emes d’affectation de fr´ equences difficiles [5]. Cependant, il est souvent trop couteux pour ˆ etre utilis´ e de fa¸con g´ en´ erale.
Dans cet article, l’efficacit´ e de VAC est am´ elior´ ee en exploitant son comportement it´ eratif. Chaque it´ e- ration de VAC demande d’´ etablir la coh´ erence d’arc classique dans la version durcie du r´ eseau. N´ eanmoins, chacun de ces r´ eseaux est juste le r´ esultat des modi- fications incr´ ementales effectu´ ees par les EPT appli- qu´ ees dans l’it´ eration pr´ ec´ edente. Cette situation, o` u la coh´ erence d’arc est ´ etablie it´ erativement dans les versions modifi´ ees de mani` ere incr´ ementale d’un r´ e- seau de contraintes, a ´ et´ e d´ ej` a consid´ er´ ee dans les al- gorithmes de Coh´ erence d’Arc Dynamique [1, 3] pour les CSP dynamiques [8].
En pratique, nous observons que l’utilisation de la coh´ erence d’arc dynamique dans VAC acc´ el` ere la re- cherche pour de nombreux probl` emes. Ceci est peut- ˆ etre l’une des premi` eres applications r´ eelles des algo- rithmes de Coh´ erence d’Arc Dynamique.
2 Pr´ eliminaires
2.1 R´ eseaux de Fonctions de Coˆ ut
Un r´ eseau de fonctions de coˆ ut, ou CSP pond´ er´ e, est quadruplet (X, D, W, m) o` u X est un ensemble de n variables. Chaque variable i ∈ X a un domaine D i ∈ D d’au plus d valeurs. ´ Etant donn´ e un sous-ensemble de variables S ⊆ X , on note `(S) l’ensemble des n-uplets d´ efinis sur S. W est un ensemble de e fonctions de coˆ ut. Chaque fonction de coˆ ut w S ∈ W est d´ efinie sur un ensemble de variables S, appel´ e sa port´ ee, et sup- pos´ e diff´ erent pour chaque fonction de coˆ ut. Une fonc- tion de coˆ ut w S assigne un coˆ ut ` a chaque affectation de variables dans S, c’est ` a dire w S : `(S) → [0..m]
o` u m ∈ {1, ..., +∞}. Le coˆ ut m repr´ esente un coˆ ut in- tol´ erable, associ´ e ` a une valeur ou un n-uplet interdit.
Les coˆ uts sont combin´ es par l’addition born´ ee ⊕, d´ e- finie par a ⊕ b = min(a + b, m). Un coˆ ut b peut ˆ etre soustrait d’un coˆ ut plus grand a en utilisant la sous- traction d´ efinie par : a b = a − b si a < m et m sinon. Le coˆ ut d’un n-uplet complet t est la somme des coˆ uts Val P (t) = L
w
S∈W w S (t[S]) o` u t[S] est la projection de t sur S. Dans cet article, nous consid´ e- rons des r´ eseaux binaires, form´ es de fonctions d’arit´ e au plus 2. Nous d´ enotons par w i et w ij les fonctions de coˆ ut unaires et binaires d´ efinies sur la variable i
et sur les variables i, j respectivement. Nous faisons l’hypoth` ese qu’une fonction de coˆ ut unaire, not´ ee w i , existe pour toute variable i ainsi qu’une fonction de coˆ ut d’arit´ e nulle not´ ee w ∅ . Ce coˆ ut positif constant d´ efinit un minorant du coˆ ut de toutes les solutions.
L’´ etablissement d’une coh´ erence locale donn´ ee dans un CFN P consiste ` a transformer le CFN P en un probl` eme P 0 ´ equivalent ` a P : (Val P (t) = Val P
0(t) ∀t) menant ` a un ´ eventuel accroissement du minorant de coˆ ut optimum d´ efini par w ∅ . Il s’appuie sur l’ap- plication des transformations pr´ eservant l’´ equivalence (EPT) qui d´ eplacent les coˆ uts entre les fonctions de port´ ee diff´ erente. L’algorithme 1 introduit trois EPT
´
el´ ementaires. Project( w ij , i, a, α ) d´ eplace une quantit´ e de coˆ ut α d’une fonction binaire w ij vers une fonc- tion unaire w i , sur une valeur a ∈ D i . Un appel ` a Ex- tend( i, a, w ij , α ) effectue le travail inverse. Enfin, Una- ryProject( i, α ) projette une quantit´ e de coˆ ut α d’une fonction unaire vers la fonction de coˆ ut d’arit´ e nulle w ∅ .
Algorithme 1 : Les EPTs ´ el´ ementaires Proc´ edure Project( w ij , i, a, α )
1
w i (a) ←− w i (a) ⊕ α ;
2
foreach b ∈ D j do w ij (a, b) ←− w ij (a, b) α;
3
Proc´ edure Extend( i, a, w ij , α )
4
foreach b ∈ D j do w ij (a, b) ←− w ij (a, b) ⊕ α;
5
w i (a) ←− w i (a) α ;
6
Proc´ edure UnaryProject( i, α )
7
foreach a ∈ D i do w i (a) ←− w i (a) α;
8
w ∅ ←− w ∅ ⊕ α ;
9
Notez qu’un CSP binaire classique peut ˆ etre repr´ e- sent´ e comme un CFN avec m = 1 (le coˆ ut 1 est assign´ e aux n-uplets interdits). Comme d’habitude, une valeur (i, a) est dite arc coh´ erente (AC) sur w ij ssi il y a une paire (a, b) (support) qui satisfait w ij et que b ∈ D j
(valide). Un CSP est AC si toutes ses valeurs sont AC sur toutes les contraintes. L’´ etablissement de AC dans un CSP P produit sa fermeture AC, un CSP qui est
´
equivalent ` a P et qui est AC.
2.2 Coh´ erence d’Arc Virtuelle
D´ efinition 1. Etant ´ donn´ e un CFN P = (X, D, W, m), le probl` eme Bool(P) = (X, D, W , 1) est un CSP qui satisfait : ∃w S ∈ W ssi ∃w S ∈ W , S 6= ∅ et w S (t) = 1 ⇔ w S (t) 6= 0. Un CFN P est arc coh´ erent virtuel (VAC) ssi la fermeture arc coh´ erente classique du CSP Bool(P) n’est pas vide [6].
Bool(P ) est un CSP dont les solutions sont exac-
tement les n-uplets complets ayant un coˆ ut de w ∅
dans P . Si P n’est pas VAC, l’´ etablissement de AC dans Bool(P ) va g´ en´ erer un domaine vide. Dans ce cas, comme indiqu´ e dans [6], il existe une s´ equence d’EPT dont l’application m` ene ` a une augmentation de w ∅ . L’algorithme d’´ etablissement de VAC utilise cette propri´ et´ e dans un processus it´ eratif en trois phases.
La phase 1 consiste ` a ´ etablir AC dans le CSP Bool(P ). Dans cette phase, les effacements de valeurs sont m´ emoris´ es dans une structure de donn´ ees not´ ee tueur. Lorsqu’une valeur (i, a) n’a pas de support va- lide sur w ij , on affecte tueur (i, a) = j et on efface (i, a). Si aucun domaine de variable n’est vid´ e, P est VAC et le processus d’´ etablissement de VAC s’arrˆ ete.
Sinon, la phase 2 identifie le sous-ensemble des va- leurs effac´ ees qui sont n´ ecessaires pour produire le do- maine vide et les stocke dans une pile R. En retra-
¸
cant l’histoire des propagations de la phase pr´ ec´ edente d´ efinie par tueur, ` a partir de la variable dont le do- maine a ´ et´ e vid´ e jusqu’aux coˆ uts non nuls, il est pos- sible de d´ eterminer les effacements indispensables. Par ailleurs, cette phase ´ evalue la quantit´ e de coˆ ut maxi- male qu’il est possible de d´ eplacer sur w ∅ (not´ ee λ) et d´ efinit l’ensemble d’EPT ` a appliquer dans P afin d’at- teindre cette augmentation. Comme pr´ esent´ e dans [6], toutes les quantit´ es de coˆ ut d´ eplac´ ees par EPT sont stock´ ees dans deux tableaux de nombres entiers k(j, b) et k ij (j, b). Ils repr´ esentent respectivement le nombre de demandes de coˆ ut d’un montant λ ` a projeter sur (j, b) et ` a ´ etendre de (j, b) sur w ij . Notez que le d´ epla- cement de ces coˆ uts respecte une r` egle de conservation simple. Pour chaque valeur (j, b) d’une variable non vide j qui n’est pas la source de coˆ ut (w j (b) = 0), la quantit´ e de coˆ ut que (j, b) re¸ coit par Project est exac- tement la quantit´ e de coˆ ut sortant de (j, b) par Extend (voir [6], page 465).
∀(j, b) s.t. w j (b) = 0, k(j, b) = X
w
ij∈W
k ij (j, b) (1)
La phase 3 de VAC, comme d´ ecrite en d´ etail dans l’algorithme 2, modifie le CFN original en appliquant les EPT d´ efinies par les structures de donn´ ees k et k ij
sur toutes les valeurs effac´ ees indispensables stock´ ees dans R. Une valeur (j, b) effac´ ee par w ij va recevoir un coˆ ut de k(j, b) × λ par Project depuis w ij (ligne 7).
N´ eanmoins, il faut tout d’abord ´ etendre un coˆ ut de k ij (i, a) × λ ` a partir des supports invalides (i, a) sur w ij (ligne 5). Cette phase produit finalement un nou- veau probl` eme P 0 ´ equivalent ` a P avec un minorant w ∅ augment´ e (ligne 8).
Notez qu’` a la fin de la phase 1, lorsqu’il y a une variable de domaine vide i 0 , le probl` eme obtenu n’est pas forc´ ement la fermeture arc coh´ erente maximum de Bool(P ). Il y a peut-ˆ etre quelques valeurs qui n’ont
pas ´ et´ e encore supprim´ ees bien qu’elles n’aient aucun support valide, parce que le domaine concern´ e n’a pas encore ´ et´ e r´ evis´ e. Une telle variable est encore dans la file de propagation Q AC qui contient les variables res- tant ` a propager. Quant aux autres valeurs, soit elles ont un support valide, soit elles ont ´ et´ e supprim´ ees et leur tueur associ´ e n’est pas vide. Un tel probl` eme est appel´ e une fermeture arc coh´ erente partielle jus- tifi´ ee de Bool(P ). Aucun domaine dans ce probl` eme ne peut ˆ etre plus large que dans Bool(P ), les valeurs effac´ ees n’ont pas de support valide et sont justifi´ es correctement par les tueur.
Algorithme 2 : Phase 3 de VAC : Application des EPTs
tant que R 6= ∅ faire
1
(j, b) ←− R.pop();
2
i ←− tueur [j, b];
3
pour chaque a ∈ D i s.t. k ij (i, a) 6= 0 faire
4
Extend( i, a, w ij , λ × k ij (i, a) ) ;
5
k ij (i, a) ←− 0;
6
Project( w ij , j, b, λ × k(j, b) ) ;
7
UnaryProject( i 0 , λ ) ;
8
L’algorithme de VAC a une complexit´ e spatiale en O(ed) parce que les structures de donn´ ees tueur, k et k ij n´ ecessitent une m´ emoire de O(nd), O(nd) et O(ed) respectivement. La complexit´ e en temps de chaque it´ e- ration de VAC est en O(ed 2 ) tant qu’un algorithme de AC optimal est utilis´ e dans la phase 1.
Les it´ erations de VAC ´ etablissent AC sur une s´ equence de CSP l´ eg` erement modifi´ es : Bool(P), Bool(P 0 ), . . . Cela motive l’id´ ee d’utiliser des algo- rithmes d’AC dynamique pour appliquer AC ` a chaque it´ eration.
2.3 Coh´ erence d’Arc Dynamique
D´ efinition 2 ([8]). Un CSP dynamique est une s´ e- quence P 0 , P 1 , ..., P n de CSP o` u chaque P i est un CSP r´ esultant de l’addition ou du retrait d’une contrainte dans P i−1 .
Les algorithmes de Coh´ erence d’Arc Dynamique (DnAC) consistent ` a maintenir la coh´ erence d’arc dans la s´ equence des probl` emes P i . L’´ etablissement d’AC est naturellement incr´ ementale pour la restriction (ad- dition d’une contrainte) : il est suffisant d’´ etablir AC (phase 1) avec une file de propagation Q AC contenant les variables de la contrainte qui vient d’ˆ etre ajout´ ee.
Cependant, AC n’est pas incr´ emental pour la relaxa-
tion (retrait d’une contrainte). On a donc besoin d’un
processus suppl´ ementaire pour r´ egler ce cas : il faut
restaurer les valeurs supprim´ ees directement ou indi- rectement ` a cause de la contrainte retir´ ee d` es lors qu’il n’y pas d’autre raison de les supprimer.
Diff´ erentes familles d’algorithmes ont ´ et´ e propos´ ees pour DnAC. Dans cet article, nous nous appuyons sur AC/DC2 [1] qui est une am´ elioration de AC/DC [2]
s’appuyant sur des structures de donn´ ees persistantes tr` es limit´ ees. La plus importante d’entre-elles est un tableau justification(i, a) (comme dans DnAC4 [3]) qui m´ emorise la source de l’effacement de (i, a). Cette structure correspond exactement ` a la structure tueur de VAC 1 .
Lors du retrait d’une contrainte donn´ ee w ij , AC/DC2 se d´ eroule en 3 ´ etapes : 1) initialisation : toutes les valeurs des variables i et j supprim´ ees par w ij sont candidates pour ˆ etre restaur´ ees et marqu´ ees en “Propageable”. On peut d´ eterminer exactement ces valeurs en se basant sur le tableau justification. 2) pro- pagation : chaque valeur propageable est propag´ ee vers ses variables voisines en v´ erifiant si elle offre un nou- veau support aux valeurs dont elle ´ etait le tueur (va- leurs qui ont ´ et´ e effac´ ees par le manque de support sur la variable propageable) et qui seront alors aussi mar- qu´ ees comme “Propageable”. Notez que grˆ ace ` a justifi- cation, quand on propage la variable “Propageable” i, on ne consid` ere que les valeurs (j, b) effac´ ees par w ji
comme candidates ` a la restauration, au lieu de tes- ter toutes les valeurs du voisinage. Lorsqu’une valeur est propag´ ee sur toutes les variables de son voisinage, elle est marqu´ ee “Restaurable” et sera restaur´ ee. 3) fil- trage : toutes les valeurs restaur´ ees ont besoin d’ˆ etre rev´ erifi´ ees pour la coh´ erence d’arc. Ceci est accompli en ´ etablissant l’AC via la file de propagation Q AC , initialis´ ee de fa¸ con ` a imposer la r´ evision des variables ayant des valeurs restaur´ ees.
La complexit´ e spatiale d’un algorithme AC/DC bas´ e sur AC3 est en O(nd + e). La complexit´ e en temps de AC/DC2 est d´ efinie par l’algorithme de filtrage utilis´ e dans la derni` ere ´ etape : en O(ed 3 ) pour AC-3 et en O(ed 2 ) pour AC2001 [1].
3 Algorithme de VAC Dynamique
En ´ etablissant VAC, le CFN P est incr´ ementale- ment modifi´ e dans la phase 3 de chaque it´ eration de VAC. Nous proposons donc une version am´ elior´ ee de VAC, appel´ ee VAC dynamique (DynVAC), qui utilise AC dynamique pour maintenir AC dans les Bool(P ) successifs au lieu de filtrer ` a partir de z´ ero ` a chaque it´ e- ration comme le fait l’algorithme VAC standard. Nous
1. AC/DC2 introduit une autre structure time-stamp(i, a) qui m´ emorise l’ordre des effacements. Le premier auteur de AC/DC2 nous a confirm´ e que cette structure est subsum´ ee par justification(i, a) (communication priv´ ee) et est donc inutile.
utilisons AC/DC2 [1] bas´ e sur AC2001, pour son op- timalit´ e. Un avantage de l’utilisation d’AC/DC2 est que la structure de donn´ ees justification est fournie gratuitement par la structure tueur de VAC.
3.1 Propri´ et´ es et algorithme
Dans les CSP dynamiques traditionnels, les algo- rithmes de DnAC sont appliqu´ es apr` es chaque addition ou suppression d’une contrainte. Dans le cas de VAC, la situation est plus compliqu´ ee parce qu’une s´ erie de modifications de Bool(P ) a lieu durant la phase 3 via l’application des EPT. Un appel de Project( w ij , i, a, α ) a deux effets : 1) l’augmentation du coˆ ut unaire w i (a) et 2) la diminution de coˆ uts dans la fonction de coˆ ut binaire w ij . Si un coˆ ut w i (a) nul augmente et de- vient strictement positif, la valeur (i, a) est enlev´ ee de Bool(P ), et ceci correspond ` a une restriction. Au contraire, si la paire (a, b) de coˆ ut strictement positif voit son coˆ ut atteindre z´ ero, cette paire pr´ ec´ edemment interdite dans w ij devient autoris´ ee et ce fait corres- pond ` a une relaxation. Au lieu d’appliquer un algo- rithme de DnAC ` a chaque op´ eration Project , Extend et UnaryProject , une approche plus rationnelle consiste ` a appliquer les principes de DnAC une seule fois apr` es la phase 3 pour ´ eviter les restaurations/suppressions inutiles.
Chaque it´ eration de VAC transforme le CFN P ac- tuel en un probl` eme modifi´ e P 0 dont les fonctions de coˆ uts sont not´ ees w i 0 et w ij 0 . Il est possible de calculer les valeurs w i 0 et w 0 ij d` es la fin de la phase 2 puisqu’elles sont d´ efinies par une s´ equence connue d’op´ erations Pro- ject , Extend et UnaryProject appliqu´ ees sur w i et w ij . Par exemple, toutes les valeurs a d’une variable non vide i satisfont l’´ equation suivante :
w 0 i (a) = w i (a) ⊕ (k(i, a).λ)
w
ij∈W (k ij (i, a).λ) De mani` ere similaire, il est possible de calculer les coˆ uts de la variable de domaine vide et des w 0 ij . Nous allons maintenant prouver que l’effet global des toutes les EPT sur Bool(P ) dans la phase 3 est simplement un ensemble de relaxations au niveau des fonctions unaires et binaires.
Propri´ et´ e 1. D` es la phase 2, nous savons que : (a) ∀(i, a) : w 0 i (a) ≤ w i (a).
(b) ∀(i, a) et (j, b) : si w 0 ij (a, b) 6= w ij (a, b) alors (i, a) ou (j, b) est effac´ ee de la fermeture arc coh´ erente partielle justifi´ ee actuelle de Bool(P ).
D´ emonstration. (a) Dans VAC, la seule op´ eration qui
peut augmenter les coˆ uts unaires est l’op´ eration Pro-
ject Cependant, selon l’´ ˙ equation 1, si une valeur (i, a)
re¸ coit un coˆ ut via Project , elle va faire un Extend de
la mˆ eme quantit´ e de coˆ ut (vers d’autres fonctions de coˆ ut binaires ou vers w ∅ ). En cons´ equence, les coˆ uts unaires ne peuvent pas augmenter.
(b) Il n’y a que deux fa¸ cons pour changer un coˆ ut binaire w ij (a, b). C’est d’ex´ ecuter une op´ eration Project
`
a partir de w ij ou une op´ eration Extend sur lui. N´ ean- moins, la phase 3 de VAC n’applique Project et Extend qu’avec des valeurs extraites de la file des valeurs sup- prim´ ees R (construite dans la phase 2). Donc, quand le coˆ ut d’une paire (a, b) change, il faut que (i, a) ou (j, b) soit effac´ ee.
Corollaire 1. Les EPT appliqu´ ees dans la phase 3 de VAC transformant Bool(P ) en Bool(P 0 ) ne g´ en` erent que les types de relaxation suivants :
(1) des valeurs (i, a) deviennent autoris´ ees (w i (a) >
w 0 i (a) = 0).
(2) des paires ((i, a), (j, b)) deviennent autoris´ ees (w ij (a, b) > w 0 ij (a, b) = 0).
D´ emonstration. Selon la Propri´ et´ e 1(a), nous savons que les coˆ uts unaires ne peuvent que diminuer. Cer- tains coˆ uts non nuls peuvent diminuer ` a z´ ero. Donc, les valeurs correspondantes r´ eapparaissent dans Bool(P 0 ).
Ce fait peut ˆ etre consid´ er´ e comme la r´ etraction de contraintes unaires.
Selon la Propri´ et´ e 1(b), le coˆ ut des paires peut aug- menter ou diminuer. Si un coˆ ut binaire (a, b) augmente de z´ ero ` a non nul, cela ne peut d´ etruire aucun support valide parce qu’une des deux valeurs est effac´ ee dans la fermeture partielle actuelle. Le support n’est donc pas valide. Au contraire, si le coˆ ut de (a, b) diminue, cela peut cr´ eer un nouveau support pour a ou b.
En cons´ equence, l’algorithme DnAC utilis´ e peut ˆ
etre sp´ ecialis´ e pour un ensemble de relaxations (Al- gorithme 3). Le protocole de restauration se compose de 3 ´ etapes, comme dans AC/DC2. Notez que Bool(P ) est maintenu apr` es la phase 3 de chaque it´ eration. D i
mentionn´ e dans l’algorithme 3 repr´ esente le domaine de la variable i dans la fermeture arc coh´ erente par- tielle justifi´ ee finale obtenue apr` es la phase 1.
L’´ etape initialisation parcourt toutes les valeurs dans la file R dans le mˆ eme ordre de parcours que la phase 3 pour identifier les valeurs qui doivent ˆ etre restaur´ ees (ligne 2). La variable i 0 , dont le domaine a ´ et´ e vid´ e, est trait´ ee s´ epar´ ement. Selon le corol- laire 1, il y a deux cas possibles : (1) quand une va- leur (i, a) devient autoris´ ee w i (a) > w i 0 (a) = 0, elle sera restaur´ ee (ligne 5), (2) quand un nouveau sup- port valide apparaˆıt pour la valeur (j, b) en satisfaisant (w ij (a, b) ⊕ w i (a)) > (w 0 ij (a, b) ⊕ w i 0 (a)) = 0 et tueur [j, b] = i, (j, b) sera restaur´ ee (ligne 7). Lorsqu’une va- leur (i, a) est restaur´ ee, elle est stock´ ee dans un tableau restaur´ e[i] et la variable i est ajout´ ee dans la liste RL
Algorithme 3 : Mise ` a jour de Bool(P) Proc´ edure Initialisation
1
pour chaque (j, b) ∈ R faire
2
i ←− tueur [j, b];
3
pour chaque a ∈ D i − D i faire
4
si (w i (a) > 0) ∧ (w 0 i (a) = 0) alors
5
Restaurer( i, a ) ;
si b / ∈ D j ∧ w i 0 (a) = 0 ∧ w ij 0 (a, b) = 0
6
alors Restaurer( j, b ) ; pour chaque a ∈ D i
0tel que
7
w i
0(a) > 0 ∧ w i 0
0