Session 2 :
Modélisation de CSPs



Sommaire de la session 2 :

Objectif de la session et rappels
Exercice 1 : Retour de monnaie
Exercice 2 : Coloriage de cartes
Exercice 3 : Sel et moutarde
Exercice 4 : Send more money
Exercice 5 : Le zèbre



Objectif de la session et rappels

Lors de la session précédente, on a vu qu'un "problème de satisfaction de contraintes", ou CSP en abrégé, est un problème modélisé sous la forme d'un ensemble de contraintes posées sur des variables, chacune de ces variables prenant ses valeurs dans un domaine. De façon plus formelle, un CSP est défini par un triplet (X,D,C) tel que L'objectif de cette deuxième session de cours est de vous entrainer à modéliser un problème sous la forme d'un CSP, en identifiant l'ensemble des variables X et leurs domaines de valeurs D, ainsi que les contraintes C entre les variables. Nous vous proposons pour cela 5 problèmes différents que vous devez modéliser sous la forme de CSPs (X,D,C). Notons que cette phase de modélisation avec laquelle vous vous familiarisez aujourd'hui est un préliminaire indispensable à l'utilisation de la programmation par contraintes pour résoudre des problèmes. Les 5 problèmes que vous allez modéliser aujourd'hui seront repris dans les dernières sessions de cours afin d'être résolus à l'aide de la programmation par contraintes.


Exercice 1 : Retour de monnaie

On s'intéresse à un distributeur automatique de boissons. L'utilisateur insère des pièces de monnaie pour un total de T centimes d'Euros, puis il sélectionne une boisson, dont le prix est de P centimes d'Euros (T et P étant des multiples de 10). Il s'agit alors de calculer la monnaie à rendre, sachant que le distributeur a en réserve E2 pièces de 2 €, E1 pièces de 1 €, C50 pièces de 50 centimes, C20 pièces de 20 centimes et C10 pièces de 10 centimes.
  1. Modélisez ce problème sous la forme d'un CSP.
  2. Comment pourrait-on exprimer le fait que l'on souhaite que le distributeur rende le moins de pièces possibles ?
Indices pour ceux qui ont du mal à démarrer
Corrigé de l'exercice 1


Exercice 2 : Coloriage d'une carte

Il s'agit de colorier les 14 régions de la carte ci-dessous, de sorte que deux régions ayant une frontière en commun soient coloriées avec des couleurs différentes. On dispose pour cela des 4 couleurs suivantes : bleu, rouge, jaune et vert.


Modélisez ce problème sous la forme d'un CSP.

Indices pour ceux qui ont du mal à démarrer
Corrigé de l'exercice 2



Exercice 3 : Sel et moutarde

On s'intéresse au problème suivant, posé initialement par Lewis Caroll :
Cinq amis, Barnabé, Casimir, Désiré, Ludovic et Martial, se retrouvent chaque jour au restaurant. Ils ont établi les règles suivantes, qu'ils appliquent chaque fois qu'on leur sert du boeuf :
  • Barnabé prend du sel si et seulement si Casimir ne prend que du sel ou que de la moutarde. Il prend de la moutarde si et seulement si, ou bien Désiré ne prend ni sel ni moutarde, ou bien Martial prend les deux.
  • Casimir prend du sel si et seulement si, ou bien Barnabé ne prend qu'un des deux condiments, ou bien Martial n'en prend aucun. Il prend de la moutarde si et seulement si Désiré ou Ludovic prennent les deux condiments.
  • Désiré prend du sel si et seulement si ou bien Barnabé ne prend aucun condiment, ou bien Casimir prend les deux. Il prend de la moutarde si et seulement si Ludovic ou Martial ne prennent ni sel ni moutarde.
  • Ludovic prend du sel si et seulement si Barnabé ou Désiré ne prennent ni sel ni moutarde. Il prend de la moutarde si et seulement si Casimir ou Martial ne prennent ni sel, ni moutarde.
  • Martial prend du sel si et seulement si Barnabé ou Ludovic prennent des deux condiments. Il prend de la moutarde si et seulement si Casimir ou Désiré ne prennent qu'un seul condiment.
En fin de compte, que vont-ils mettre sur leurs steaks ?

Modélisez ce problème sous la forme d'un CSP.

Indices pour ceux qui ont du mal à démarrer
Corrigé de l'exercice 3


Exercice 4 : Send more money

On considère l'addition suivante :

   SEND
 + MORE
-------
= MONEY

où chaque lettre représente un chiffre différent (compris entre 0 et 9). On souhaite connaitre la valeur de chaque lettre, sachant que la première lettre de chaque mot représente un chiffre différent de 0.

Modélisez ce problème sous la forme d'un CSP.

Indices pour ceux qui ont du mal à démarrer
Corrigé de l'exercice 4


Exercice 5 : Le zèbre

On s'intéresse au problème suivant, posé initialement par Lewis Caroll :
Cinq maisons consécutives, de couleurs différentes, sont habitées par des hommes de différentes nationalités. Chacun possède un animal différent, a une boisson préférée différente et fume des cigarettes différentes. De plus, on sait que :
  1. Le norvégien habite la première maison,
  2. La maison à coté de celle du norvégien est bleue,
  3. L'habitant de la troisième maison boit du lait,
  4. L'anglais habite la maison rouge,
  5. L'habitant de la maison verte boit du café,
  6. L'habitant de la maison jaune fume des kools,
  7. La maison blanche se trouve juste après la verte,
  8. L'espagnol a un chien,
  9. L'ukrainien boit du thé,
  10. Le japonais fume des cravens,
  11. Le fumeur de old golds a un escargot,
  12. Le fumeur de gitanes boit du vin,
  13. Le voisin du fumeur de Chesterfields a un renard,
  14. Le voisin du fumeur de kools a un cheval.
Qui boit de l'eau ? A qui appartient le zèbre ?

Modélisez ce problème sous la forme d'un CSP.

Indices pour ceux qui ont du mal à démarrer
Corrigé de l'exercice 5