Quand le programme est un problème
description
Transcript of Quand le programme est un problème
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Quand le programme est un problème
Propagation de contrainte et programmation automatique
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
PLAN
Quelques mots d’ALICE
Son extension : RABBIT
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
ALICEUn langage déclaratif pour poser les problèmesUn résolveur général incorporant des méthodes de résolution variées qui s’appliquent de manière non déterminée à l’avanceUn niveau « méta » qui choisit à tout instant la meilleure méthode à appliquer sur le (sous-) problème à résoudre i.e. compte-tenu des choix déjà faits et des implications déjà déduites
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
ALICE, un exemple :trouver les solutions entières positives de l’équation : x3 + 119 = 66 x
Tout d’abord, on déduit : x3 < 66 x
i.e. x2 < 66 , soit x 8
Donc x [1, 8]
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
x3 + 119 = 66 x
Raisonnons sur les parités.
119 est impair, 66 x est pair x, donc x3 est impair, donc x est impair.
D’où x {1, 3, 5, 7}
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
On tient compte de l’égalité des intervalles :66 x [120, 462] donc : x [ 120 /66, 462/66]Soit : x [2, 7] mais compte-tenu des valeurs possibles de x, on obtient finalement x {3, 5, 7}
x3 + 119 = 66 x
Raisonnons sur les intervalles. x [1, 7], d’où l’équation sur les intervalles :
[1, 343] + [119, 119] = [66, 462]
i.e. : [120, 462] = [66, 462]
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
x3 + 119 = 66 xRaisonnons encore sur les intervalles. On a : x [3, 7], d’où :
[27, 343] + [119, 119] = [198, 462]i.e. : [146, 462] = [198, 462]On tient compte de l’égalité des intervalles :x3 + 119 [198, 462] donc : x3 [79, 343] x3 79 x 5, donc : x [5, 7]on obtient finalement x {5, 7}
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
x3 + 119 = 66 xRaisonnons toujours sur les intervalles. On a : x [5, 7], d’où :
[125, 343] + [119, 119] = [330, 462]i.e. : [244, 462] = [330, 462]On tient compte de l’égalité des intervalles :x3 + 119 [330, 462] donc : x3 [211, 343] x3 211 x 6, donc : x [6, 7]on obtient finalement la solution x {7}
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
x3 + 119 = 66 xRésolution par RABBIT. idem : x3 < 66 x, soit x 8Puis RABBIT déduit : x3 15 x modulo 17 (vient de 119 = 717 et 66=317+15)D’où x2 15 modulo 17 car x 17(vient de x (x2 – 15) modulo 17, avec la règle :ab modulo k se réécrit (a modulo k) ou (b modulo k) si k
premier)Donc : x2 = p 17 + 15 et p {1, 2} puis énumération sur p
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
Un petit problème posé par Jean-Louis Laurière.
Trois joueurs A, B, C organisent un tournoi d’échecs, chaque joueur dispute 7 parties contre chacun de ses 2 adversaires. A l’issue du tournoi,
A déclare : je suis satisfait, car c’est moi qui ai gagné le plus de parties
B déclare : je suis satisfait, car c’est moi qui ai perdu le moins de parties
C déclare : je suis satisfait, car j’ai gagné le tournoi
Combien C a-t-il fait de parties nulles ?
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
Modélisation du problème
GAB, NAB, GBC, NBC, GAC, NAC [0, 7]
GAB + NAB <= 7
GBC + NBC <= 7
GAC + NAC <= 7
2 GAB + GAC + NAB - GBC >= 8
GAB + 2 GAC + GBC + NBC + NAC >= 15
2 GAB - GBC + GAC - NBC + NAB + NAC <= 6
- GAB + GAC + 2 GBC + NBC >= 8
2 GAB + 2 GBC + 4 GAC + NBC + NAB + 2 NAC <= 27
- 2 GAB + 2 GAC + 4 GBC + 2 NBC - NAB + NAC <= 13
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
SIREN : un système expert de génération automatique de programmes résolvant des problèmes
Problème combinatoireManipulation formelles de contraintes
Propagation de contraintes
Génération du programme d’énumération
Compilation et exécution du programme
Solutions du problème combinatoire
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
SIREN : structure des programmes générés
pour toute valeur de GAB
pour toute valeur de NAB
si (GAB + NAB) 7 alors
pour toute valeur de GBC
pour toute valeur de NBC
si (GAB + NAB) 7 alors
etc.
pour toute valeur de GAC
si contraintes résiduelles satisfaites alors
écriture de la solution
fin si
fin pour
fin si
fin pour
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
RABBIT : extension d’ALICE
Il existe des cas où le schéma choix + propagation n’est pas efficace
La résolution après propagation est bien avancée
Il reste peu de contraintes mais difficiles à analyser
Il faut énumérerLe domaine de recherche est encore grand
Il faut énumérer de manière très efficace, donc avec un programme d’énumération compilé
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
RABBIT : programmes générésIl faut déterminer l’ordre d’instanciation des variables et de prise en compte des contraintes
Tant qu'il existe des contraintes
Associer un poids à chaque opérateur de chacune des contraintes restantes = <= >= != ==> autres100 30 30 2 20 10 5 1Diviser ce poids par le nombre de variables de la contrainte.
Associer une masse à chaque inconnue :
masse de xi = nombre d'occurrences de xi dans l'ensemble des contraintesaffectées de leur poids et du coefficient multiplicateur de xiquand il existe.
Déterminer la contrainte dont la masse est la plus forte.Empiler cette contrainte et les variables qu'elle concerne dans l'ordre de leurs masses et
ignorer dorénavant cette contrainte.
Fin Tantque.
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
RABBIT : programmes généréscompilation des contraintesExemples :
Cas des inégalités Haut(i1) + Haut(i2) + Haut(i3) + 6 < hauteur
est traduit en : Si ( Haut(i1) + Haut(i2) + Haut(i3) + 6 < hauteur)
Cas du "Quel que soit" i [4, K] P(i)
donne : Pour ( i= 4; i<= K; i++) Si !P(i) Alors échec
Cas du "Il existe" i [K, K+4] P(i)
donne : ok= 0;
Pour ( i= K; i<= K+4; i++) Si P(i) Alors ok= 1.
Si !ok Alors échec.
Cas des implications V(i) < n W(V(i)) = V(i+1)
devient : Si V(i) < n alors
Si W(V(i)) != V(i+1) alors échec
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
RABBIT : extension d’ALICEPropagation de contraintes
Propagation de contraintes
Propagation de contraintes
choix
Propagation de contraintes
choix
Propagation de contraintes
choixchoix
échec
Génération d’un
programme
échecs
Génération d’un
programme
solutions
Génération d’un
programme
Propagation de
contraintes
choix
Propagation de contraintes
solution
Propagation de
contraintes
solution
échecs
Génération d’un
programme
solution
22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE
Propagation de contrainte et programmation automatique
RABBIT : parallélisation ?Propagation de contraintes
Propagation de contraintes
Propagation de contraintes
choix
Propagation de contraintes
choix
Propagation de contraintes
choixchoix
échec
Génération d’un
programme
échecs
Génération d’un
programme
solutions
Génération d’un
programme
solution échecs
échecs
Génération d’un
programme
solution
Génération d’un
programme
Génération d’un
programme