• Aucun résultat trouvé

Les probl` emes CSP, #CSP et WCSP

2.2 Probl` eme de satisfaction de contraintes : CSP

Le probl`eme de satisfaction de contraintes (CSP) est suffisamment expressif et g´en´eral pour pouvoir avoir des domaines d’application tr`es vastes comme l’ordonnancement de tˆaches avec ou sans ressources, l’´elaboration d’emplois du temps, la planification, la confi-guration, le raisonnement, la r´esolution des jeux et de nombreux autres probl`emes r´eels ou acad´emiques. La brique de base `a l’origine de sa puissance est la notion de contrainte. Une contrainte est un crit`ere ou une propri´et´e portant sur certains objets appel´es va-riables et les mettant en relation. Cette contrainte limite les valeurs que peuvent prendre simultan´ement ces variables. Ces valeurs sont s´electionn´ees parmi l’ensemble des valeurs possibles d’une variable appel´e, son domaine. Le but du probl`eme est d’attribuer `a chaque variable du probl`eme une valeur de son domaine de sorte que toutes les contraintes soient satisfaites, c’est-`a-dire que, pour chaque contrainte, les valeurs de ses variables sont com-patibles vis-`a-vis de la propri´et´e qu’elle d´efinit. La place que ce probl`eme occupe `a la fois en intelligence artificielle et en recherche op´erationnelle est dˆue `a la grande vari´et´e de types de contraintes existantes alg´ebriques, temporelles, g´eom´etriques. . . Cela lui offre un pou-voir de mod´elisation important. Le probl`eme le plus connu parmi les probl`emes associ´es `

a une instance CSP consiste `a dire si une telle attribution de valeurs est possible. Il s’agit d’un probl`eme de d´ecision qui est NP-complet. C’est ainsi le prix `a payer pour avoir ce niveau d’expressivit´e. Heureusement, ce probl`eme admet, de nos jours, des m´ethodes de r´esolution efficaces grˆace `a l’essor qu’il a connu ces 40 derni`eres ann´ees. Nous regardons ainsi, de plus pr`es, ce probl`eme dans cette partie.

2.2.1 Formalisme

Nous donnons maintenant la d´efinition formelle d’une instance du probl`eme de satis-faction de contraintes (CSP) [Montanari, 1974].

D´efinition 32 Une instance du probl`eme de satisfaction de contraintes CSP est d´efinie par la donn´ee d’un triplet P = (X, D, C) o`u :

• X = {x1, x2, . . . , xn} est un ensemble de n variables,

• D = {Dx1, Dx2, . . . , Dxn} est un ensemble de domaines finis tel que chaque Dxi

• C = {c1, c2, . . . , cm} est un ensemble de m contraintes. Chaque contrainte ci est un couple (S(ci), R(ci)) o`u :

– S(ci) = {xi1, xi2, . . . , xiq} ⊆ X est la port´ee de ci avec |S(ci)| l’arit´e de la contrainte ci,

– R(ci)⊆ Dxi1 × Dxi2 × · · · × Dxiq est sa relation de compatibilit´e.

L’arit´e maximale des contraintes r est ´egale `a maxci∈C|S(ci)|. La taille maximum des domaines d est maxxi∈X|Dxi|.

Les instances CSP consid´er´ees dans cette th`ese sont dites normalis´ees.

D´efinition 33 [Apt, 2003; Bessiere, 2006] Une instance CSP P est dite normalis´ee ssi il n’existe pas deux contraintes diff´erentes ci et cj dans C telles que S(ci) = S(cj).

Une instance CSP peut ˆetre binaire ou n-aire.

D´efinition 34 Une instance CSP est dite binaire si l’arit´e de chaque contrainte ci ∈ C est ´egale au plus `a 2. Si l’arit´e d’une contrainte est sup´erieure `a 2, l’instance CSP est dite n-aire.

Notons qu’une contrainte portant uniquement sur deux variables est dite binaire. Une contrainte binaire portant sur les variables xi et xj sera not´ee cij. Au contraire, une contrainte dont la port´ee contient plus que deux variables est dite n-aire.

Les relations associ´ees `a ces contraintes peuvent ˆetre repr´esent´ees en extension ou en intention. Pour repr´esenter la relation d’une contrainte en extension, les tuples des va-leurs autoris´es (supports) ou interdits (conflits) sont ´enum´er´es. Par exemple, (X, D, C) avec X = {x1, x2}, D = {{1, 2}, {1, 2}} et C = {c1 = ({x1, x2}, {(1, 1), (2, 1), (2, 2)})} est une instance CSP contenant une seule contrainte c1 dont la relation est exprim´ee en extension. Il s’agit de la contrainte x1 est plus grand ou ´egal `a x2 . La mˆeme rela-tion peut ˆetre repr´esent´ee en intenrela-tion en utilisant des propri´et´es math´ematiques connues comme le pr´edicat x1 ≥ x2. Une contrainte exprim´ee initialement en intention peut ˆetre exprim´ee en extension. En pratique, l’utilisation d’une repr´esentation ou l’autre n’est pas sans cons´equences. La repr´esentation des contraintes en extension peut induire des coˆuts en espace m´emoire tr`es importants du fait du nombre de tuples ´enum´er´es qui peut ˆetre tr`es ´elev´e. Une repr´esentation en intention peut r´eduire significativement l’espace m´emoire re-quis. Le test de satisfaction d’une contrainte par un tuple a, `a son tour, un coˆut en temps diff´erent selon que les contraintes soient repr´esent´ees en extension ou en intention. Par exemple, Si les contraintes sont repr´esent´ees en extension, le test de satisfaction se ram`ene `

a la recherche du tuple dans la table des tuples correspondante. Ce test peut ainsi ˆetre fait en temps constant grˆace `a une impl´ementation judicieuse. Sinon, ce test consiste `a v´erifier la formule ou le pr´edicat en question. Par cons´equent, ce coˆut peut ne pas ˆetre constant.

Une contrainte globale est l’une des meilleures repr´esentations d’une contrainte ayant un nombre trop important de tuples. Cette contrainte a une signification implicite. Sa d´efinition telle qu’´evoqu´ee dans [Lecoutre, 2013] est :

D´efinition 35 Une contrainte globale est un mod`ele de contrainte qui capture des rela-tions ayant une s´emantique pr´ecise et qui peut impliquer un nombre quelconque de va-riables.

Nous pouvons citer par exemple la contrainte allDifferent qui signifie que toutes les va-riables entrant en jeu doivent imp´erativement avoir des valeurs diff´erentes. Il est facile de

voir que cette contrainte peut porter sur un nombre quelconque de variables. Pour plus d’informations sur les contraintes globales, le lecteur peut se r´ef´erer `a [Beldiceanu et al., 2005; van Hoeve and Katriel, 2006] par exemple.

La structure d’une instance CSP P = (X, D, C) est donn´ee par un hypergraphe appel´e hypergraphe de contraintes, tel que :

• chaque sommet repr´esente une variable de X,

• chaque hyperarˆete correspond `a la port´ee S(ci) d’une contrainte ci de C. Notons que, dans le cas d’une instance CSP binaire, l’hypergraphe est un graphe.

Exemple 1 Consid´erons maintenant l’exemple suivant. Robert est un p`ere de famille qui a 6 enfants. Il dispose des billets de 5, 10, 20 et 50 euros et des pi`eces de 1 ou 2 euros. Il veut donner de l’argent `a ses enfants `a raison d’un billet ou d’une pi`ece par enfant. Comme il est un peu maniaque des math´ematiques, il ´elabore un ensemble de contraintes alg´ebriques pour la distribution de l’argent. Les contraintes expriment des relations alg´ebriques relati-vement simples comme le fait qu’un fils recevra plus d’argent qu’un autre ou que la somme de l’argent de 3 fils devra ˆetre inf´erieure `a une somme donn´ee. Ce probl`eme peut ˆetre repr´esent´e sous forme d’une instance CSP P comme suit :

• X = {x1, x2, x3, x4, x5, x6}, • D = {Dx1, Dx2, Dx3, Dx4, Dx5, Dx6} avec Dxi ={1, 2, 5, 10, 20, 50}, ∀1 ≤ i ≤ 6, • C = {c1, c2, c3, c4} avec : – c1= ({x1, x2}, x2 ≥ x1), – c2= ({x1, x5}, 3x1+ x5> 50), – c3= ({x3, x4, x5}, x3+ x4+ x5< 8), – c4= ({x4, x5, x6}, 2x4+ x5 = x6).

Dans cet exemple, X est l’ensemble des 6 enfants avec une variable par enfant. Chaque variable xi peut prendre une valeur parmi les valeurs de Dxi repr´esentant les valeurs des billets et des pi`eces dont dispose Robert. d est alors ´egal `a 6. Les relations associ´ees aux contraintes sont repr´esent´ees en intention par des ´equations et des in´equations. Elles peuvent aussi ˆetre repr´esent´ees par des tables de compatibilit´e. R(c3) est alors repr´esent´ee par la table 2.1. Les contraintes c3 et c4 portent sur le plus grand nombre de variables (3 variables). D’o`u, r est ´egal `a 3. Ce probl`eme peut ˆetre repr´esent´e par l’hypergraphe de contraintes de la figure 2.2 contenant 6 sommets et 4 hyperarˆetes.

2.2.2 S´emantique

Maintenant que nous avons d´efini formellement le probl`eme de satisfaction de con-traintes (CSP), nous allons nous int´eresser `a sa s´emantique.

Une notion pr´eliminaire est la notion d’affectation. On emploie ´egalement les termes d’instanciation ou d’assignation.

D´efinition 36 Soit P = (X, D, C) une instance CSP. L’ affectation d’une variable xi de X est l’attribution d’une valeur vi `a xi telle que vi ∈ Dxi. Elle est not´ee xi ← vi. Elle est ´egalement d´efinie pour X sous-ensemble de X avec X = {xi1, xi2, . . . , xiq}. A est appel´ee affectation de X si elle associe `a chaque variable xip de X avec 1≤ p ≤ q, une valeur vip ∈ Dxip.

R(c3) : x3+ x4+ x5< 8 x3 x4 x5 1 1 1 1 1 2 1 1 5 1 2 1 1 2 2 1 5 1 2 1 1 2 1 2 2 2 1 2 2 2 5 1 1

Figure 2.1 – La relation associ´ee `a la contrainte c3 donn´ee en extension (supports).

x1 x2 x3 x4 x5 x6 c1 c2 c3 c4

Figure 2.2 – L’hypergraphe de contraintes correspondant `a l’instance P .

Une affectationA peut ˆetre repr´esent´ee sous forme d’une association variable/valeur, c’est-`

a-dire : A = {xi1 ← vi1, xi2 ← vi2, . . . , xiq ← viq} ou simplement comme une s´equence de valeurs (vi1, vi2, . . . , viq). L’ordre des variables de X est implicite. Une affectation qui porte sur toutes les variables de X est dite compl`ete, elle est dite partielle sinon. Ainsi, si XA note l’ensemble de variables sur lesquelles porte l’affectation A, A est dite compl`ete si XA= X et partielle sinon.

Nous pouvons aussi restreindre l’affectationA `a un sous-ensemble de XA.

D´efinition 37 Soit A une affectation et X ⊆ XA. La projection de A sur X, not´ee A[X], est la restriction de A aux variables de X.

Dans l’exemple 1, une affectationA compl`ete de X peut ˆetre : A = {x1← 1, x2 ← 5, x3 ← 50, x4← 10, x5 ← 20, x6← 50}. A[{x1, x2}] = {x1 ← 1, x2 ← 5}.

Une contrainte peut ˆetre satisfaite, viol´ee ou ni l’un, ni l’autre par une affectation. D´efinition 38 Soient P une instance CSP et A une affectation donn´ee. A satisfait la contrainte ci = (S(ci), R(ci)) de C si S(ci) ⊆ XA et A[S(ci)] ∈ R(ci). Au contraire, A viole ci si S(ci)⊆ XA etA[S(ci)] /∈ R(ci).

Dans l’exemple 1, l’affectation A satisfait la contrainte c1 vu que A[{x1, x2}] = (1, 5) ∈ R(c1) (5≥ 1) mais viole c2 puisque A[{x1, x5}] = (1, 20) /∈ R(c2) (3.1 + 20 = 23 < 50).

Nous d´efinissons maintenant la notion d’affectation coh´erente.

D´efinition 39 ´Etant donn´ee une instance CSP P = (X, D, C), une affectation A d’un sous-ensemble de variables de X est coh´erente ssi :

∀ci∈ C telle que S(ci)⊆ XA, A satisfait ci.

En d’autres termes, une affectation est coh´erente si elle ne viole aucune contrainte. La v´erification de la coh´erence d’une affectation s’effectue en temps polynomial.

Cette d´efinition nous m`ene `a la d´efinition d’une solution d’une instance CSP.

D´efinition 40 Une solution d’une instance CSP P = (X, D, C) est une affectation compl`ete coh´erente. L’affectation satisfait alors toutes les contraintes de P . L’ensemble de solutions de P est not´e SolP.

Il est `a noter que v´erifier si une affectation compl`ete est une solution est un probl`eme traitable en temps polynomial. Dans l’exemple 1, l’affectation compl`eteA sp´ecifi´ee n’est pas une solution puisqu’elle viole c2. Nous pouvons facilement v´erifier dans l’exemple 1 que l’affectationA = {x1 ← 20, x2 ← 50, x3 ← 2, x4 ← 2, x5← 1, x6 ← 5} est une solution du probl`eme.

Finalement, nous d´efinissons une instance CSP coh´erente.

D´efinition 41 Une instance CSP P = (X, D, C) est dite coh´erente ssi SolP 6= ∅

Autrement dit, une instance CSP P est coh´erente si elle admet au moins une solution et incoh´erente sinon. L’instance de l’exemple 1 est ainsi coh´erente car elle admet au moins une solution.

Une propri´et´e importante sur les affectations est la coh´erence globale.

D´efinition 42 ´Etant donn´ee une instance CSP P = (X, D, C), une affectation A sur un sous-ensemble de variables de X est dite globalement coh´erente ssi il existe une solution S de SolP telle que A ⊆ S.

Dans l’exemple 1, A = {x1 ← 20, x2 ← 50} est une affectation globalement coh´erente car S = {x1 ← 20, x2 ← 50, x3 ← 2, x4 ← 2, x5 ← 1, x6 ← 5} est une solution de cette instance.

Nous fournissons ´egalement la d´efinition de l’´equivalence des instances CSP.

D´efinition 43 Deux instances CSP P = (X, D, C) et P = (X, D, C) sont dites ´equi-valentes ssi SolP = SolP.

D’apr`es cette d´efinition, r´esoudre P est ´equivalent `a r´esoudre P puisqu’elles ont le mˆeme ensemble de solutions. Cette ´equivalence est d’une grande importance. Grˆace `a l’´equivalence des instances CSP, nous pouvons, pour la r´esolution de P , consid´erer le probl`eme P dont la r´esolution est ´eventuellement plus simple. Dans l’exemple 1, en constatant que la somme des variables x3, x4 et x5 doit ˆetre inf´erieure `a 8, nous pouvons facilement d´eduire que ces variables ne peuvent pas avoir les valeurs 10, 20 ou 50. Ainsi, la suppression de ces 3 valeurs des domaines Dx3, Dx4 et Dx5 r´esultent en une nouvelle instance CSP ´equivalente `

a la premi`ere parce qu’elle ne modifie pas l’ensemble des solutions de P . Or, comme la taille des domaines est d´esormais plus petite, la r´esolution du nouveau probl`eme est a priori plus simple vu que le nombre d’affectations compl`etes possibles est plus faible.

´

• Une instance CSP est elle coh´erente ? : il s’agit d’un probl`eme de d´ecision qui est NP-complet,

• Calculer le nombre de solutions, • Rechercher une ou toutes les solutions,

• Trouver un ensemble des valeurs qui figure dans l’ensemble de solutions, • . . .

La difficult´e th´eorique et pratique varie d’un probl`eme `a l’autre. Ainsi, dire si une instance CSP poss`ede une solution est sˆurement moins difficile que le fait de compter toutes les solutions de cette derni`ere. Ce fait est constat´e en pratique, mais est aussi prouv´e en th´eorie vu que le premier est NP-complet tandis que le deuxi`eme est #P-complet. Dans cette th`ese, nous nous int´eressons aux questions de l’existence d’une solution et du d´enombrement des solutions d’une instance.

2.2.3 Solveurs modernes

La r´esolution du probl`eme CSP a consid´erablement ´evolu´e durant la derni`ere d´ecennie. Si nous parlions avant d’une m´ethode de r´esolution, aujourd’hui la m´ethode de r´esolution employ´ee n’est plus qu’une instanciation possible d’un solveur. Notons d’ailleurs que ce fait peut ˆetre facilement constat´e dans les comp´etitions CSP organis´ees. Les solveurs modernes rassemblent des techniques et des m´ecanismes diversifi´es plus ou moins sophistiqu´es. Ils t´emoignent d’une efficacit´e remarquable, ce qui a permis de mettre en valeur davantage le cadre CSP. Le point de vue nouvellement adopt´e par certains travaux comme [Puget, 2004; Gent et al., 2006] au sein de la communaut´e consiste `a consid´erer le solveur comme une boˆıte noire. Selon les partisans de ce point de vue, le principal d´efi qui se pose `a la programmation par contraintes est la simplicit´e de l’utilisation. L’enjeu ne se limite pas `a la r´esolution de l’instance en question mais s’´etend `a la mod´elisation de l’instance elle-mˆeme. D’une part, la prise en compte de contraintes h´et´erog`enes a enrichi le cadre CSP et lui a fait gagn´e en pouvoir de mod´elisation et en int´erˆet pratique depuis les ann´ees 90. D’autre part, la mod´elisation d’un probl`eme est devenue plus difficile et pourrait n´ecessiter une expertise afin de profiter pleinement des algorithmes li´es `a chaque type de contrainte (les contraintes globales par exemple) [Lecoutre, 2013]. Au-del`a de la mod´elisation, id´ealement, l’utilisateur ne doit pas ˆetre conscient des techniques et des algorithmes employ´es pour la r´esolution de l’instance. Au contraire, seules les entr´ees et les sorties du solveur lui seront visibles. Il n’est pas ainsi responsable de modifier, d’´etendre ou d’adapter le solveur `

a l’instance `a r´esoudre. En effet, un bon solveur est capable de s’adapter `a l’instance `a r´esoudre par le biais des techniques sophistiqu´ees qui y sont impl´ement´ees. Ce faisant, le solveur permet de compenser les d´efauts de la mod´elisation tout en gagnant en robustesse. Par cons´equent, l’efficacit´e du solveur est am´elior´ee. Se rapprocher davantage d’un solveur boˆıte noire, faciliterait son emploi par des non experts ce qui augmenterait potentiellement l’impact de la programmation par contraintes dans le monde industriel et acad´emique.

Dans la suite de cette section, nous examinerons les diff´erents ´el´ements constitutifs d’un solveur montr´es dans la figure 2.3. Les principales briques de base sont :

• le type de branchement, • le filtrage,

SOLVEUR filtrage branchement heuristique var/val enregistrement red´emarrage retour-arri`ere structure choix racine heuristique cluster choix d´ecomposition

Figure2.3 – Les principales techniques int´egr´ees dans un solveur.

• les enregistrements,

• les heuristiques de choix de variables/valeurs, • les red´emarrages,

• l’exploitation de la structure.

Nous nous int´eressons donc au type de branchement exploit´e (binaire ou d-aire), aux tech-niques de filtrage ´eventuellement utilis´ees en pr´etraitement et pendant la r´esolution, et aux retours-arri`ere chronologiques ou non chronologiques employ´es. Nous nous focalisons ´egalement sur les enregistrements pouvant ˆetre r´ealis´es, sur les heuristiques de choix de variables et de valeurs employ´ees et sur les red´emarrages qui seront probablement ex-ploit´es. Finalement, nous nous concentrons sur l’exploitation de la structure `a laquelle nous accorderons un int´erˆet particulier vu que l’objectif principal de cette th`ese consiste `a am´eliorer les m´ethodes structurelles. Malheureusement, les solveurs actuels exploitent

rarement cette brique qui est le plus souvent absente. Sa pr´esence dans un solveur est l’une des ambitions de ce travail. Un algorithme de r´esolution est une configuration pr´ecise de ces diff´erents param`etres.

2.2.4 R´esolution dans le cas g´en´eral

Diff´erentes techniques de r´esolution du probl`eme CSP ont ´et´e d´evelopp´ees. Elles peu-vent ˆetre class´ees en m´ethodes compl`etes ou incompl`etes. Les m´ethodes compl`etes ga-rantissent de v´erifier l’existence d’une solution ou `a en d´etecter l’absence sinon. Si la m´ethode n’est pas compl`ete, elle est dite incompl`ete. Les m´ethodes incompl`etes sont connues par leur efficacit´e vu qu’elles sacrifient la compl´etude. Les algorithmes de re-cherche locale [Hoos and St¨utzle, 2004; Hoos and Tsang, 2006] sont qualifi´es d’incomplets. Ils permettent g´en´eralement de trouver une solution dans untemps raisonnable, mais ne permettent pas d’en d´eduire l’absence. Dans cette th`ese, nous nous int´eressons unique-ment aux m´ethodes compl`etes.

Les m´ethodes compl`etes mettent en avant deux cat´egories d’algorithmes : • les algorithmes de recherche ´enum´eratifs1 classiques [Beek, 2006],

• les algorithmes bas´es sur la programmation dynamique [Bertele and Brioschi, 1972; Dechter, 2006].

Les algorithmes ´enum´eratifs entrelacent recherche arborescente et simplification du probl`e-me par le biais des m´ethodes de filtrage. Le probl`eprobl`e-me CSP est connu pour ˆetre NP-complet. C’est ainsi que les m´ethodes de r´esolution ´enum´eratives existantes sont exponentielles en n en temps. Nous nous int´eressons dans un premier temps aux algorithmes ´enum´eratifs classiques qui n’exploitent pas la structure du probl`eme, du moins explicitement.

Dans un second temps, nous nous focalisons sur les m´ethodes dites structurelles. Ces m´ethodes ont suscit´e l’engouement de la communaut´e en raison de leur complexit´e th´eorique temporelle avantageuse par rapport aux autres m´ethodes ´enum´eratives clas-siques. Pour y parvenir, ces m´ethodes exploitent la structure de l’(hyper)graphe de con-traintes repr´esentant le probl`eme CSP en question. Nous nous concentrons sur les m´ethodes `

a base de la d´ecomposition arborescente dont nous avons d´ej`a vu la d´efinition dans la partie 1.3.1 et les m´ethodes de calcul dans la partie 1.3.2. En effet, l’objectif de cette th`ese est de faire ´evoluer les m´ethodes de r´esolution `a base d’une d´ecomposition arborescente que ce soit pour le probl`eme CSP, #CSP ou le probl`eme WCSP. Derri`ere cet int´erˆet se cache la notion des classes polynomiales. Comme tout probl`eme NP-complet, la NP-compl´etude du probl`eme CSP ne signifie pas forc´ement qu’il n’existe pas de classes d’instances pouvant ˆetre r´esolues en temps polynomial. Une classe polynomiale est un ensemble d’instances qui admettent un algorithme capable de les r´esoudre en temps polynomial. Nous expliquons le lien entre les classes polynomiales et les d´ecompositions arborescentes dans la partie d´edi´ee aux m´ethodes structurelles.

Dans ce qui suit, nous d´etaillons d’abord les diff´erentes briques d’un solveur avant de nous focaliser sur l’exploitation de la structure. Tous les algorithmes de r´esolution se basent sur l’algorithme na¨ıf Generate and test. Il consiste `a g´en´erer toutes les affectations compl`etes possibles en visitant la totalit´e de l’espace de recherche. Il proc`ede ensuite `

a la v´erification de la coh´erence de ces affectations. ´Evidemment, cet algorithme explose