• Aucun résultat trouvé

Compilation de CSP en Set-labeled Diagram

N/A
N/A
Protected

Academic year: 2021

Partager "Compilation de CSP en Set-labeled Diagram"

Copied!
11
0
0

Texte intégral

(1)

HAL Id: hal-00811474

https://hal.inria.fr/hal-00811474

Submitted on 10 Apr 2013

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.

Compilation de CSP en Set-labeled Diagram

Alexandre Niveau, Hélène Fargier, Cédric Pralet

To cite this version:

Alexandre Niveau, Hélène Fargier, Cédric Pralet. Compilation de CSP en Set-labeled Diagram. JFPC - Journées Francophones sur la Programmation par Contraintes - 2012, May 2012, Toulouse, France.

�hal-00811474�

(2)

Actes JFPC 2012

Compilation de CSP en Set-labeled Diagram

Alexandre Niveau

H´ el` ene Fargier

C´ edric Pralet

CRIL, Lens

IRIT/RPDMP, Toulouse

ONERA/DCSD, Toulouse

niveau@cril.fr fargier@irit.fr cpralet@onera.fr

R´ esum´ e

La plupart des requˆ etes associ´ ees aux CSPs sont NP- difficiles, et doivent pourtant parfois ˆ etre ex´ ecut´ ees en ligne et en temps limit´ e. Dans ce cas, la r´ esolution du CSP n’est pas assez efficace, voire impossible. Des struc- tures ont ´ et´ e propos´ ees, tels les MDDs, pour compiler les CSPs et rendre leur exploitation en ligne efficace. Les MDDs sont des DAGs orient´ es dont chaque nœud repr´ e- sente l’assignation d’une variable ; l’ensemble des solu- tions d’un CSP correspond ` a l’ensemble des chemins du MDD correspondant. Dans cet article, nous ´ etudions la relaxation de deux restrictions usuellement impos´ ees aux MDDs, l’ordonnancement et la non-r´ ep´ etition des va- riables, introduisant une structure de compilation nom- m´ ee « set-labeled diagrams » (SDs). Un CSP peut ˆ etre compil´ e en SD en suivant la trace de l’arbre de recherche explor´ e par un solveur de CSP. L’impact des restrictions susnomm´ ees peut ˆ etre ´ etudi´ e en faisant varier les heu- ristiques utilis´ ees par le solveur lors de la r´ esolution.

1 Introduction

Les probl` emes de satisfaction de contraintes (CSPs) fournissent un cadre puissant permettant de repr´ esen- ter une grande vari´ et´ e de probl` emes, tels des probl` emes de planification ou de configuration. On peut consid´ e- rer divers types de requˆ etes sur un CSP, comme l’ex- traction d’une solution (la requˆ ete la plus classique), la coh´ erence forte des domaines, l’ajout ou le retrait de nouvelles contraintes (CSP dynamique), voire une combinaison de plusieurs de ces requˆ etes. Par exemple, la r´ esolution interactive d’un probl` eme de configu- ration revient ` a ajouter et retirer des contraintes (unaires) tout en maintenant la coh´ erence forte des domaines — c’est-` a-dire que chaque valeur d’un do- maine doit faire partie d’au moins une solution).

La plupart des requˆ etes sont NP-difficiles ; elles doivent cependant ˆ etre parfois effectu´ ees en ligne. Une

fa¸ con possible de r´ esoudre cette contradiction consiste

`

a compiler l’ensemble des solutions d’un CSP en un diagramme de d´ ecision multivalu´ e (MDD, multivalued decision diagram ), c’est-` a-dire un graphe dont les nœuds sont ´ etiquet´ es par des variables et les arcs repr´ e- sentent des valeurs assign´ ees ` a ces variables. Dans de tels diagrammes, chaque chemin de la racine au puits repr´ esente une solution du CSP. Un certain nombre d’op´ erations, notamment les requˆ etes pr´ ec´ edemment cit´ ees, sont faisables sur un MDD en temps polynomial en sa taille. Th´ eoriquement, cette taille peut ˆ etre ex- ponentiellement plus grande que celle du CSP original, mais en pratique elle reste raisonnable dans un certain nombre d’applications. En effet, leur nature de graphe permet aux MDDs de tirer parti de l’interchangeabilit´ e des valeurs, en gagnant de la place grˆ ace ` a la fusion de sous-probl` emes ´ equivalents. Les diagrammes de d´ eci- sion ont ´ et´ e utilis´ es dans divers contextes, notamment la configuration de produit [2], les syst` emes de recom- mandation [8], ou encore, dans leur forme bool´ eenne originale, dans la planification [10, 13] et le diagnostic [24].

A notre connaissance, ces travaux ne consid` ` erent que des graphes ordonn´ es, c’est-` a-dire que l’ordre dans lequel les variables sont rencontr´ ees le long d’un che- min est fix´ e (x ne peut apparaˆıtre avant y dans un chemin, et apr` es y dans un autre), et « read-once », c’est-` a-dire que les variables ne peuvent ˆ etre r´ ep´ et´ ees le long d’un chemin. Ce n’est cependant pas une n´ eces- sit´ e pour bien des applications ; dans le cas bool´ een, [5] ont montr´ e que les OBDDs pouvaient ˆ etre avan- tageusement remplac´ es par des FBDDs (free BDDs), qui sont « read-once » mais pas ordonn´ es. Dans cet article, nous utilisons le langage des « diagrammes ` a

´

etiquettes ensemblistes » (SDs, set-labeled diagrams)

[19], qui g´ en´ eralise les MDDs en relˆ achant ces deux

(3)

contraintes ` a la fois.

Il est important de noter que nous ne nous int´ e- ressons pas ` a l’utilisation de MDDs pour repr´ esenter une contrainte ` a la fois, avec l’objectif d’utiliser les formes compil´ ees dans un solveur de CSP. Dans ce cas, les requˆ etes seraient principalement de la propa- gation. Notre objectif est diff´ erent : nous voulons com- piler l’ensemble des solutions d’un CSP complet, de mani` ere ` a pouvoir ex´ ecuter en ligne diverses requˆ etes sur la forme compil´ ee.

Dans cet article, nous ´ etudions une m´ ethode de com- pilation en SDs, qui consiste ` a appliquer le concept de

« DPLL with a trace » [14] ` a un solveur de CSP. Nous pr´ esentons un compilateur g´ en´ erique, permettant de construire des SDs tout en b´ en´ eficiant des techniques de programmation par contraintes disponibles dans les solveurs. Avec ce compilateur, relˆ acher les hypo- th` eses d’ordonnancement statique ou de « read-once » d´ epend des heuristiques de branchement et de choix de variables utilis´ ees pendant la recherche par le sol- veur. Nous ´ etudions diverses heuristiques possibles et pr´ esentons des r´ esultats exp´ erimentaux, obtenus grˆ ace

`

a l’implantation de notre algorithme sur le solveur Choco [9].

Le papier est organis´ e comme suit : nous pr´ esentons tout d’abord dans la section 2 le cadre formel des SDs, qui g´ en´ eralisent les MDDs. Puis, dans la section 3, nous d´ ecrivons notre algorithme de compilation. La section 4 d´ etaille les heuristiques que nous avons uti- lis´ ees, et les r´ esultats de nos exp´ erimentations.

2 Set-labeled Diagrams

2.1 Structure et s´ emantique

Nous donnons tout d’abord une d´ efinition g´ en´ erale des set-labeled diagrams, puis nous nous restreignons

`

a un cadre sp´ ecifique.

D´ efinition 1 (Set-labeled diagram). Soit V un en- semble de variables et E un ensemble d’ensembles.

Un diagramme ` a ´ etiquettes ensemblistes (set-labeled diagram, SD) est un graphe acyclique orient´ e ayant au plus une racine et au plus une feuille (appel´ ee le puits). Chaque nœud (except´ e le puits) est ´ etiquet´ e par une variable de V ou par le symbole disjonctif Y . Chaque arc est ´ etiquet´ e par un ensemble, ´ el´ ement de E .

Cette d´ efinition implique peu de restrictions sur les

´ etiquettes des nœuds et des arcs. Les SDs g´ en´ eralisent ainsi un certain nombre de structures repr´ esentant des ensembles de solutions, telles les BDDs [7] (binary de- cision diagrams, en prenant des variables bool´ eennes et E = {⊥ , >} ), les MDDs [22, 25, 3, 4] (multivalued

decision diagrams, en prenant des variables discr` etes et E un ensemble de singletons), et les automates ` a intervalles [20] et interval diagrams [23] (en prenant E un ensemble d’intervalles).

Dans la suite, nous nous restreignons ` a un cadre proche de celui des MDDs : les domaines des variables sont des parties finies de Z . En revanche, contraire- ment aux MDDs, les arcs ne sont pas ´ etiquet´ es par des singletons mais par des ensembles finis de Z . Dans cet article, nous consid´ ererons des ensembles explici- tement ´ enum´ er´ es — utiliser des ensembles ne fait pas gagner d’espace dans ce cas (l’int´ erˆ et est de pouvoir d´ efinir une nouvelle restriction structurelle, la conver- gence). N´ eanmoins, les SDs sont plus g´ en´ eraux que les MDDs, notamment car l’ordre des variables et leur r´ e- p´ etition le long d’un chemin ne sont pas contraints, mais aussi car ils peuvent ˆ etre non-d´ eterministes : les ensembles ´ etiquetant les arcs sortant d’un mˆ eme nœud ne sont pas forc´ ement deux ` a deux disjoints. Les SDs d´ eterministes sont appel´ es dSDs.

Notons qu’un SD peut ˆ etre vide (n’avoir aucun nœud) ou ne contenir qu’un seul nœud (qui est alors ` a la fois racine et puits). La figure 1 donne un exemple de SD.

Nous utilisons les notations suivantes : le domaine d’un variable x ∈ V est not´ e Dom(x). Par conven- tion, on note Dom( Y ) = { 0 } . On suppose que V est totalement ordonn´ e, et dans un ensemble not´ e X = { x

1

, . . . , x

k

} ⊆ V , les variables soient ordonn´ es dans l’ordre croissant de leur indice. On note alors Dom(X ) = Dom(x

1

) × · · · × Dom(x

k

), et #— x repr´ e- sente une X -instanciation des variables de X , c’est-` a- dire que #— x ∈ Dom(X ). Enfin, la valeur assign´ ee ` a x

i

dans l’instanciation #— x est not´ ee #— x

|xi

(par convention,

#— x

|Y

= 0 pour tout X ). Le cardinal d’un ensemble S est not´ e | S | .

Soit ϕ un SD, N un nœud et E un arc de ϕ. On note :

– Var(ϕ) l’ensemble des variables mentionn´ ees dans ϕ ;

– Root(ϕ) la racine et Sink(ϕ) le puits de ϕ ; – || ϕ || la taille de ϕ, c’est-` a-dire la somme des car-

dinalit´ es des ensembles et des domaines des va- riables mentionn´ es dans ϕ ;

– Out(N) (resp. In(N)) l’ensemble des arcs sortants (resp. entrants) du nœud N ;

– Var(N ) la variable ´ etiquetant N (par convention Var(Sink(ϕ)) = Y ) ;

– Src(E) le nœud duquel sort l’arc E et Dest(E) le nœud dans lequel il entre ;

– Lbl(E) l’ensemble ´ etiquetant l’arc E ;

– Var(E) = Var(Src(E)) la variable relative ` a E.

Un SD est une repr´ esentation compacte d’une fonc-

tion bool´ eenne sur des variables discr` etes. Cette fonc-

(4)

x

y z

y

z

(2)

z

x

(3)

∨ x

y

(1)

y

(1)

{ 3, 4 }

{ 1 } { 0 }

{ 0 }

{0, 1, . . . 8} { 0, 1, . . . , 10 }

{ 15 }

(5)

{ 7, 8 } { 2, 7 }

{3}

(4)

{ 6 }

(4)

{ 1 } {1, 4}

{ 1 } { 1, 3, 6 }

{ 0 }

{ 0 }

Figure 1 – Un exemple de SD. Les variables ont toutes pour domaine l’ensemble {0, 1, . . . , 10}. Ce SD n’est pas r´ eduit (voir section 2.2) : les deux nœuds marqu´ es

(1)

sont isomorphes ; le nœud

(2)

est b´ egayant ; le nœud

(3)

est non-d´ ecisif ; les arcs marqu´ es

(4)

sont contigus ; l’arc

(5)

est mort.

tion est appel´ ee interpr´ etation du SD.

D´ efinition 2 (S´ emantique d’un SD). Soit ϕ un SD, et X = Var(ϕ). L’interpr´ etation de ϕ est la fonction [[ϕ]], de Dom(X ) vers {> , ⊥} , et d´ efinie comme suit : pour toute X-instanciation #— x , [[ϕ]]( #— x) = > si et seulement s’il existe un chemin p de la racine au puits de ϕ, tel que pour tout arc E de p, #— x

|Var(E)

∈ Lbl(E).

Une X-instanciation #— x est mod` ele de ϕ si et seule- ment si elle v´ erifie [[ϕ]]( #— x ) = > . On note Mod(ϕ) l’en- semble des mod` eles de ϕ.

ϕ est ´ equivalent ` a un autre SD ψ (ce que l’on note ϕ ≡ ψ) ssi Mod(ϕ) = Mod(ψ).

L’interpr´ etation du SD vide renvoie toujours ⊥ , puisqu’il ne contient aucun chemin de la racine au puits. Inversement, l’interpr´ etation du SD-feuille ren- voie toujours > ; en effet, le seul chemin de la racine au puits de ce SD ne contient aucun arc.

D´ efinition 3 (Coh´ erence, validit´ e, contexte). Soit ϕ un SD, et X = Var(ϕ).

ϕ est dit coh´ erent (resp. valide) si et seulement si Mod(ϕ) 6 = ∅ (resp. Mod(ϕ) = Dom(X )).

Un entier ω ∈ Z est dit coh´ erent pour une variable y dans ϕ si et seulement s’il existe un mod` ele #— x de ϕ tel que #— x

|y

= ω.

L’ensemble des valeurs coh´ erentes de y dans ϕ est appel´ e contexte de y dans ϕ, et not´ e Ctxt

ϕ

(y).

Contrairement au cas des MDDs, d´ ecider si un SD est coh´ erent ou non est un probl` eme difficile. Une des raisons est que les diff´ erents ensembles qui restreignent le domaine d’une mˆ eme variable le long d’un chemin peuvent ˆ etre disjoints, ce qui implique que ledit chemin ne correspond ` a aucun mod` ele. Il faudrait donc poten- tiellement parcourir tous les chemins d’un SD pour d´ e- cider de sa coh´ erence. Pour ´ eviter cela, une possibilit´ e est de consid´ erer des SDs dont les ensembles relatifs ` a une mˆ eme variable ne peuvent que r´ etr´ ecir le long d’un chemin. Nous appelons cette propri´ et´ e convergence ; elle est illustr´ ee figure 2. La convergence g´ en´ eralise la propri´ et´ e de « read-once » d´ efinie dans le contexte des

« free BDDs » ; en effet, si aucune variable n’est r´ ep´ e- t´ ee, le SD est trivialement convergent.

D´ efinition 4 (SD convergent et read-once ). Un arc E d’un SD ϕ est convergent si et seulement si tout arc E

0

sur un chemin de la racine de ϕ ` a Src(E) tel que Var(E) = Var(E

0

) v´ erifie Lbl(E) ⊆ Lbl(E

0

).

Un SD convergent (focusing SD, FSD) est un SD ne contenant que des arcs convergents.

Un SD read-once (RSD) est un SD dans lequel il n’existe aucun chemin contenant deux nœuds ´ etiquet´ es par une mˆ eme variable.

On note dFSD (resp. dRSD) un SD ` a la fois d´ etermi- niste et convergent (resp. read-once ). Enfin, il est pos- sible d’imposer un ordre sur les variables, et retrouver les MDDs dans leur d´ efinition usuelle

1

[22, 25, 3, 4].

D´ efinition 5 (SD ordonn´ e). Soit X un ensemble de variables et < un ordre total sur X . Un SD est ordonn´ e selon < si et seulement si tout couple de nœuds (N, M) tel que N est ancˆ etre de M v´ erifie Var(N) < Var(M ).

Un SD d´ eterministe et ordonn´ e selon < est appel´ e un MDD

<

. Le langage

2

MDD est l’union des langages MDD

<

pour tout <.

Nous montrons ` a pr´ esent comment r´ eduire un SD, de fa¸ con ` a le rendre aussi compact que possible, et gagner de l’espace m´ emoire.

2.2 R´ eduction

Comme un BDD, un SD peut ˆ etre r´ eduit en taille sans que sa s´ emantique ne change. La r´ eduction est ba- s´ ee sur plusieurs op´ erations ; certaines sont des g´ en´ era- lisations directes de celles introduites dans le contexte des BDDs [7], telles la fusion des nœuds isomorphes

1. La d´efinition originale des MDDs n’exige ni d´eterminisme, ni ordonnancement. N´eanmoins, les travaux utilisant cette struc- ture se restreignant syst´ematiquement `a des graphes ordon- n´es et d´eterministes, nous d´ecidons arbitrairement de nommer

«MDDs»les SDs ordonn´es et d´eterministes.

2. Unlangage est un ensemble de graphes muni d’une fonc- tion d’interpr´etation. On note SD le langage des SDs, FSD le langage des FSDs, etc.

(5)

(N D)

x

z

(2)

z y

(1)

x

(N D)

y y

{ 2, 7 }

{ 0 }

{3, 6}

(4)

{ 1 } { 0, 1, . . . , 8 }

{ 1 }

(N F)

{7, 8}

(†)

{ 1, 4 } { 1, 3, 6 }

{0}

{ 0 }

{3, 4}

Figure 2 – Dans ce SD, tous les arcs sont convergents, except´ e celui marqu´ e

(N F)

(son ´ etiquette n’est pas incluse dans celle de l’arc marqu´ e

(†)

), et tous les nœuds sont d´ eterministes except´ e ceux marqu´ es

(N D)

. Ce SD est la forme r´ eduite de celui pr´ esent´ e figure 1 : les nœuds isomorphes, marqu´ es

(1)

, ont ´ et´ e fusionn´ es en un seul nœud

(10)

; le nœud b´ egayant

(2)

a fusionn´ e avec le nœud

(20)

; les arcs contigus, marqu´ es

(4)

, ont fusionn´ e en un seul arc

(40)

; et le nœud non-d´ ecisif

(3)

et l’arc mort

(5)

ont ´ et´ e supprim´ es.

(qui sont ´ equivalents) et non-d´ ecisifs (qui sont auto- matiquement franchis), tandis que d’autres sont sp´ eci- fiques aux SDs, comme la suppression des arcs morts (qui ne sont jamais franchis), et la fusion des arcs conti- gus (qui ont la mˆ eme source et la mˆ eme destination) et des nœuds b´ egayants (des d´ ecisions successives re- latives ` a une mˆ eme variable). Toutes ces notions sont illustr´ ees sur le SD de la figure 1, et la forme r´ eduite de ce SD est pr´ esent´ ee figure 2.

D´ efinition 6.

– Deux arcs E

1

et E

2

sont contigus ssi Src(E

1

) = Src(E

2

) et Dest(E

1

) = Dest(E

2

).

– Deux nœuds N

1

et N

2

sont isomorphes ssi Var(N

1

) = Var(N

2

) et il existe une bijection σ de Out(N

1

) vers Out(N

2

) v´ erifiant ∀ E ∈ Out(N

1

), Lbl(E) = Lbl(σ(E)) et Dest(E) = Dest(σ(E)).

– Un arc E est mort ssi Lbl(E) ∩ Dom(Var(E)) = ∅ . – Un nœud N est non-d´ ecisif ssi | Out(N ) | = 1 et

E ∈ Out(N ) v´ erifie Dom(Var(E)) ⊆ Lbl(E).

– Un nœud non-racine N est b´ egayant ssi tous ses parents sont ´ etiquet´ es par Var(N), et soit P

E∈Out(N)

| E | = 1, soit P

E∈In(N)

| E | = 1.

D´ efinition 7 (Forme r´ eduite). Un SD ϕ est dit r´ e- duit ssi aucun nœud de ϕ n’est isomorphe ` a un autre, b´ egayant ou non-d´ ecisif, et aucun arc de ϕ n’est mort ou contigu ` a un autre.

La r´ eduction peut ˆ etre effectu´ ee en temps polyno- mial en la taille du graphe.

Proposition 8 (R´ eduction). Soit L un sous-langage de SD parmi { SD, FSD, dSD, dFSD, MDD, MDD

<

} . Il existe un algorithme polynomial qui associe tout ϕ de L ` a un SD r´ eduit ϕ

0

de L ´ equivalent ` a ϕ et v´ erifiant | ϕ

0

| ≤ | ϕ | .

3 Algorithme de compilation : « Choco with a Trace »

3.1 ´ Etat de l’art

La compilation de connaissances est un domaine principalement ´ etudi´ e du point de vue th´ eorique.

Quelques compilateurs ont ´ et´ e implant´ es, principale- ment dans le cadre bool´ een — ils permettent de com- piler des fonctions ` a valeur bool´ eennes sur des variables bool´ eennes — notamment les paquetages pour mani- puler des OBDDs (tels Buddy [17] et CUDD [21]) et le plus r´ ecent « DPLL with a trace » propos´ e par Huang et Darwiche [14]. La premi` ere cat´ egorie de paquetages compile des formules ´ el´ ementaires (ou des contraintes

´

el´ ementaires) en diagramme de d´ ecision (binaire), et combine incr´ ementalement les r´ esultats obtenus en uti- lisant des op´ erations de conjonction (approche bottom- up). Il est toujours possible d’utiliser le cadre bool´ een pour repr´ esenter des domaines multivalu´ es, en utili- sant un encodage bool´ eens des domaines du CSP [15] ; n´ eanmoins, il a ´ et´ e montr´ e exp´ erimentalement [11] que les MDDs sont souvent plus compacts que les BDDs pour des probl` emes r´ eels (notamment de configuration de produit).

L’inconv´ enient de l’approche bottom-up est qu’elle peut g´ en´ erer des graphes interm´ ediaires, qui utilisent de l’espace et peuvent ˆ etre exponentiellement plus grands que le graphe final. L’algorithme « DPLL with a trace » [14] utilise une approche diff´ erente pour com- piler des formules propositionnelles, qui s’av` ere efficace en pratique : celle de construire des diagrammes de d´ e- cision (ainsi que des d-DNNFs) en exploitant l’arbre de recherche d’une ex´ ecution de l’algorithme DPLL, qui ´ enum` ere toutes les solutions d’une CNF.

Cette id´ ee a ´ et´ e adapt´ ee [12] pour construire des MDDs approch´ es (dont l’ensemble de mod` eles est une approximation de l’ensemble de solutions du CSP d’en- tr´ ee) en exploitant la trace d’un algorithme en profon- deur d’abord. Une technique similaire est utilis´ ee [18]

pour construire des AOMDDs (MDDs avec des nœuds

(6)

ET) ` a partir de la trace d’une recherche AND/OR.

Toutes les approches pr´ ec´ edentes se basent sur un ordre des variables pr´ ed´ etermin´ e (dans le cas des AOMDDs, c’est un ordre arborescent). Nous relˆ achons ici cette hypoth` ese : le choix de la prochaine variable sur laquelle brancher peut ˆ etre dynamique, en fonction d’une heuristique. Nous pr´ esentons ici une description g´ en´ erale de notre algorithme, que nous avons implant´ e au-dessus du solveur de CSP Choco [9].

3.2 Description g´ en´ erale

Soit C = h X, C i un CSP d´ efini par un ensemble de contraintes C sur un ensemble de variables X .

En ´ etendant les principes de « DPLL with a trace » des domaines bool´ eens aux domaines entiers, nous in- troduisons des m´ ecanismes permettant de construire des dFSDs en exploitant l’arbre de recherche d’un solveur de CSP. Cette approche est pr´ esent´ ee dans l’algorithme 1. Implant´ e au-dessus du solveur Choco, nous obtenons le compilateur « Choco with a trace ».

La fonction principale, SD builder( C , X

a

) prend en entr´ ee un CSP C et l’ensemble courant X

a

des va- riables instanci´ ees dans C . Elle retourne une repr´ e- sentation compil´ ee de l’ensemble des solutions de C sous forme de dFSD. L’appel initial du compilateur est SD builder( C

0

, ∅ ), avec C

0

le CSP initial que l’on veut compiler.

3.2.1 Recherche standard

La partie classique de la fonction SD builder( C , X

a

) est une recherche g´ en´ erique en profondeur d’abord,

´

enum´ erant l’ensemble des solutions du CSP C . Elle fonctionne comme suit : tout d’abord, la fonction Propagate applique des techniques de propagation au CSP d’entr´ ee, de mani` ere ` a retirer des domaines cer- taines valeurs incoh´ erentes ; si le CSP obtenu est lo- calement coh´ erent (aucun domaine n’est vide), alors (i) la fonction Choose var s´ electionne une variable x non encore assign´ ee (x / ∈ X

a

), (ii) la fonction Split partitionne le domaine courant de x en plusieurs sous- ensembles disjoints, et (iii) la fonction principale est appel´ ee successivement sur chacun des sous-probl` emes induits par la partition. ` A ce niveau, l’implantation des fonctions Propagate, Choose var and Split n’a pas d’importance ; n’importe quelles techniques et heuris- tiques peuvent ˆ etre utilis´ ees.

3.2.2 Ajouts pour la compilation

Pour construire un dFSD repr´ esentant l’ensemble des solutions du CSP initial, certains ajouts sont n´ e- cessaires ; ils sont encadr´ es dans l’algorithme 1. L’id´ ee

Algorithm 1 SD builder(C, X

a

) : renvoie un SD repr´ e- sentant l’ensemble des solutions du CSP C. X

a

est l’en- semble courant des variables assign´ ees.

1:

Propagate( C )

2:

k := Compute key( C , X

a

)

3:

if le cache contient une entr´ ee pour la cl´ e k then

4:

return le SD correspondant ` a k dans le cache

5:

if C est prouv´ e incoh´ erent then

6:

return le SD vide

7:

if X

a

= X (toutes les variables de C sont assi- gn´ ees) then

8:

return le SD-feuille

9:

Ψ := ∅

10:

x := Choose var( C )

11:

R := Split( C , x)

12:

for all r ∈ R do

13:

X

a0

:= X

a

14:

if r est r´ eduit ` a un singleton then

15:

X

a0

:= X

a0

∪ { x }

16:

soit ψ

r

:= SD builder( C

|Dom(x)←r

, X

a0

)

17:

Ψ := Ψ ∪ { ψ

r

}

18:

soit N le nœud N := Get node(x, Ψ)

19:

soit ϕ le graphe de racine N

20:

ranger ϕ ` a la cl´ e k dans le cache

21:

return ϕ

de base est de construire une trace de l’arbre de re- cherche par le biais de divers m´ ecanismes :

– Soit n le nœud courant de l’arbre de recherche ; on note C (n) le CSP courant associ´ e ` a ce nœud. Soit x la variable non-assign´ ee choisie au nœud n, et R la partition de Dom(x) sur laquelle l’algorithme a d´ ecid´ e de brancher (une branche par ´ el´ ement dans la partition). L’id´ ee est que l’exploration associ´ ee

`

a chaque sous-domaine r ∈ R g´ en` ere un SD ψ

r

; ce SD repr´ esente l’ensemble des solutions du sous- probl` eme C (n)

|Dom(x)←r

, obtenu en r´ eduisant le domaine de x ` a r. Alors, l’ensemble des solutions du CSP C (n) sur X \ X

a

est un SD ϕ(n) dont la racine est ´ etiquet´ ee par x et qui contient, pour chaque r ∈ R tel que ψ

r

n’est pas le SD vide, un arc de la racine ` a ψ

r

.

Dans la fonction SD builder( C , X

a

),

le graphe ϕ(n) est obtenu par l’appel

Get node(x, { ψ

r

| r ∈ R } ). En particulier, la

fonction Get node v´ erifie si le graphe ϕ(n) existe

d´ ej` a dans la table de nœuds uniques, qui contient

tous les nœuds de SD cr´ e´ es au cours de la

recherche. Si le nœud demand´ e est isomorphe ` a

un nœud contenu dans la table, le nœud d´ ej` a

existant est retourn´ e ; sinon, le nœud est cr´ e´ e et

(7)

ajout´ e ` a la table.

– Si n est une feuille de l’arbre de recherche, elle correspond soit ` a une solution soit ` a un cul-de- sac. Dans le premier cas, l’algorithme renvoie le SD-feuille (l. 8) : toute instanciation est solution du probl` eme courant. Dans le deuxi` eme cas, il re- tourne le SD vide (l. 6).

– Les deux points pr´ ec´ edents suffisent ` a compiler un dFSD repr´ esentant l’ensemble des solutions du CSP initial. Pour diverses raisons expliqu´ ees dans la suite, on maintient lors de la recherche un cache, permettant d’´ eviter ` a des sous-probl` emes

´

equivalents d’ˆ etre r´ e-explor´ es. Plus pr´ ecis´ ement, chaque fois qu’un sous-probl` eme C est r´ esolu, une cl´ e k( C ) est g´ en´ er´ ee, qui d´ epend des domaines courants des variables. Cette cl´ e est enregistr´ ee avec le SD repr´ esentant ce sous-probl` eme (l. 20).

Par la suite, avant de r´ esoudre un nouveau sous- probl` eme C

0

, sa cl´ e k( C

0

) est calcul´ ee. Si cette cl´ e est d´ ej` a pr´ esente dans le cache (l. 2), on renvoie directement le SD associ´ e (l. 4).

3.2.3 Structure des SDs obtenus

Les SDs renvoy´ es par l’algorithme 1 satisfont tou- jours la propri´ et´ e de convergence. En effet, les do- maines des variables sont syst´ ematiquement r´ eduits, soit par le partitionnement de leur domaine, soit par la propagation. Les SDs obtenus sont ´ egalement d´ eter- ministes, puisque la fonction Split renvoie une parti- tion — les sous-ensembles du domaines courants sont donc disjoints.

Cependant, en fonction des heuristiques de bran- chement et de choix de variable utilis´ ees par Split et Choose var, les dFSDs obtenus peuvent varier :

– On obtient des dRSDs si Split partage le do- maine en singletons, c’est-` a-dire si l’algorithme

´

enum` ere toutes les valeurs possibles des variables durant la recherche. Au contraire, une recherche dichotomique (qui partage les domaines en deux) renvoie des dFSDs non « read-once ».

– On obtient des MDDs si Choose var suit un ordre statique ; mais utiliser des heuristiques pour gui- der le choix des variables (par exemple MinDo- main) r´ esulte le plus souvent en des dFSDs non- ordonn´ es.

3.2.4 Caching

Soit C le CSP courant ` a un nœud de recherche donn´ e n, et X

a

l’ensemble des variables assign´ ees dans C . L’exploration au nœud n retourne un SD ne mention- nant que des variables de X \ X

a

, qui repr´ esente l’en- semble des solutions sur X \ X

a

quand les variables de

X

a

sont assign´ ees ` a leur seule valeur possible. L’objec- tif est de d´ efinir des cl´ es de hachage telles que chaque cl´ e regroupe le plus possible de paires ( C , X

a

) « ´ equiva- lentes » selon l’ensemble de leurs solutions sur X \ X

a

. Intuitivement, le sous-probl` eme courant peut ˆ etre repr´ esent´ e par une cl´ e listant les domaines courants de toutes les variables. Il est possible, pour r´ eduire la taille de la cl´ e, d’utiliser la technique pr´ esent´ ee par Lecoutre et al. [16], qui consiste ` a retirer de la cl´ e les domaines des variables x qui sont assign´ ees (x ∈ X

a

) et utilis´ ees uniquement dans des contraintes n´ ecessaire- ment satisfaites dans le sous-probl` eme courant (parfois appel´ ees contraintes universelles ). Il est prouv´ e [16]

que ce m´ ecanisme conserve l’ensemble de solutions.

Soulignons que le cache est utile pour deux raisons : – si le sous-probl` eme courant est incoh´ erent, l’enre- gistrer en cache peut permettre d’´ eviter des cal- culs redondants, si la recherche m` ene ` a un sous- probl` eme ´ equivalent ult´ erieurement. C’est l’uti- lisation qu’en font Lecoutre et al. [16], qui ap- pliquent cette id´ ee ` a des algorithmes dont l’objec- tif est d’exhiber une solution (et non toutes les solutions).

– si le sous-probl` eme courant est coh´ erent, en plus d’´ eviter des calculs, enregistrer le SD associ´ e en cache peut permettre de r´ eduire la taille du SD final, si les heuristiques de s´ election de variable et de partage des domaines sont dynamiques. En effet, sans le cache, des CSPs ´ equivalents seraient explor´ es ind´ ependamment, avec des ordres de va- riables et des partages de domaines diff´ erents, sur- tout si des heuristiques al´ eatoires sont utilis´ ees.

Cela conduirait ` a des SDs non-isomorphes bien qu’ayant la mˆ eme interpr´ etation, ce que les op´ e- rations de r´ eduction ne d´ etectent pas. En utilisant le cache, on maximise les chances que les SDs ´ equi- valents soient toujours isomorphes, ce qui r´ eduit de fait la taille du SD final.

3.2.5 Minimisation du cache

Enregistrer tous les sous-probl` emes rencontr´ ees peut conduire ` a un cache de tr` es grande taille. Pour garder un cache de taille raisonnable (qui puisse ˆ etre conserv´ e dans la m´ emoire vive), nous avons choisi d’utiliser un m´ ecanisme de « restart » : la taille du cache est li- mit´ ee ` a une valeur arbitraire, et ` a chaque fois qu’elle est atteinte, une partie des entr´ ees sont supprim´ ees — l’objectif ´ etant de garder les entr´ ees les plus int´ eres- santes.

Le crit` ere de s´ election des entr´ ees ` a supprimer que

nous avons choisi est le suivant : celles qui ont ´ et´ e le

moins utilis´ ees d’abord, puis les plus anciennes, puis

les plus longues (qui correspondent aux plus petits

sous-probl` emes).

(8)

Ce compromis permet ` a l’algorithme d’ˆ etre plus ra- pide et d’utiliser moins de m´ emoire, et ainsi de compi- ler des probl` emes plus gros. En revanche, il n’am´ eliore pas le SD r´ esultant ; cela peut mˆ eme ˆ etre le contraire (voir sous-section pr´ ec´ edente).

3.3 Heuristiques

Nous d´ etaillons ici les diff´ erentes alternatives que nous avons consid´ er´ ees pour la fonction Choose var.

3.3.1 Heuristiques classiques

Nous avons utilis´ e des heuristiques standard de s´ e- lection de variables pour la r´ esolution de CSPs :

– MinDomain La variable choisie est celle qui a le plus petit domaine.

– Dom/WDeg La variable choisie est celle qui mi- nimise le ratio | Dom(x) | / deg(x), o` u deg(x) est le nombre de contraintes sur x (les contraintes ´ etant pond´ er´ ees en fonction des conflits) [6].

– Random : La variable est choisie al´ eatoirement.

3.3.2 Heuristiques bas´ ees sur le graphe de contraintes

Nous avons utilis´ e des heuristiques bas´ ees sur le graphe de contraintes (graphe dont les variables sont des nœuds, qui sont li´ es par un arc si et seulement s’il existe une contrainte liant les deux variables). Pour une variable x, on note N(x) l’ensemble des variables li´ ees ` a x dans le graphe.

Algorithm 2 Next var(O) choisit la variable suivante, en fonction d’un ordre courant O = {o

1

, . . . , o

k

}.

1:

if O = ∅ then

2:

return Argmax

x∈X

| N(x) |

3:

soit x := Argmax

x∈X\O

H

S

(x)

4:

ajouter x ` a la fin de l’ordre O

5:

return x

Les heuristiques suivantes sont bas´ ees sur l’algo- rithme 2, et font varier le crit` ere H

S

(x). Elles ont ´ et´ e introduites par Amilhastre [1].

– HBW H

S

(x) = max

1≤i≤|O|,oi∈N(x)

| O |− i (choisit en priorit´ e une voisine de o

1

, puis de o

2

, etc).

– HSBW H

S

(x) = P

1≤i≤|O|,oi∈N(x)

| O | − i (choisit une voisine des variables les plus anciennement choisies).

– MCSInv H

S

(x) = | N(x) ∩ O | (choisit la variable la plus li´ ee aux variables d´ ej` a choisies).

3.3.3 Heuristique exploitant le cache

Nous avons implant´ e une heuristique visant ` a maxi- miser l’utilisation du cache. L’id´ ee est qu’un choix de

variable menant ` a un sous-probl` eme d´ ej` a trait´ e limite le nombre de nouveaux nœuds. L’heuristique consiste donc ` a compter, pour toute variable non-assign´ ee x, le nombre n

new

(x) de branchements sur x pour les- quels il sera n´ ecessaire d’ouvrir un nouveau nœud de recherche (autrement dit, ce branchement ne m` ene ni

`

a un nœud du cache, ni ` a un probl` eme incoh´ erent).

On choisit alors la variable x minimisant n

new

(x) (en se rabattant sur HBW pour casser les ex-æquo). Nous appelons cette heuristique MaxHashUse.

3.3.4 Versions statique et dynamique

Les heuristiques MinDomain, Dom/WDeg et MaxHashUse sont toujours dynamiques : elles g´ e- n` erent le plus souvent des dFSDs non-ordonn´ es. En ce qui concerne HBW, HSBW, MCSInv et Ran- dom, il est possible de choisir un ordre statique avant le d´ ebut de la recherche, ce qui permet d’obtenir des MDDs, ou de choisir la variable dynamiquement. On appelle DynHBW, DynHSBW, DynMCSInv et DynRandom les heuristiques dynamiques correspon- dantes.

4 Exp´ erimentations

Nous avons consid´ er´ e les probl` emes suivants lors de nos exp´ erimentations avec le compilateur « Choco with a trace » :

– ObsToMem est un probl` eme de reconfiguration.

Il repr´ esente un contrˆ oleur g´ erant les connexions entre l’outil d’observation et la m´ emoire de masse d’un satellite.

– Drone est un probl` eme de planification, dans le- quel un drone doit remplir certains objectifs dans un certain nombre de zones en temps limit´ e.

– NQueens est le probl` eme des « n reines ».

– Star est le probl` eme consistant ` a colorier un graphe en ´ etoile (une variable centrale li´ ee ` a des variables ind´ ependantes les unes des autres).

4.1 Heuristiques de choix de variable

Nous comparons tout d’abord les diff´ erentes heuris- tiques de choix de variable, en fixant Split ` a un par- tage en singletons — nous obtenons donc des dRSDs.

Comme certaines de ces heuristiques n’ont pas de ver- sion statique, nous ne comparons que les versions dy- namiques. Les r´ esultats sont pr´ esent´ es figure 3. Ran- dom n’est pas incluse ici pour am´ eliorer la lisibilit´ e des graphiques, car elle donne de trop mauvais r´ esultats ; on peut les trouver dans la sous-section suivante.

Il est int´ eressant de remarquer que MinDomain

semble la meilleure heuristique pour ObsToMem et

NQueens, alors qu’elle est bien pire que les autres pour

(9)

1 1.5 2 2.5 3 0

2 4 6

·104

nd

size

ObsToMem, max com fail=50%, max mem unavail=50%

DynMCSInv Dom/WDeg MaxHashUse

DynHBW MinDom DynHSBW

2 4 6 8

0 0.5 1

·104

number of zones for each kind of action

size

Drone, given time=30

DynMCSInv Dom/WDeg MaxHashUse

DynHBW MinDom DynHSBW

0 2 4 6 8 10 12 14

0 2 4

·105

number of queens

size

N-Queens Problem

DynMCSInv Dom/WDeg MaxHashUse

DynHBW MinDom

2 4 6 8 10

0 500 1,000

number of variables

size

Star-CSP

DynMCSInv Dom/WDeg MaxHashUse

DynHBW MinDom DynHSBW

Figure 3 – Comparaison entre les heuristiques dynamiques pour les probl` emes ObsToMem, Drone, NQueens et Star

1 1.5 2 2.5 3

0 1 2 3

·105

nd

size

ObsToMem, max com fail=50%, max mem unavail=50%

Random DynRandom

DynHBW HBW

2 4 6 8

0 2 4 6

·104

number of zones for each kind of action

size

Drone, given time=30

Random DynRandom

DynHBW HBW

0 2 4 6 8 10 12 14

0 2 4

·105

number of queens

size

N-Queens Problem

Random DynRandom

DynHBW HBW

2 4 6 8 10

0 0.5 1

·104

number of variables

size

Star-CSP

HBW DynHBW

Random

Figure 4 – Comparaison entre les versions statique et dynamique de HBW et Random. Les r´ esultats pour Dyn- Random sur le probl` eme Star ne sont pas montr´ es, ´ etant bien plus mauvais que les autres (la taille du dRSD r´ esultant d´ epasse les 100 000 pour 7 variables.

Drone. Dom/WDeg n’est vraiment efficace dans au- cun des trois probl` emes. Parmi les heuristiques bas´ ees sur le graphe de contraintes, la meilleure est HBW.

MaxHashUse n’est pas mauvaise, mais ne surclasse pas HBW ; il semble que regarder seulement une ´ etape en avant ne soit pas suffisant pour maximiser l’utilisa-

tion du cache (on choisit la meilleures variable pour le

nœud suivant, ouvrant ainsi moins de nouveaux sous-

graphes, mais ces sous-graphes sont plus gros). En ce

qui concerne Star, le fait que toutes les courbes co¨ın-

cident s’explique en remarquant que toutes les heuris-

tiques choisissent la variable centrale en premier.

(10)

4.2 Comparaison entre ordres statique et dyna- mique

Nous comparons ` a pr´ esent les r´ esultats obtenus en utilisant les versions statique et dynamique d’une mˆ eme heuristique, avec la mˆ eme fonction de partage des domaines que dans la sous-section pr´ ec´ edente : on obtient respectivement des MDDs et des dRSDs. Les r´ esultats pour HBW (meilleure heuristique de la sec- tion pr´ ec´ edente) et Random sont montr´ es figure 4.

On voit que DynRandom est beaucoup plus mau- vaise que sa version statique ; en effet, le fait d’utiliser un ordre statique augmente fortement la probabilit´ e de tomber sur des nœuds isomorphes. Les r´ esultats pour DynHBW sont meilleurs que pour HBW sta- tique pour les probl` emes r´ eels, mais pas pour les pro- bl` emes plus petits (pour NQueens , les MDDs obtenus sont mˆ eme plus petits que les dRSDs). Cependant, on ne peut tirer de conclusions g´ en´ erales sur les quali- t´ es relatives des versions statique et dynamique, qui d´ ependent fortement du probl` eme et de l’heuristique consid´ er´ es ; sur la figure 5, on voit que pour le probl` eme Drone, alors que DynHBW et DynHSBW co¨ın- cident, leurs versions statiques sont tantˆ ot meilleures (HSBW) tantˆ ot moins bonnes (HBW).

2 4 6 8

500 1,000

number of zones for each kind of action

size

Drone, given time=30

HSBW DynHSBW

DynHBW HBW

Figure 5 – Comparaison entre les versions statique et dynamique de HBW et HSBW pour le probl` eme Drone.

4.3 Influence de la fonction de partage des do- maines

Nous ´ etudions ` a pr´ esent comment le choix de la fonction de partage des domaines (Split) affecte le SD r´ esultant. Utiliser un partage ´ enum´ eratif (qui di- vise le domaine en singletons) permet d’obtenir des dRSDs, tandis qu’un partage dichotomique (qui di- vise le domaine en deux) permet d’obtenir des dFSDs.

Les r´ esultats sont pr´ esent´ es figure 6. Ils sont meilleurs dans le premier cas, le nombre de nœuds cr´ e´ es ´ etant bien moindre. N´ eanmoins, cela n’implique pas qu’un dRSD est toujours plus petit qu’un dFSD ´ equivalent

— seulement que notre algorithme n’est apparemment

pas efficace pour construire des dFSDs tirant parti du relˆ achement de la contrainte « read-once ».

5 Conclusion

Dans cet article, nous avons introduit les dia- grammes ` a ´ etiquettes ensemblistes, qui g´ en´ eralisent les MDDs en relˆ achant les propri´ et´ es d’ordonnance- ment, de « read-once » et de d´ eterminisme. Nous avons pr´ esent´ e un algorithme permettant de compi- ler des CSPs discrets en diverses sortes de SDs d´ e- terministes (dFSDs, dRSDs et MDDs), en ´ etendant l’approche « DPLL with a trace » sur un solveur de CSP. Nous avons montr´ e comment le choix de cer- tains param` etres de recherche (choix de la variable de branchement et du partage des domaines) affectent la structure du dSD r´ esultant. En utilisant notre im- plantation de ce compilateur (bas´ ee sur le solveur de CSP Choco), sur deux probl` emes r´ eels et deux CSPs classiques, nous avons pr´ esent´ e des r´ esultats exp´ eri- mentaux ` a propos de l’influence de ces param` etres sur la taille des formes compil´ ees. Ces r´ esultats montrent qu’aucune des heuristiques de choix de variable que nous avons utilis´ ees ne surclasse les autres pour tous les probl` emes ; la recherche d’une heuristique globa- lement efficace reste ouverte. Ils montrent ´ egalement que le compilateur que nous avons d´ evelopp´ e semble ˆ

etre utilisable pour compiler des SDs « read-once », mais pas purement convergents.

Notre travail s’oriente vers une ´ etude plus approfon- die des heuristiques de choix de variable, en particu- lier MaxHashUse. Plus g´ en´ eralement, un de nos ob- jectifs est de compiler efficacement des SDs purement convergents, ainsi que des SDs non-d´ eterministes. Il se- rait ´ egalement int´ eressant d’ajouter des nœuds ET aux SDs, obtenant ainsi un langage proche des AOMDDs ; cela permettrait de comparer la compilation de CSPs en AOMDDs avec des ordres arborescents statiques et dynamiques.

R´ ef´ erences

[1] J. Amilhastre.Repr´esentation par automate d’ensemble de solutions de probl`emes de satisfaction de contraintes. PhD thesis, Universit´e Montpellier II, 1999.

[2] J. Amilhastre, H. Fargier, and P. Marquis. Consistency Restoration and Explanations in Dynamic CSPs — Appli- cation to Configuration. AIJ, 135(1–2) :199–234, 2002.

[3] J. Amilhastre, P. Vilarem, and M.-C. Vilarem. FA Minimi- sation Heuristics for a Class of Finite Languages. InWIA, pages 1–12, 1999.

[4] H. R. Andersen, T. Hadzic, J. N. Hooker, and P. Tiede- mann. A Constraint Store Based on Multivalued Decision Diagrams. InCP, pages 118–132, 2007.

[5] J. Bern, J. Gergov, C. Meinel, and A. Slobodov´a. Boolean manipulation with free bdd’s. first experimental results. In EDAC-ETC-EUROASIC, pages 200–207, 1994.

(11)

1 1.5 2 2.5 3 0

1 2 3

·105

nd

size

ObsToMem, max com fail=50%, max mem unavail=50%

HBW Dicho DynHBW Enum DynHBW Dicho HBW Enum

1 2 3 4 5 6 7 8

0 1,000 2,000

number of zones for each kind of action

size

Drone, given time=30

HBW Dicho DynHBW Enum DynHBW Dicho HBW Enum

0 2 4 6 8 10 12 14

0 1 2 3 4

·105

number of queens

size

N-Queens Problem

HBW Dicho DynHBW Enum DynHBW Dicho HBW Enum

2 4 6 8 10

0 0.5 1 1.5

·104

number of variables

size

Star-CSP

HBW Dicho DynHBW Enum DynHBW Dicho HBW Enum

Figure 6 – Comparaison entre fonctions de partage de domaines dichotomique et ´ enum´ erative. La compilation des instances d’ObsToMem non repr´ esent´ ees sur le graphique a ´ et´ e interrompue en raison d’un trop grand nombre de nœuds (plus de 700 000).

[6] F. Boussemart, F. Hemery, C. Lecoutre, and L. Sais. Boos- ting systematic search by weighting constraints. InECAI, pages 146–150, 2004.

[7] R. Bryant. Graph-Based Algorithms for Boolean Func- tion Manipulation. IEEE Transactions on Computers, 35(8) :677–691, 1986.

[8] H. Cambazard, T. Hadzic, and B. O’Sullivan. Knowledge Compilation for Itemset Mining. In ECAI, pages 1109–

1110, 2010.

[9] choco Team. choco : an open source java constraint pro- gramming library. Research report 10-02-INFO, Ecole des Mines de Nantes, 2010.

[10] F. Giunchiglia and P. Traverso. Planning as Model Che- cking. InECP, pages 1–20, 1999.

[11] T. Hadzic, E. Hansen, and B. B. O’Sullivan. On Auto- mata, MDDs and BDDs in Constraint Satisfaction. In ECAI Workshop on Inference methods based on Graphi- cal Structures of Knowledge (WIGSK), 2008.

[12] T. Hadzic, J. N. Hooker, B. O’Sullivan, and P. Tiedemann.

Approximate compilation of constraints into multivalued decision diagrams. InCP, pages 448–462, 2008.

[13] J. Hoey, R. St-Aubin, A. J. Hu, and C. Boutilier. SPUDD : Stochastic Planning Using Decision Diagrams. In UAI, pages 279–288, 1999.

[14] J. Huang and A. Darwiche. DPLL with a Trace : From SAT to Knowledge Compilation. InIJCAI, pages 156–162, 2005.

[15] T. Kam, T. Villa, R. Brayton, and A. Sangiovanni- Vincentelli. Multi-valued Decision Diagrams : Theory and Applications. Multiple-Valued Logic, 4(1–2) :9–62, 1998.

[16] C. Lecoutre, L. Sais, S. Tabary, and V. Vidal. Transposition tables for constraint satisfaction. InAAAI, pages 243–248, 2007.

[17] J. Lind-Nielsen. BuDDy : Binary Decision Diagrams Li- brary Package, release 2.4, 2002. http://sourceforge.

net/projects/buddy/.

[18] R. Mateescu, R. Dechter, and R. Marinescu. AND/OR multi-valued decision diagrams (AOMDDs) for graphical models. J. Artif. Intell. Res. (JAIR), 33 :465–519, 2008.

[19] A. Niveau, H. Fargier, and C. Pralet. Representing CSPs with set-labeled diagrams : A compilation map. InProc. of the 2nd International Workshop on Graph Structures for Knowledge Representation and Reasoning (GKR), 2011.

[20] A. Niveau, H. Fargier, C. Pralet, and G. Verfaillie. Know- ledge compilation using interval automata and applications to planning. InECAI, pages 459–464, 2010.

[21] F. Somenzi. CUDD : Colorado University Decision Dia- gram package, release 2.4.1, 2005.http://vlsi.colorado.

edu/~fabio/CUDD/.

[22] A. Srinivasan, T. Ham, S. Malik, and R. Brayton. Algo- rithms for discrete function manipulation. In ICCAD-90, pages 92 –95, Nov. 1990.

[23] K. Strehl and L. Thiele. Symbolic model checking of process networks using interval diagram techniques. In Proc. of the 1998 IEEE/ACM international conference on Computer-aided design, pages 686–692, 1998.

[24] P. Torasso and G. Torta. Model-Based Diagnosis Through OBDD Compilation : A Complexity Analysis. In Reaso- ning, Action and Interaction in AI Theories and Systems, pages 287–305, 2006.

[25] N. R. Vempaty. Solving Constraint Satisfaction Problems Using Finite State Automata. In AAAI, pages 453–458, 1992.

Références

Documents relatifs

Sauvegarder votre script R : En activant la fenˆ etre qui le contient (celle du haut ` a gauche : le curseur doit clignoter en noir) puis en allant de nouveau dans la barre de menu

– Dans un mˆ eme exercice, on peut admettre pour traiter une question les r´ esultats des questions pr´ ec´ edentes mˆ eme s’ils n’ont pas ´ et´ e d´ emontr´ es..

– Dans un mˆ eme exercice, on peut admettre pour traiter une question les r´ esultats des questions pr´ ec´ edentes mˆ eme s’ils n’ont pas ´ et´ e d´ emontr´ es..

– Dans un mˆ eme exercice, on peut admettre pour traiter une question les r´ esultats des questions pr´ ec´ edentes mˆ eme s’ils n’ont pas ´ et´ e d´ emontr´ es.. – La

– Dans un mˆ eme exercice, on peut admettre pour traiter une question les r´ esultats des questions pr´ ec´ edentes mˆ eme s’ils n’ont pas ´ et´ e d´ emontr´ es. – La

• Dans un mˆ eme exercice, on peut admettre pour traiter une question les r´ esultats des questions pr´ ec´ edentes mˆ eme s’ils n’ont pas ´ et´ e d´ emontr´ es..

• Dans un mˆ eme exercice, on peut admettre pour traiter une question les r´ esultats des questions pr´ ec´ edentes mˆ eme s’ils n’ont pas ´ et´ e d´ emontr´ es..

• Dans un mˆ eme exercice, on peut admettre pour traiter une question les r´ esultats des questions pr´ ec´ edentes mˆ eme s’ils n’ont pas ´ et´ e d´ emontr´ es.