Vous êtes sur la page 1sur 36

Rsolution pratique de problmes NP-complets

FERRO Luca KHIN Samith 26 juin 2005 SALMAN Nader

Prface
Linformatique sest dveloppe partir de la seconde moiti du XX me sicle pour apprendre se servir du nouvel outil qutait lordinateur. Pendant longtemps linformatique na donc t quune forme dartisanat quon apprenait plus ou moins sur le tas par la mthode des essais et des erreurs. Cependant, cette monte en force de linformatique fut associe une monte fulgurante de problmes informatiques de tout genre. La technologie des ordinateurs sest dveloppe un rythme ern, rendant possible le traitement de problmes de plus en plus compliques. Mais les problmes sont devenu notre poque tellement complexes quil nest plus possible ltre humain de compter uniquement sur la puissance de son ordinateur ni mme sur celle de son super calculateur. Cest pour tenter de rsoudre ces problmes dordre physique que linformatique sest base sur direntes techniques algorithmiques heuristiques et de Programmation par contrainte. Cest ainsi quaprs nous tre penchs sur le problme que notre intrt ne fut sans cesse que monter. Notre travail dtude porte donc sur la rsolution pratique des problmes informatiques dits NP-complets par la programmation par contraintes. Nous allons donc vous exposer dans ce qui suit ce que sont les problmes NP-complets et quelles sont les direntes techniques utilises pour les rsoudre dans la thorie avant dexposer les techniques de rsolution pratique, et nalement en tirer notre conclusion.

Introduction
Un grand nombre de problmes en intelligence articielle et dans dautres domaines de linformatique peuvent tre interprts comme des cas spciaux de problmes de satisfaction de contraintes. Quelques exemples dapplications sont la conception et la maintenance de demploi du temps dans divers domaines de lindustrie et de lconomie, les problmes de graphe, le design des plan de construction et les problmes de satisabilit. Un nombre dirent dapproches on t dvelopp. Certaines dentre elles utilisent la propagation des contraintes pour simplier le problme. Dautre utilisent direntes techniques de recherche sur le problme pour trouver la solution. Dautre encore utilisent des algorithmes probabilistes. Enn, la combinaison de ces direntes techniques permet de trouver des algorithmes encore plus performants. Toutes ces techniques tendent vers le mme but : rsoudre les problmes poss en vue de trouver des solutions le plus optimales possible et en un minimum de temps.

Table des matires


1 Les 1.1 1.2 1.3 1.4 1.5 problmes NP-complets : thorie Introduction . . . . . . . . . . . . . . . . Un peu de vocabulaire gnral . . . . . . Les dirents classements . . . . . . . . Quest ce quun problme NP-complet ? Exemples . . . . . . . . . . . . . . . . . 1.5.1 n-Dames . . . . . . . . . . . . . . 1.5.2 Coloriage dune carte . . . . . . 1.6 Rexions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 6 9 11 11 12 15 16 16 16 17 17 17 18 20 20 20 21 21 23 27 29 29 34

2 Programmation par contraintes : pratique 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . 2.2 Quest ce quune Contrainte ? . . . . . . . . . . . 2.2.1 Quelques caractristiques des contraintes 2.2.2 Dnition dune contrainte . . . . . . . . 2.2.3 Arit dune contrainte . . . . . . . . . . . 2.2.4 Dirents types de contraintes . . . . . . 2.3 Quest ce quun CSP ? . . . . . . . . . . . . . . 2.3.1 Dnition dun CSP . . . . . . . . . . . 2.3.2 Vocabulaire CSP appliqu un exemple . 2.4 Quelques outils PPC . . . . . . . . . . . . . . . . 2.4.1 Filtrage . . . . . . . . . . . . . . . . . . . 2.4.2 Heuristiques . . . . . . . . . . . . . . . . . 2.4.3 Recherche locale . . . . . . . . . . . . . . 2.5 Exemples . . . . . . . . . . . . . . . . . . . . . . 2.5.1 Retour sur les n-Dames . . . . . . . . . . 2.5.2 Retour sur le coloriage de la carte . . . .

Chapitre 1

Les problmes NP-complets : thorie


1.1 Introduction

Les problmes NP-complets recouvrent une trs grande partie dans le domaine de recherche Informatique : SAT (satisfaction dexpressions boolennes), CSP (problmes de satisfaction de contraintes), Programmation Linaire, Programmation par Contraintes, Thorie des Graphes, Combinatoire , etc. Imaginons que lon ait un ensemble ni dune part et une proprit logique facile vrier dautre part, la NP-compltude serait alors la question de savoir sil existe ou non un lment de cet ensemble satisfaisant cette proprit. Il sagit donc dun problme dcisionnel. Le premier problme NP-complet, la satisabilit dune formule logique binaire, a t tabli en 1971 par Stephen Cook. Depuis lors, de nombreux autres problmes NP-complets ont t identis ou prouvs mais certains (beaucoup en ralit !) sont considrs comme intraitables par les ordinateurs (voir la satisfaction dune formule de logique, la coloration dun graphe, la couverture des sommets, les cycles hamiltoniens). Limpossibilit de traiter certains problmes thoriques est lie au fait que P = N P est toujours au stade de conjecture (elle na pas encore t dmontr). Dterminer si un ordinateur est capable de trouver une rponse ou prouver sa vridicit indiremment et avec la mme rapidit est gnralement considr comme la question irrsolue la plus importante dans la theoretical computer science. Malheureusement le monde industriel ne peut pas attendre indniment... ...et heureusement lInformatique nest pas uniquement de la thorie ! En pratique des progrs eectifs et constants ont t accomplis pour rsoudre ces problmes fondamentaux et stratgiques pour de nombreuses applications industrielles. La Programmation par Contraintes, avec ses outils et ses heuristiques, en est un exemple.

1.2

Un peu de vocabulaire gnral

Ltude de lNP-compltude ncessiterait une connaissance de terminologie (et pas seulement) pratiquement illimite, de plus quil sagit dun domaine de recherche et donc non born. Ici on fournit uniquement les dnitions que lon a rput de base pour une analyse des problmes informatiques. instance dun problme : soit X un problme caractris par lensemble E de ses donnes, E = {e1 , e2 , ..., en }, une instance de X serait alors caractrise par un ensemble concret E = {e1 , e2 , ..., en }, une deuxime instance serait caractrise par un deuxime ensemble concret E = {e1 , e2 , ..., en } et ainsi de suite. Linvariant suivante est toujours vri : |E| = |E | = |E | problme abstrait : relation binaire entre un ensemble dinstances dun problme et un ensemble de solutions ce problme. 5

CHAPITRE 1. LES PROBLMES NP-COMPLETS : THORIE

problme de dcision (ou dcisionnel) : il possde pour solution oui/non. On en dduit quun problme dcisionnel abstrait fait correspondre toute instance du problme lensemble des solutions {vrai, faux}. problme doptimisation : quadruplet < I, S, f, mode > o I reprsente les donns du problme, S est le type de collection/ensemble ou le type dlment quon attend comme rsultat, f est la fonction qui mesure la qualit du rsultat et mode (min ou max) indique sil faut minimiser ou maximiser la taille de ce rsultat. rsoluble en temps polynomial : il existe un algorithme permettant la rsolution en O(nk ) pour une constante k. rductibilit : un problme X peut tre ramen (rduit) un autre problme X si une instance quelconque de X peut tre facilement reformule comme instance de X dont la solution sera aussi solution pour X. rductibilit en temps polynomial : la fonction qui rduit le problme X en X peut tre obtenue en temps polynomial.

1.3

Les dirents classements

Avant de dnir et discuter de NP-compltude, il est ncessaire de fournir un panorama sur les dirents classements de problmes informatiques. Les problmes dcisionnels sont tous eectivement rangs dans des collections de complexit comparable : les Classes de complexit. La liste qui suit ne veut pas tre exhaustive, mais elle montre une trs grosse partie de ce classement : Classe #P #P-complete AM BPP BQP Co-NP Co-NP-complete DSPACE(f (n)) DTIME(f (n)) E ELEMENTARY ESPACE EXP
1 un

Description (des problmes) Comptage des solutions pour un problme NP Les problmes les plus diciles dans #P. Un problme est dans cette classe si tout autre problme dans #P peut sy rduire en temps polynomiale. Peuvent tre rsolus en temps polynomiale par un protocole Arthur-Merlin1 Peuvent tre rsolus en temps polynomiale par un algorithme alatoire (la rponse est correcte la plus part du temps) Peuvent tre rsolus en temps polynomiale par un ordinateur quantique Rponse ngative vriable en temps polynomial Les problmes les plus diciles dans Co-NP Rsolubles avec une machine dterministe et avec un espace en O(f (n)) Rsolubles avec une machine dterministe et avec un temps en O(f (n)) Rsolubles en temps exponentiel avec un exposant lineaire Lunion des classes dans la hirarchie exponentielle Rsolubles en espace exponentiel avec un exposant lineaire Comme pour EXPTIME

systme de preuve interactif o les jets de la pice du vricateur sont connus par le testeur.

1.3. LES DIFFRENTS CLASSEMENTS Classe - suite 1 EXPSPACE EXPTIME FNP FP F P NP FPT IP L MA NC NE NESPACE NEXP NEXPSPACE NEXPTIME NL NP NP-complete NP-easy NP-equivalent NP-hard NSPACE(f (n)) NTIME(f (n)) P P-complete PCP PH P NP PP PSPACE PSPACE-complete Description (des problmes) - suite 1 Rsolubles en espace exponentiel Rsolubles en temps exponentiel Le correspondant de NP pour les problmes non dcisionnels Le correspondant de P pour les problmes non dcisionnels Le correspondant de P N P pour les problmes non dcisionnels Fixed-parameter tractable : tractable avec un paramtre tabli Rsolubles en temps polynomiale par un systme de preuve interactif 2 Peuvent tre rsolus en espace logarithmique (petit) Peuvent tre rsolus en temps polynomiale par un protocole Merlin-Arthur Rsolubles ecacement (en temps poly-logarithmique) avec un ordinateur en parallle (processeurs en parallle) Rsolubles en temps exponentiel (avec un exposant lineaire) avec une machine non-dterministe Rsolubles en espace exponentiel (avec un exposant lineaire) avec une machine non-dterministe Comme pour NEXPTIME Rsolubles en espace exponentiel avec une machine non-dterministe Rsolubles en temps exponentiel avec une machine non-dterministe Rponse armative vriable en espace logarithmique Une rponse armative au problme peut tre vrie en temps polynomiale Les problmes les plus diciles (et intressants) dans NP, ceux qui semblent vraiment ne pas faire partie de P Un autre nom pour F P N P Les problmes les plus diciles dans F P N P Les problmes NP-complets ou encore plus diciles Problmes pouvant tre rsolus avec une machine non-dterministe en espace O(f (n)) Problmes pouvant tre rsolus avec une machine non-dterministe en espace O(f (n)) Rsolubles en temps polynomial Les problmes les plus diciles dans P, rsoudre avec un ordinateur en parallle (processeurs en parallle) La preuve est vriable de faon probabiliste Lunion des classes dans la hirarchie polynomiale Rsolubles en temps polynomial avec un oracle3 pour un problme dans NP Probabilistically Polynomial : la rponse est correcte avec une 1 probabilit lgrement suprieure 2 Rsolubles avec une mmoire polynomiale mais un temps illimit Les problmes les plus diciles dans PSPACE

machine abstraite o les deux parties, le testeur et le vricateur, interagissent activement entre eux. machine abstraite pour ltude de problmes dcisionnels : elle possde une boite noire (loracle) capable de dcider sur certains problmes dcisionnels avec une seule tape.
3 une

2 une

8 Classe RL RP RLP UP ZPP

CHAPITRE 1. LES PROBLMES NP-COMPLETS : THORIE Description (des problmes) - suite 2 Rsolubles en espace logarithmique avec un algorithme alatoire (rponse ngative probablement correcte, rponse armative correcte avec certitude) Rsolubles en temps polynomial avec un algorithme alatoire Rsolubles en espace logarithmique et temps polynomial avec un algorithme alatoire Fonctions en temps polynomial non-dterministes non ambigus Pouvant tre rsolus par un algorithme alatoire (rponse toujours correcte et temps de calcul moyen polynomiale)

suite 2

Parmi les classes qui prcdent, certaines mritent un approfondissement plus attentif : P Il sagit de la classe de complexit contenant les problmes dcisionnels pouvant tre rsolus par une machine de Turing 4 dterministe pendant un temps de calcul polynomial. La complexit du temps de calcul pour un problme X exprime un rapport entre la taille de ses donnes et le temps utilis pour le rsoudre. Pour cette raison on indique souvent les problmes appartenant cette classe comme tant ecients ou tractables : bien quil soit naturel et raisonnable de considrer comme intraitable dans la pratique un problme qui demande un temps de lordre de n200 , il existe eectivement trs peu de problmes qui requirent un temps dun ordre de grandeur aussi lev. P est rput contenir de nombreux problmes naturels, comme le calcul du plus grand commun diviseur. On pourrait alors gnraliser P avec linclusion de tout autre problme qui peut tre rsolu en temps polynomiale par une machine de Turing non-dterministe. La classe qui en rsulte prend le nom de NP et elle implique une relation triviale : P N P . P-complet Un problme dcisionnel appartient ce classement sil fait partie de la classe P et si tout problme dans P peut sy rduire en temps poly-logarithmique en utilisant un ordinateur avec un nombre polynomial de processeurs. En pratique, si X est un problme dans Pcomplte alors il appartient P et pour tout problme Y dans P, il existent les constantes c et k telles que Y puisse tre rduit en X en O((log(n))c ) avec un ordinateur qui possde O(nk ) processeurs en parallle. NP Non-deterministic Polynomial time : il sagit de lensemble des problmes dcisionnels pouvant tre rsolus en temps polynomial avec une machine de Turing non-dterministe. Ils peuvent galement tre valids par un algorithme polynomial.

4 il sagit dun modle abstrait du fonctionnement dun ordinateur et de sa mmoire, cr par Alan Turing en vue de donner une dnition prcise au concept dalgorithme.

1.4. QUEST CE QUUN PROBLME NP-COMPLET ?

1.4

Quest ce quun problme NP-complet ?

Le classement NP-complet contient les problmes les plus diciles de NP. Ces problmes semblent vraiment ne pas faire partie de P (bien que lheure actuelle on ne possde pas une rponse dnitive, voir la question irrsolue P = N P ). Si nous sommes capables de trouver un moyen de rsoudre ecacement (algorithme polynomial) un problme de NP-complet, nous pouvons alors utiliser cet algorithme pour rsoudre tous les problmes de NP. En eet, comme pour P et P-complet, un problme X appartient NP-complet sil est dans NP et si tout autre problme dans NP peut sy rduire. On en dduit que une mthode assez facile pour prouver que un nouveau problme appartient NP-complet est de montrer dabord quil est dans NP, ensuite le rduire en un problme connu dans NP-complet. Par consquent il est trs utile de connatre une varit de problmes NP-complets : la liste qui suit en dcrit brivement certains parmi les plus connus. 1. Boolean Satisability problem (SAT) - satisabilit dune formule boolenne (thorie de la complexit) Pour une expression boolenne donne (contenant uniquement les oprations ET , OU , N ON , les variables et les parenthses), existe-t-il une aectation (de V RAI ou F AU X) aux variables qui rend vraie lexpression ? 2. nQueens - nDames (Intelligence articielle, VLSI testing, circulation) Trouver toutes les combinaisons de n Dames sur un damier de taille n n de telle sorte quaucune de dames ne puisse tre attaque par les autres. Version dcisionnelle : le damier possde-t-il au moins (ou plus que) k combinaisons ? 3. Knapsack problem - problme du sac dos (combinatoire, thorie de la complexit, cryptographie) Pour un ensemble donn dobjets, chaque objet ayant un cot et une valeur, dterminer le nombre de chaque objet insrer dans une collection de telle sorte que le cot total soit infrieur un cot donn et que la valeur totale soit la plus grande possible. Le problme dcisionnel correspondant est peut-on raliser une valeur V sans dpasser le cot C ?. (Une variante avec plus de sens est de substituer le cot avec un poids maximal pour le sac dos). 4. Hamiltonian Cycle problem - problme du cycle hamiltonien (thorie des graphes, mathmatiques) Pour un graphe donn, possde-t-il un cycle hamiltonien5 ? 5. Traveling Salesman problem (TSP) - problme du voyageur de commerce (optimisation discrte et combinatoire) Pour un ensemble de villes et un prix de voyage entre toute couple de villes, quelle est la route la plus conomique qui permet de visiter une fois chaque ville et puis de se retrouver celle de dpart ? Version dcisionnelle : existe-t-il une route plus conomique que celle donne, dont le prix est x ? 6. Subgraph Isomorphism problem - problme du sous-graphe isomorphe (thorie des graphes) Pour deux graphes donns, le premier est-il isomorphe un sous-graphe du deuxime ? 7. Subset Sum problem - problme de la somme dun sous-ensemble (thorie de la complexit, cryptographie) Pour un ensemble dentiers donn, existe-t-il un sous-ensemble dont la somme des lment est zro ?
5 un

parcours qui visite chaque sommet exactement une fois dans un graphe non-orient

10

CHAPITRE 1. LES PROBLMES NP-COMPLETS : THORIE 8. Clique problem - problme de la clique (dans un graphe) (thorie des graphes) Trouver la clique6 de taille maximale dans un graphe donn. La variante dcisionnelle k-clique est : le graphe contient-il une clique de taille k ? 9. Vertex Cover problem - problme de la couverture de sommets (thorie de la complexit, thorie des graphes) Le graphe donn possde-t-il une couverture de sommets dune taille k donne ?

10. Independent Set problem - problme de lensemble indpendant (de sommets dans un graphe) (thorie des graphes, combinatoire) Le graphe donn possde-t-il un ensemble indpendant (de sommets) de taille minimale k ? 11. Graph Coloring problem - problme du coloriage du graphe (thorie des graphes, application dans lemploi du temps, allocation de registres dans le microprocesseurs, reconnaissance dun motif ) Il regroupe plusieurs types de problmes de coloriage des lments du graphe : vertex coloring (coloriage des sommets), edge coloring (coloriage des artes), list coloring (caque sommet choisit dans une liste de couleurs), total coloring, complete coloring, etc. Si on indique pas la mthodologie de coloriage, on sous-entend gnralement le problme de coloriage des sommets dans le graphe : existe-t-il une coloration (des sommets) du graphe qui utilise au plus k couleurs ? Dans le diagramme qui suit une che indique le sens de rduction. Il faut se souvenir quil existe toujours une rduction (en temps polynomial) entre deux problmes dans NP-complet : ce schma nous montre o cette rduction a t facile.

Fig. 1.1 Rductions faciles - source : Wikipedia


6 un ensemble de sommets tel que, pour tout couple de sommets dans cet ensemble, il existe une arte entre les deux sommets de la couple.

1.5. EXEMPLES

11

1.5
1.5.1

Exemples
n-Dames

Prsentation du problme Le problme des n-Dames est un problme qui fut pos par Frank Nauck en 1950 et sur lequel de nombreux mathmaticien ce sont pench. Le principe de ce problme est de poser sur un plateau de dames, de taille n n cases, un nombre n de dames. Ces dames doivent tre poses de tel sorte quaucune delles ne puisse tre attaque par les autres dames poses sur le plateau.

Fig. 1.2 Un positionnement sur le plateau - source : Wikipedia Ce problme est un exemple classique de problme combinatoire tudi dans le domaine de lintelligence articielle. En eet, bien qu il soit simple dans sont principe, trouver un algorithme optimale nous donnant la solution ce problme est plus dicile quil ny parait. Ce problme rsume parfaitement les dicults trouver un algorithme de recherche ecace, nous donnant avec certitude la meilleure solution. Dans lexemple trait ci dessous nous allons prsenter quelque solution doptimisation combinatoire rsolvant ce problme. Pour information, le nombre de solution possible pour 8 dames est de 92 placements (ou 12 placements, le reste des combinaisons possible dcoulant de rotation et rexion de ces derniers)

Une premire solution : le backtracking Une premire approche du problme, certes un peu brutale, est dnumrer toutes les solutions possible et de voir lesquelles sont correctes. Il est assez vident que cette solution est loin dtre optimale car il faudrait en eets vrier 648 combinaisons direntes, soit plus de 280.000 milliard de combinaisons (soit environs 4 secondes avec le plus puissant ordinateur actuel pour trouver seulement 92 emplacement). Une faon damliorer cet algorithme est de considrer quil ne peut y avoir quune seul dame par colonne. De cette manire il ne reste plus que 88 combinaisons vrier. Il existe heureusement des solutions doptimisation combinatoire qui permettent de rduire de faon drastique le nombre de combinaison tester. Une de ces solution est la rsolution par recherche en profondeur ou backtracking. Cette mthode de rsolution consiste, dans son principe, liminer des groupes de combinaisons incorrectes de faon prmature lors de la construction de ces mmes combinaisons.

12

CHAPITRE 1. LES PROBLMES NP-COMPLETS : THORIE Principe de cet algorithme :

il sagit de placer une dame (que lon va appeler dame M) sur le plateau et de vrier si la conguration actuelle obit bien aux rgles (des contraintes, comme lon verra au chap. 2). Si cette conguration ne vrie pas les rgles alors la suite des combinaisons qui dcoulerait de celle-ci ne vrierons pas les rgles poses. Il est donc inutile de les construire. Si, aprs avoir poser cette dame M, la conguration vrie toutes les rgles mais quil est impossible de poser la dame suivante (note dame M + 1) nulle part, alors cette combinaison ne vriera jamais les rgles. Il convient alors de revenir en arrire en plaant la dame M dans une autre case du plateau que lon na pas teste.

Fig. 1.3 Schma du backtracking - source : voir dessin Cette technique donne une trs bonne performance dans la thorie mais ds quil sagit de limplmenter nous nous retrouvons face une chute brutale des performances : premirement elle demande un travail trs important due fait des nombreux tests eectuer (a chaque instantiation), par consquent les temps dutilisation CPU augmente trs vite ; deuximement pour un nombre n de dames relativement important, elle demande une quantit de mmoire trs importante due fait de sa rcursivit. Avec cet algorithme nous pouvons trouver les solution pour 23 reines au maximum. Heureusement il existe direntes techniques pour rsoudre les problmes auxquels nous sommes confrontes. Ces techniques permettent notamment damliorer les algorithmes prcdemment utiliss ou dimplmenter de nouveaux algorithmes permettant dobtenir des performances de plus en plus proches du rsultats escompt. Ces direntes techniques sont notamment issue de la programmation par contrainte : elles travaillent principalement sur loptimisation des domaines et des contraintes imposs aux variables que nous utilisons, comme lon verra par la suite.

1.5.2

Coloriage dune carte

Prsentation du problme Il sagit de colorier toutes les rgions dun carte, de telle sorte que deux rgions ayant une frontire en commun soient colories avec deux couleurs direntes. Pour cela on dispose dun ensemble de couleurs et on peut tablir aussi que chaque rgion puisse choisir sa couleur partir dun sous-ensemble de cet ensemble.

1.5. EXEMPLES

13

Voici une instance possible :

Fig. 1.4 Une carte divise en 4 rgions Ici notre carte est divis en 4 rgions et lon dispose des trois couleurs Jaune, Rouge et Bleu pour le coloriage. De plus, chaque rgion peut choisir selon la conguration suivante : A : jaune, rouge B : jaune, rouge C : jaune, rouge, bleu D : jaune, bleu Une solution possible Comme beaucoup dautres problmes, mme assez dirents lapparence, il peut tre ramen la famille des problmes de coloriage de graphe ; plus prcisment il peut tre reformul comme un problme de coloriage des sommets (vertex coloring). Il sagit encore une fois dune typologie de problmes fondamentale dans le domaine de la recherche informatique et surtout de lindustrie. On obtient donc le graphe suivant :

Fig. 1.5 La carte sous forme de graphe dont une arte entre deux noeuds (rgions) reprsente le fait quils doivent possder deux couleurs direntes (une contrainte, comme lon verra par la suite). Une premire solution possible pourrait tre lnumration de toute combinaison possible (mme celles interdites !), suivie par le choix de la meilleure solution. Il sagit dune stratgie qui amne une solution optimale, mais avec un prix pas optimale du tout et qui devient prohibitif si les rgions et les possibilits de choix augmentent. On pourrait alors procder par tentatives, en commenant par aecter une couleur un sommet-rgion et en liminant cette mme couleur dans les ensembles de choix des autres rgions voisines, comme montr dans la squence qui suit (elle montre une possibilit) :

14

CHAPITRE 1. LES PROBLMES NP-COMPLETS : THORIE

Fig. 1.6 Une squence possible Mais quest ce quil se passe si la premire tape on choisit une autre couler pour une autre variable ? Si, par exemple, on dcide de aecter C la couleur jaune, cela entranera leacement de cette dernire couleur de lensemble de choix de A, B et D. Dans ce cas les deux rgions voisines A et B nauront plus que le seul choix de la mme couleur ! Echec ! Il faudrait alors amliorer notre algorithme comme lon a fait pour lexemple prcdent, en prvoyant la possibilit de retour-arrire ou backtraking. On verra dans le deuxime chapitre comment formaliser de faon intelligente ce problme.

1.6. RFLEXIONS

15

1.6

Rexions

Il est clair que nous ne sommes pas confronts linexistence dun algorithme correct pour rsoudre les problmes de la section prcdente (et pour beaucoup dautres problmes NP-complets). Ce qui est noter et qui pose une dicult majeure dans le monde industriel est limpossibilit dappliquer ecacement ces algorithmes : une application qui puisse fournir une solution dans un temps utile et sans un emploi massif de ressources. Il faut tre convaincu que la puissance de notre ordinateur ne fait surtout pas le poids ! Avec le type de technologie actuelle, mme en disposant dun ordinateur de la taille de lunivers connu et capable deectuer les oprations la vitesse de la lumire, on ne pourrait jamais atteindre toutes les combinaisons qui vrient une formule boolenne de quelque centaine de variables (une quantit qui nest mme pas trop leve, si lon considre les nombres avec lesquels on travaille lheure actuelle). Il faut alors se demander sil nexiste pas un autre moyen daborder ces problmes, si lon est prs sacrier parfois la qualit de la rponse ou bien de procder avec dautres raisonnements et heuristiques. Dans ce cas, il faut poser des contraintes.

Chapitre 2

Programmation par contraintes : pratique


2.1 Introduction

La programmation par contraintes (PPC ou CSP en anglais : Constraint Satisfaction Problem) fournit des mthodes pour la rsolution de problmes dnis sur des domaines nis (intervalles de nombres entiers, intervalles densembles, par exemple). Tout problme comporte un certain nombre de variables, chacune ayant un domaine ni, et un certain nombre de contraintes. De mme quune contrainte implique une ou plusieurs variables, en dnissant les combinaisons autorises et celles qui sont interdites. Ainsi trouver une solution un problme par contraintes consiste aecter une valeur chaque variable de telle sorte que la totalit des contraintes soit satisfaite. La programmation par contrainte savre trs utile dans de nombreux domaines de la science et de lindustrie. De mme que la PPC est utilise pour la rsolution de nombreux problmes acadmiques : 1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 6. Problme du sac a dos, Problme du voyageur de commerce, Problme du coloriage dun graphe, Les preuves automatiques, Et beaucoup dautres... Ordonnancement, Allocation de ressources, Emplois du temps, Design de circuits, Squenage de lADN, ...

Et dautant voir mme plus de problmes industriels :

Nous allons donc commencer a expliquer ce quest une contrainte, ses caractristiques et son arit, les dirents types de contraintes pour enn en venir a ce quest la programmation par contraintes.

2.2

Quest ce quune Contrainte ?

Une contrainte est une relation logique (une proprit qui doit tre vrie) entre direntes inconnues, appeles variables, chacune prenant ses valeurs dans un ensemble donn, appel domaine. Ainsi, une contrainte restreint les valeurs que peuvent prendre simultanment les variables. 16

2.2. QUEST CE QUUNE CONTRAINTE ?

17

Par exemple, la contrainte x + 3 y = 12 restreint les valeurs que lon peut aecter simultanment aux variables x et y.

2.2.1

Quelques caractristiques des contraintes

Il existe direntes caractristiques de contraintes parmi lesquelles on compte le fait que cette dernire soit dclarative ou relationnelle. Une contrainte est dite dclarative si cette dernire spcie quelle relation on doit retrouver entre les variables, sans donner de procdure oprationnelle pour eectivement assurer/vrier cette relation. Ainsi, lorsque lon pose par exemple la contrainte 5x y = z, on ne soccupe pas de donner un algorithme permettant de rsoudre cette quation : cette contrainte est dite dclarative. Une contrainte est dite relationnelle si cette dernire nest pas crite dans le sens dune fonction qui dnit la valeur dune variable en fonction des valeurs des autres variables. Ainsi, lorsque on pose par exemple la contrainte 5xy = z, cette contrainte permet de dterminer x des lors que y et z sont connus, mais aussi y des lors que x et z sont connues et z des lors que x et y sont connues. Un chose importante reste a savoir, lordre dans lequel les contraintes sont poses nest pas signicatif, la seule chose qui importe la n est que toutes les contraintes soient satisfaites (mais attention : dans certains langages de programmation par contraintes lordre dans lequel les contraintes sont poses peut jouer un rle crucial au niveau des performance de la rsolution).

2.2.2

Dnition dune contrainte

Une contrainte est une relation entre direntes variables. Cette relation peut tre dnie en extension ou en intention : Pour dnir une contrainte en extension, il sut dnumrer les tuples de valeurs appartenant a la relation. Par exemple, si les domaines des variables x et y contiennent les valeurs 0, 1 et 2, alors on peut dnir la contrainte x est plus grand que y en extension par (x = 1 y = 0) (x = 2 y = 0) (x = 2 y = 1), ou encore par (x, y) {(1, 0), (2, 0), (2, 1)}. Pour dnir une contrainte en intention, il sut dutiliser les proprit mathmatiques connues (>, <, , =, etc.). Si lon reprend lexemple cit prcdemment, la contrainte par intention qui en dcoulerais serais la suivante : x > y mais on pourrait avoir une dnition de contrainte du genre A B C.

2.2.3

Arit dune contrainte

Larit dune contrainte est le nombre de variables sur lesquelles elle porte. On donnera alors plusieurs appellations aux contraintes du genre 1. Unaire si son arit est gale 1 (elle ne porte que sur une variable). Par exemple x3 = 5 mais aussi est un cercle(y), 2. Binaire si son arit est gale 2 (elle met en relation 2 variables). Par exemple x > y mais aussi A B = B, 3. Ternaire si son arit est gale 3 (elle met en relation 3 variables). Par exemple x y = 3z mais aussi x y = z, 4. On continue ainsi jusqu n-aire si son arit est gale n (elle met en relation un ensemble de n variables). Dans ce cas la contrainte est dite globale. Par exemple toutesDif f erentes(E), o E est un ensemble de plusieurs variables. La contrainte dnie ici serait que toutes les variables de E aient des valeurs strictement direntes.

18

CHAPITRE 2. PROGRAMMATION PAR CONTRAINTES : PRATIQUE

2.2.4

Dirents types de contraintes

On distingues dirents types de contraintes en fonction des domaines de valeur des variables : Les contraintes numriques, portant sur des variables a valeurs numriques : une contrainte numrique est une dirence, une galit ou une ingalit entre 2 expressions arithmtiques. Ces contraintes peuvent tre dnies sur les entiers, les variables dans ce cas peuvent prendre des valeurs entires (exemple : contrainte sur le nombre de livres que peut contenir au maximum une tagre) ; mais aussi sur les rels, quand les variables de la contrainte peuvent prendre des valeurs relles (exemple : contrainte lectrique P = U I). Les contraintes numriques peuvent tre linaires, quand les expressions arithmtiques sont linaires (exemple : 2x + y = 0) ; ou non linaires, quand les expressions arithmtiques sont de degr suprieur 1 (produit de variables) ou quelles contiennent des fonction exponentielles, logarithmiques, ... (exemple : cos(x) sin(y) = 0). Les contraintes boolennes, portant sur des variables valeur boolenne (vrai ou faux) : une contrainte boolenne est une implication (=), une quivalence ( ) ou une non quivalence entre 2 expressions logiques. Par exemple :

Fig. 2.1 Un circuit logique - source : Cours 2002-03 de Prog. par Contraintes de la Facult des Sciences de Nantes

dont la modlisation est : (I1 X Y ) (I2 X Y ) (I3 I2 CI) (O I2 CI) (CO I1 I3) Les contraintes sur les arbres (appeles aussi contraintes de Herbrand ), ce sont des contraintes portant sur des variables valeur dans lunivers de Herbrand : une contrainte de Herbrand est une galit (=) ou disgalit (=) entre 2 termes (appels aussi arbres) de lunivers de Herbrand.

2.2. QUEST CE QUUNE CONTRAINTE ? Par exemple :

19

Fig. 2.2 Une galit - source : Cours 2002-03 de Prog. par Contraintes de la Facult des Sciences de Nantes Les contraintes symboliques, portant sur des variables avec des valeur symboliques. Par exemple :

Fig. 2.3 Une contrainte symbolique - source : Cours 2002-03 de Prog. par Contraintes de la Facult des Sciences de Nantes Les contraintes globales, portant sur un ensemble de variables : une contrainte globale peut tre une contrainte qui permet de dire que toutes les variables sont direntes ou quau plus n variables parmi lensemble des variables ont la valeur V . Par exemple : atmost(2, [X1 , X2 , X3 , X4 , X5 ], 1) : au plus 2 variables parmi {X1 , X2 , X3 , X4 , X5 } sont gales 1. alldierent([X1 , X2 , X3 , X4 , X5 ]) : les variables {X1 , X2 , X3 , X4 , X5 } ont des valeurs direntes deux deux.

20

CHAPITRE 2. PROGRAMMATION PAR CONTRAINTES : PRATIQUE

Maintenant que nous avons dnit les dirents types de contraintes nous pouvons donc nous intresser ce quest vraiment la programmation par contraintes (PPC) en donnant sa dnition formelle et puis la manire par laquelle on rsout ce type de problmes.

2.3
2.3.1

Quest ce quun CSP ?


Dnition dun CSP

Un CSP (Problme de Satisfaction de Contraintes) est un problme modlise par des variables, un domaine, et des contraintes. Les contraintes sont poses sur des variables, chacune des variables prend des valeurs dans un domaine. Formellement la dnition dun problme par contrainte se fera de la faon suivante : soit un triplet (X, D, C) tel que 1. X = {X1 , X2 , ..., Xn } est lensemble des variables du problme, 2. D est le domaine de dnition de chacune des variables, soit lensemble des valeurs que peut prendre Xi , 3. C = {C1 , C2 , ..., Cn } est lensemble des contraintes. Chaque contrainte Cj est une relation entre certaines variables de X, qui limite les valeurs que peuvent prendre simultanment ces variables. Voici un bref exemple bien simple qui illustre ce quest un CSP : Considrons P dni par 1. Les variables X = x, y, z, 2. Les domaines D(x) = [1, 3], D(y) = [1, 3], D(z) = [1, 3], 3. La contrainte C = {x = y + z}. = Les solutions de P sont (2, 1, 1), (3, 1, 2), (3, 2, 1).

2.3.2

Vocabulaire CSP appliqu un exemple

Soit le CSP (X, D, C) suivant que nous allons traiter pour en extraire une solution : 1. X = {a, b, c, d}, 2. D(a) = D(b) = D(c) = D(d) = {1, 2}, 3. C = {a = b, c = d, a + c b}. Rsoudre ce CSP (X, D, C) consiste aecter toutes les variables de X une valeur de leur domaine D respectif de sorte que les contraintes C soient respectes. Avant de rsoudre ce CSP , il convient de dnir quelque notation et leur signication : laectation est le fait de crer une instance de (to instantiate) certaines variables de X avec des valeurs appartenant leur domaine respectif D. On note laectation A telle que A = {(X1 , V1 ), (X2 , V2 ), ..., (Xn , Vn )} o {X1 , X2 , ..., Xn } sont inclus dans X, V1 , V2 , ..., Vn appartiennent respectivement D(X1 ), D(X2 ), ..., D(Xn ), et X1 est laecter de la valeur V1 , X2 de la valeur V2 , ..., et Xn de la valeur Vn . Par exemple, sur le CSP prcdent, A = {(a, 1), (c, 2)} correspond laectation de a par 1 et de c par 2. Si toutes les variables de X sont initialises (instancies, par abus de langage) alors on dit que cette aectation est totale, sinon on parle daectation partielle. Dans notre CSP , A = {(a, 1), (b, 2), (c, 2), (d, 1)} est une aectation totale, A = {(a, 2), (c, 2)} est une aectation partielle.

2.4. QUELQUES OUTILS PPC

21

Si pour une contrainte Ck donne, toutes les variables utilises par cette contrainte sont instancies dans une aectation A mais ne vrient pas Ck , alors on dit que cette aectation A viole la contrainte Ck . Par exemple, dans notre CSP A = {(c, 1), (d, 1)} viole la contrainte c = d. Une aectation (totale ou partielle) est dite consistante si elle ne viole aucune contrainte du CSP , sinon elle est dite inconsistante. Par exemple, dans notre CSP A1 = {(c, 2), (d, 1)} et A2 = {(a, 1), (b, 2), (c, 2), (d, 1)} sont des aectations consistantes, alors que A3 = {(c, 1), (d, 1)} et A4 = {(a, 1), (b, 1), (c, 2), (d, 1)} sont des aectation inconsistantes car, dans le cas de A3 la contrainte c = d nest pas vrie et dans le cas A4 la contrainte a = b nest pas vrie. Une solution pour un CSP est une aectation totale consistante. Par exemple, dans notre CSP A = {(a, 1), (b, 2), (c, 1), (d, 2)} est une solution car toute les variables de X sont instancie (aectation totale) et que toutes les contraintes de C sont vrie (aectation consistante). On remarque aussi quil sagit de lunique solution de notre CSP. Souvent une telle solution nest malheureusement pas vidente. Parfois X est trop grand ou pire, les domaines sont trop vastes : il faudrait alors tenter de rechercher/reformuler le CSP pour en obtenir un deuxime quivalent mais avec des domaines plus petits. On parle alors de ltrage des domaines des variables pour liminer les valeurs inconsistantes.

2.4
2.4.1

Quelques outils PPC


Filtrage

Le ltrage des domaines entrane une utilisation active des contraintes et beaucoup daectations violant les contraintes sont limines. Il peut tre appliqu l o on dispose dun algorithme valide mais pas forcement ecace, le temps devenant alors rapidement prohibitif pour des problmes de taille importante. Pour amliorer cet algorithme, on peut tenter danticiper : si on se rend compte quune variable non aecte Xi na plus de valeur (dans son domaine D(Xi )) dans laectation partielle en cours de construction, alors on peut viter un gaspillage inutile de temps pour dvelopper cette branche, et on peut tout de suite retourner en arrire pour explorer dautres possibilits. A chaque tape de la recherche on va donc ltrer les domaines des variables non aectes en enlevant les valeurs qui nappartiendront aucune solution (i.e. localement inconsistantes). On peut eectuer dirents ltrages, chacun correspondant un niveau dirent de consistance locale, avec sa propre ecacit mais aussi sa dicult dapplication et son temps dexcution... Bien quil sagit dune technique incomplte et insusante dans de nombreux cas, elle permet un approche visiblement simpli au problme. Filtrage par consistance de noeud (1-consistance) An de dnir ce quest une CSP consistante de noeud, nous allons commencer par dnir ce quest une contrainte atomique unaire consistante de noeud. Dnition : Une contrainte atomique unaire c sur la variable x de domaine D(x) est consistance de noeud si et seulement si a D(x), c(a). Dnition de la consistance de noeud : Un CSP denit par (X, D, C) est consistant de noeud si pour toute variable x de X, et pour toute valeur v de D(x), laectation partielle {(x, v)} satisfait toutes les contraintes unaires de C.

22

CHAPITRE 2. PROGRAMMATION PAR CONTRAINTES : PRATIQUE

Il est important de noter quune contrainte non unaire est toujours considre comme consistante de noeud. An de mieux comprendre ce quest la consistance de noeud voici une srie dexemples et de contre exemples : 1. Exemple : Soit le CSP (X, D, C) dnit par X = {x} D = D(x) = {4, 6} C = pair(x) On remarque que pour toute valeur de x dans D la contrainte C est bien respecte. = C est alors consistante de noeud. 2. Contre-Exemple : Soit le CSP (X, D, C) dnit par X = {x} D = D(x) = [3, 10] C = {x < 2} On remarque que pour toute valeur de x dans D la contrainte C nest pas satisfaite. = C nest donc pas consistant de noeud. 3. Exemple un peu plus complexe : Soit le CSP (X, D, C) dnit par : X = {x, y, z} D = D(x) = D(y) = D(z) = {1, 2, 3} C = {x < y et y < z et z <= 2} On a pas de consistance de noeud ici car la contrainte C nest pas satisfaite. = Pour eectuer le calcul de consistance de noeud il sut deectuer un ltrage dans le domaine de D(z) et retirer le 3. Filtrage par consistance darc (2-consistance) Lalgorithme de recherche de base que lon utilise souvent dans la rsolution de problmes, le backtrack chronologique, procde par essais successifs : il tente daecter des valeurs aux variables, et remet en cause la dernire aectation si une contrainte est viole. Cet algorithme est bien trop inecace pour pouvoir tre utilis en pratique. Pour rsoudre un CSP de manire performante, il est primordial de maintenir une consistance locale durant la recherche an de rduire lespace de recherche. La plus utilise des consistances locales est la consistance darc (dans les domaines nis) car elle est trs peu coteuse (en termes de parcours). Nous allons donc dnir et puis donner un petit exemple dapplication de ce cette consistance locale. Dnition de la consistance darc dans les domaines nis : Soit un CSP dnit par (X, D, C) dont les domaines sont nis et soit une variable x de X dont le domaine est D(x). On dit que D(x) est consistant darc si et seulement si pour chaque contrainte c C, toute valeur de D(x) a un support dans les domaines des autres variables de c. Dnition CSP consistant darc : On dit quun CSP est consistant darc si et seulement si tous ses domaines sont consistants darc. Voici une illustration simple de ce quest la consistance darc CSP : Soit P = (X, D, C) un CSP dnit par X = {X1 , X2 }, D = D(X1 ) = D(X2 ) = {0, 1, 2}, C = {X1 X2 > 2} Ce CSP est clairement pas arc-consistant ( consistant darc) car si X1 = 0 ou X2 = 0 aucune valeur respectivement de D(X2 ) ou de D(X1 ) permet de satisfaire la contraint C.

2.4. QUELQUES OUTILS PPC

23

Si lon reprend le mme problme mais cette fois avec D = {1, 2}, toutes les combinaisons de X1 et X2 satisfont parfaitement la contrainte C : le CSP est arc-consistant. Ainsi nous remarquons que lorsque lon enlve une valeur des domaines des variables le CSP prend une forme consistante darc. Ce que lon a fait intuitivement ce fait aussi par des algorithmes dit de ltrages appels AC (pour Arc Consistency) : 1. le plus simple est AC-1 : ds quune valeur a t enleve du domaine dune variable, on vrie nouveau toutes les contraintes 2. AC-2 est aussi plutt simple 3. AC-3 : on eectue une re-rvision uniquement des arcs qui viennent dtre rviss 4. AC-4 : on mmorise des paires individuelles de valeurs pour enlever linecacit davoir vrier encore et encore des paires de valeurs 5. ...les recherches continuent (on connait par exemple jusqu AC-7) Encore plus loin : kconsistance Comme pour la consistance de noeud et la consistance darc, on commence en donnant la dnition de kconsistance. Dnition : Un systme de contraintes est kconsistant si et seulement si pour nuplet de k 1 valeurs de variables satisfaisant les contraintes de ces variables, il existe une valeur pour une kime variable arbitraire telle que toutes les contraintes soient satisfaites. Notion de kconsistance forte : Un systme de contraintes est fortement kconsistant si et seulement si il est jconsistant pour tout j, j k. On en deduit donc les proprits suivantes : 1. toute contrainte n-aire peut se ramener un ensemble de contraintes binaires 2. les notions de consistance de noeud et darc sont incluses dans notion de kconsistance et donc : la consistance de noeud est la 1-consistance forte la consistance darc est la 2-consistance forte 3. prouver la kconsistance forte dune graphe de contraintes est un problme NP-complet

2.4.2

Heuristiques

Les algorithmes vue prcdemment permettent chaque tape de choisir la prochaine variable instancier (abus de langage) parmi celles qui ne lont pas encore t. Malheureusement ces algorithmes ne disent rien sur lordre dans lequel il faudrait instancier ces variables ni sur lordre daectation des valeurs du domaine de la variable. Lidal serait qu chaque tape on sache exactement quelle variable instancier et avec quelle valeur. Ainsi on ne ferait jamais aucun backtracking. Cependant il est peu probable que ce genre dalgorithme puisse tre programm du fait du non-dterminisme des problmes NP-Complet. En revanche il est possible de remdier ce problme par lintgration dheuristique nous donnant lordre dans lequel instancier ces variables et leurs valeurs. De faon gnrale une heuristique est une rgle non systmatique (au sens quelle nest pas able 100%) nous donnant la variable qui a le plus de chance daboutir la solution.

24

CHAPITRE 2. PROGRAMMATION PAR CONTRAINTES : PRATIQUE Pour le CSP il existe deux principes dheuristiques souvent utiliss : 1. lalgorithme meilleur dabord 2. lalgorithme chec dabord

meilleur dabord : Cette heuristique, appele aussi best rst, consiste choisir la prochaine variable de telle sorte que la combinaison en cours tend vers la solution optimale, ou vers une bonne solution dans le cas de dun problme doptimisation. Cette heuristique inue uniquement sur lordre dexploration de larbre de recherche et donc sur le temps de recherche ainsi que sur la qualit des solutions trouves. Voici un exemple du fonctionnement de cette heuristique lorsquon lassocie une recherche en profondeur : Le problme est le suivant : Considrons un graphe dont chaque arc est valu. Le but du problme est de trouver un sous ensemble de noeuds permettant de relier G K en ne passant quune seule fois par chaque noeud de cette combinaison. La somme des arcs de ce sous ensemble doit tre minimale.

Fig. 2.4 Un graphe dont chaque arc est valu Comme nous pouvons voir daprs la gure 2.4 et daprs les gures 2.5 et 2.6 de page 25 et 26, cet algorithme ne permet pas de savoir si la solution obtenue est optimale, mais il permet dobtenir une solution qui en est proche ou qui peut ltre. chec dabord : Cette heuristique, appele aussi rst fail ou MRV pour Minimum Remaining Value, consiste choisir la prochaine variable de telle sorte que la prochaine combinaison soit plus dure rsoudre ou conduise un chec. De cette faon on sarrte plus tt dans le parcours de larbre et on limine ainsi le nombre de sous arbre explorer. Cette heuristique inue directement sur les performances de la recherche, tant donn quelle tend diminuer de faon drastique le nombre de noeud parcourir. On associe souvent cette heuristique lalgorithme de backtracking et de forward checking. Nous verrons notamment le fonctionnement de cette heuristique dans lexemple des nDames. Lutilisation des heuristiques peut aboutir une bonne performance mais peut aussi conduire une impossibilit de trouver la solution. Ceci est du leur nature probabiliste.

2.4. QUELQUES OUTILS PPC

25

Fig. 2.5 tapes 1-6

26

CHAPITRE 2. PROGRAMMATION PAR CONTRAINTES : PRATIQUE

Fig. 2.6 tapes 7-9

2.4. QUELQUES OUTILS PPC

27

2.4.3

Recherche locale

Les algorithmes de recherche locale ne sont pas vraiment des algorithmes de programmation par contrainte tant donn que lon ne travaille pas rellement sur les contraintes du CSP mais sur des valeurs que lon xe partir du CSP lui mme. Cependant ils sappliquent parfaitement au CSP et ils donnent de trs bons rsultats. Ils sont notamment dune redoutable ecacit sur des problmes dont le nombre de variables est trs grand et permettent de trouver des solutions quasi-optimales, voir optimale dans certain cas. Quelques algorithme de recherche locale : la descente de gradient : Appel aussi hill-climbing, cette mthode consiste gnrer une sous combinaison initiale reprsente par une fonction h(n), n tant le noeud courant. Il sut ensuite de choisir un noeud n , successeur de n, qui minimise h(n ) et de tel sorte que h(n ) < h(n). Il sut de r-itrer cette opration avec n et ainsi de suite jusqu trouver une solution. Cependant on remarque que cette solution prsente le dsavantage de devoir calculer tout les h(n ) pour trouver le minimum. Sur des domaines trs grands cela se traduira par une baisse notable des performances. Il est cependant possible de remdier ce problme : il sut de ne pas minimiser h(n ) mais de choisir n de faon alatoire tel que h(n ) < h(n). On parle alors de de descente de gradient stochastique. Cet algorithme prsente comme dsavantage le fait quil peut ne donner aucune solution ou donner une solution plutt loigne de la solution optimale. Pour y remdier il sut de choisir une bonne sous combinaison ds le dpart et de le lancer plusieurs fois an dobtenir une solution quasi optimale. min conicts : Le principe gnral de cet algorithme est dinstancier toute les variables du CSP . On travaille ensuite sur les variables prsentant des conits. Pour chacune de ces variables on regarde pour quelle valeur de leur domaine elle serait le moins en conits ; il sut ensuite dinstancier cette variable avec la valeur choisie. On ritre cette opration jusqu ne plus avoir aucun conit. Cependant on remarque que cet algorithme prsente aussi certains dsavantages. En effet on pourrait se trouver face des cas o on rentrerait dans une partie de larbre qui serait une boucle. Lon verrait alors les mmes variables tre r-instancies avec les mmes valeurs de faon cyclique. Il existe heureusement des algorithmes permettant de reprer ces boucles. Il sut ensuite de relancer lalgorithme avec un tat initial dirent. Evidemment, il marche de faon optimal si cet tat initial possde un nombre assez restreint de variables violant les contraintes an dacclrer la recherche. Cet algorithme est frquemment utilis, aussi bien dans le domaine de la recherche que dans le domaine de lindustrie. En eet cet algorithme ne travaille que sur une variable la fois sans se soucier des autres variables. Il a notamment permis de rsoudre le problme des 1 million de Dames en 50 tapes (pour une solution). Dans la pratique, les rsultats sont encore plus agrant : dans le cas du satellite Hubble, par exemple, le temps ncessaire au calcul de lemploi du temps des observations pour une semaine a t rduit de trois semaines 10 minutes. Un des avantages principal de la recherche locale est le fait quelle peut traiter des problmes qui changent (notamment par lajout dune contrainte). Il est donc normal de retrouver ce type dalgorithme dans les problmes dordonnancement (cration dun emploi du temps, rgulation

28

CHAPITRE 2. PROGRAMMATION PAR CONTRAINTES : PRATIQUE

des horaires de vols des aroports, rgulation du trac routier, etc.). Par exemple, dans le cas de la rgulation des horaires de vols entre dirent aroport, si un incident surgit dans un de ces aroports, il faut modier les horaires de vols avec le minimum de changement possible (pour avoir le moins de clients mcontents possible) et en un minimum de temps. Ainsi, la recherche locale permet de trouver une solution satisfaisante en trs peu de temps, alors quune approche plus classique avec la recherche par backtracking prendrait plus de temps et donnerait une solution avec normment de changements.

2.5. EXEMPLES

29

2.5
2.5.1

Exemples
Retour sur les n-Dames

Petit rappel : il sagit de poser sur un plateau de n n cases, un nombre n de dames. Ces dames doivent tre poses de tel sorte quaucune delles ne puissent tre attaque par les autres. Une modlisation CSP du problme Une formalisation CSP possible du problme est la suivante : nous partons du fait que nous savons quon ne peut poser quune seule dame par colonne. On nomme Xi une variable reprsentant le numro dune ligne de la colonne i. Variables : X = {X1 , X2 , X3 , X4 , X5 , X6 , X6 , X8 } Domaines : D(X1 ) = D(X2 ) = D(X3 ) = D(X4 ) = D(X5 ) = D(X6 ) = D(X7 ) = D(X8 ) = {1, 2, 3, 4, 5, 6, 7, 8} Contraintes : 1. les reines doivent tre sur des lignes direntes Clig = {Xi = Xj | i, j {1, 2, 3, 4, 5, 6, 7, 8}, i = j} 2. les reines doivent tre sur des diagonales montantes direntes Cdm = {Xi+i = Xj + j | i, j {1, 2, 3, 4, 5, 6, 7, 8}, i = j} 3. les reines doivent tre sur des diagonales descendantes direntes Cdd = {Xii = Xjj | i, j {1, 2, 3, 4, 5, 6, 7, 8}, i = j} 4. Lensemble des contraintes est dni par lunion de ces 3 ensembles C = Clig Cdm Cdd Une solution serait A = {(X1 , 2), (X2 , 5), (X3 , 7), (X4 , 4), (X5 , 1), (X6 , 8), (X7 , 6), (X8 , 3)}

Fig. 2.7 Une solution

Amlioration du backtracking par ltrage Il est possible damliorer lalgorithmique de backtracking en ltrant les domaines et les contraintes appliques au problme. Dans notre cas on peut ltrer les domaines. On obtient alors la mthode appele forward checking . Cette mthode utilise le ltrage par consistance de noeud (appele aussi 1-consistance). Dans ce problme, elle consiste liminer lavance les possibilits de placement de la prochaine dame qui ne vrient pas les contraintes donnes. Ainsi on diminue de faon non ngligeable le nombre de sous arbres parcourir dans larbre de recherche.

30 Voil lide :

CHAPITRE 2. PROGRAMMATION PAR CONTRAINTES : PRATIQUE

Fig. 2.8 Amlioration du backtracking - source : voir dessin Cependant cette technique montre trs vite ses limitations due fait qu chaque instantiation (ajout dune dame) on doit maintenir la consistance et donc cela implique du travail en plus faire. Nous pouvons aussi faire du ltrage par de la consistance darc (de la 2-consistance). On parle alors de dalgorithme look ahead . La version appele full look ahead (ou MAC pour Maintaining Arc Consistency). Il sagit, aprs chaque instantiation dune variable du CSP , de vrier que les autres variables non encore instancies possdent au moins une valeur de leur domaine respectifs respectant les contraintes poses.

Fig. 2.9 source : voir dessin De cette faon il possible de rduire encore plus que prcdemment le nombre de noeuds parcourir. Cependant cette technique implique aussi plus de travail que prcdemment du fait du maintient de la consistance darc qui demande beaucoup pus de ressource que la consistance de noeud. Amlioration de FC par heuristique MRV Comme nous pouvons le constater, les techniques prcdentes permettent de rduire le nombre de noeuds et ainsi rduire le temps de recherche dans larbre. Cependant nous remarquons quon

2.5. EXEMPLES

31

instancie les variables de faon alatoire, cest--dire que nous ne savons pas dans quel ordre instancier les variables. Cest pourquoi nous introduisons les heuristiques pour savoir quelle variable a la plus grande probabilit de nous conduire au but recherch. Dans cette exemple, nous utilisons lheuristique MRV an dliminer le plus tt possible les futurs combinaisons qui amnerait un chec. On rduit ainsi encore plus le nombre de noeuds dans larbre tout en gardant ceux qui pourrait aboutir la solution cherche. Voici un schma du fonctionnement de cette algorithme :

Fig. 2.10 Utilisation de MRV

Rsolution du CSP par recherche locale Comme nous lavons vu prcdemment (cf. page 27), il existe une autre mthode de recherche qui, dans certains cas, permet de rsoudre des problmes possdant un nombre de variables trs grand. Il sagit de la recherche locale. Ici nous utilisons lalgorithme min conit. Cet algorithme part dune combinaison initiale, si possible avec le moins de conit possible, et va dplacer toute les dames qui sont en conit. Les gures 2.11 et 2.12 de page 32 et 33 montrent le fonctionnement de cette algorithme dans le cas des nDames. Ici les dames en rouge reprsentent les dames qui violent les contraintes (et qui sont donc en conit). Comme nous pouvons le voir, ce type de recherche prsente une bonne performance tant donne quelle ne dplace pas les dames en fonction des autres dames (comme cest le cas dans le ltrage par consistance) mais en fonction du nombre de conits pour chaque valeur de leurs domaines. Les conits peuvent tre calculs de faon performante.

32

CHAPITRE 2. PROGRAMMATION PAR CONTRAINTES : PRATIQUE

Fig. 2.11 tapes 1-5

2.5. EXEMPLES

33

Fig. 2.12 tapes 6-11

34

CHAPITRE 2. PROGRAMMATION PAR CONTRAINTES : PRATIQUE

2.5.2

Retour sur le coloriage de la carte

Petit rappel : il sagit de colorier toute rgion dun carte de telle sorte que deux rgions voisines aient deux couleurs direntes. Chaque rgion peut choisir dans son ensemble de couleurs. Une formalisation intelligente du problme On va modliser ce problme sous la forme dun CSP , en identiant les variables, les domaines et les contraintes : X = {a, b, c, d} D(a) = D(b) = {jaune, rouge} ; D(c) = {jaune, rouge, bleu} ; D(d) = {jaune, bleu} C = {i, j X, i frontalire de j, Vi = Vj } Plusieurs niveaux de ltrage On saperoit alors que le fait de aecter une valeur Vi une variable i (i.e. une couleur une rgion) entrane un eacement de Vi du domaine D(j) de toute variable j frontalire de i : cette technique est le niveau le plus lmentaire (bien que parfois le plus utile !) de ltrage, avec la consistance de noeud, ou 1-consistance. Pour toute rgion i de la carte, on voit la contrainte unaire avoir une couleur dirente des voisines respecte. On peut augmenter le niveau de ltrage en exploitant la 2-consitance ou consistance darc : chaque tape on va alors considrer larc (i, j) o i et j sont deux rgions frontalires : dans notre exemple (voir aussi les gures 1.5 et 1.6 de page 13 et 14) on peut commencer par aecter la valeur Jaune la variable a (la valeur Rouge est limine du domaine D(a) pour laffectation partielle en cours dexcution), ensuite on peut procder en considrant larc (b, c) et excuter les aectations (consistantes !) b = Rouge et c = Bleu. De cette faon on liminerait Jaune de D(b) ainsi que Jaune et Rouge de D(c) (ltrage voulu et ncessaire pour le respect de la contrainte binaire sur larc (b, c)). A ce moment il nous resterait plus quaecter la seule valeur possible (Jaune) d et conclure (positivement !) notre exemple. Mais on aurait pu commencer avec une mauvaise aectation, comme par exemple a = Rouge, ou garder la bonne dmarche (a = Jaune) mais continuer avec un mauvaise aectation sur un autre arc (voir laectation de (Rouge, Bleu) (b, d), ce qui est consistant pour linstant, mais qui va empcher de trouver la bonne solution ltape suivant). Comme pour lexemple prcdent il faudrait alors pouvoir revenir en arrire (backtracking) et/ou sintresser dautres techniques (section 2.4.3) et heuristiques (section 2.4.2).

Conclusion
La perfection ne fait probablement pas partie de ce monde et mme si elle y tait, nos ordinateurs (ainsi que nous mmes) seraient encore trs loin de latteindre. Il nexiste donc pas de technique exacte ou dalgorithme universel : titre dexemple, seul le ltrage par consistances nest pas susant pour aboutir une solution quasi optimale pendant un temps limit, ou encore, la simple application de quelque heuristique (comme le best rst ou le rst fail ) nest pas la rponse dnitive. Une rgle dinformaticien qui est toujours valide est chercher si une solution existe dej avant de se pencher sur le problme (Emmanuel Kounalis). Lapplication du meilleur algorithme peut tre parfois trs coteuse si lon a gaspill normment de temps pour le trouver, de plus que lon pourrait remarquer par la suite quil ntait pas le meilleur. Il faut considrer chaque situation, le type et la quantit des donns, les moyens et le temps notre disposition pour choisir les techniques et les heuristiques appliquer. Souvent le monde de lindustrie prfre une rponse approximative mais rapide et ecace plutt que lutopique rponse parfaite.

35

Bibliographie
[1] T. Cormen and C. Leiserson and R. Rivest. Introduction lalgorithmique. Dunod, Paris, 1994. [2] F. Benhamou (Coordonnateur). JFPLC97. Editions HERMES, Paris, 1997. [3] F. Fages (Coordonnateur). JFPLC99. HERMES Science Publications, Paris, 1999. [4] Touravane (Coordonnateur). JFPLC00. HERMES Science Europe, Paris, 2000. [5] P. Codognet (Coordonnateur). JFPLC2001. HERMES Science Publications, Paris, 2001. [6] Macworth A.K. Consistency in networks of relations. Aticial Intelligence. [7] E. Kounalis Cours dOptimisation Combinatoire. Universit de Nice-Sophia Antipolis. [8] G. Ferrand and A. Lallouet CSP consistencies as stable models. Universit dOrlans. [9] T. Walsh Non-binary constraints. University of York, England. [10] http ://www.nada.kth.se/~viggo/problemlist/compendium.html [11] http ://www710.univ-lyon1.fr/~csolnon/Site-PPC/e-miage-ppc-som.htm [12] www.sciences.univ-nantes.fr/ - Cours de Programmation par Contraintes [13] Pacte Novation - Programmation par Contraintes [14] http ://lifc.univ-fcomte.fr/ - F. Bouquet - Contrainte, Systme Expert, Jeux [15] http ://en.wikipedia.org/

36