combinatoires résolution de problèmes stratégies pour la
TRANSCRIPT
Stratégies pour la résolution de problèmes
combinatoiresmercredi 19 mars 2014Pierre-Edouard Portier
http://liris.cnrs.fr/pierre-edouard.portier/ia.html
La recherche exhaustive.
http://www-cs-faculty.stanford.edu/~uno/fg.html
Knuth, Donald E. "Selected Papers on Fun and Games." AMC 10 (2011): 12.
Chapter 11. “Very Magic Squares”
carré magique
● {X1,X2,X3,X4,X5,X6,X7,X8,X9} = {1,2,3,4,5,6,7,8,9}
● sommes des lignes, colonnes, et diagonales égales
● 3*3 = 9 cases
X1 X2 X3
X4 X5 X6
X7 X8 X9
Combien de grilles possibles ?
carré magique
● {X1,X2,X3,X4,X5,X6,X7,X8,X9} = {1,2,3,4,5,6,7,8,9}
● sommes des lignes, colonnes, et diagonales égales
● 3*3 = 9 cases● 9! grilles possibles● pour 5*5 : 25! ~= 1,5.1025 grilles possibles
X1 X2 X3
X4 X5 X6
X7 X8 X9
http://www.powersof10.com/10^1
http://www.powersof10.com/10^2
http://www.powersof10.com/10^3
http://www.powersof10.com/10^4
http://www.powersof10.com/10^5
http://www.powersof10.com/10^6
http://www.powersof10.com/10^7
http://www.powersof10.com/10^8
http://www.powersof10.com/10^9
http://www.powersof10.com/10^10
http://www.powersof10.com/10^11
http://www.powersof10.com/10^12
http://www.powersof10.com/10^13
http://www.powersof10.com/10^14
http://www.powersof10.com/10^21
http://www.powersof10.com/10^26
carré magique
● {X1,X2,X3,X4,X5,X6,X7,X8,X9} = {1,2,3,4,5,6,7,8,9}● sommes des lignes, colonnes, et diagonales
égales● 3*3 = 9 cases● 9! grilles possibles● pour 5*5 : 25! ~= 1,5.1025 grilles possibles● besoin de plus d'intelligence... !
X1 X2 X3
X4 X5 X6
X7 X8 X9
carré magique
{X1+X2+X3+X4+X5+X6+X7+X8+X9=1+2+3+4+5+6+7+8+9=45=3*(X1+X2+X3)=3*15
Donc, (X1+X2+X3) = (X4+X5+X6) = ... = 15
X1 X2 X3
X4 X5 X6
X7 X8 X9
carré magique
(X4+X5+X6) + (X2+X5+X8) + (X1+X5+X9) + (X7+X5+X3)=3*X5 + (X1+X2+X3) + (X4+X5+X6) + (X7+X8+X9)=3*X5 + 3*15=4*15
Donc, X5=5
● (X1+X2+X3) = (X4+X5+X6) = ... = 15
X1 X2 X3
X4 X5 X6
X7 X8 X9
carré magique
15 = 1 + 5 + 915 = 2 + 5 + 815 = 3 + 5 + 715 = 4 + 5 + 6
● (X1+X2+X3) = (X4+X5+X6) = ... = 15
● X5 = 5
1
5
9
1
5
9
besoin de deux fois(8,6)IMPOSSIBLE
4 configurations similaires par symétries
X1 x2 x3
x4 x5 x6
x7 x8 x9
carré magique
15 = 1 + 5 + 915 = 2 + 5 + 815 = 3 + 5 + 715 = 4 + 5 + 6
● (X1+X2+X3) = (X4+X5+X6) = ... = 15
● X5 = 5
1
5
9
1
5
9
6 8 8 6
4*2=8 solutions pour le carré magique 3x3
X1 x2 x3
x4 x5 x6
x7 x8 x9
Magic Square as a CSP(Constraint Satisfaction Problem)
Problème de recherche dans un espace d’état pour lequel un état est représentable par un ensemble de variable Xi qui prennent valeur dans des domaines Di. L’ensemble des états recherchés est décrit par un ensemble de contraintes qui spécifient les combinaisons autorisées pour des sous-ensembles de variables.
Version naïve en GNU Prolog
Voir magsq.pl pour une version généralisée à des carrés de taille N.
Voir par exemple cours_clp.pdf pour une introduction à la programmation par contraintes avec des applications gprolog.
https://github.com/maandree/gprolog/blob/master/examples/ExamplesFD/magsq.pl
http://perso.univ-st-etienne.fr/frel9915/Prolog/cours_clp.pdf
Backtracking
Être capable :● de construire une solution pas à
pas● d'organiser les solutions partielles
selon un arbre construit en profondeur
● de décider si une solution partielle est impossible
N-Reines :Placer N reines sur un échiquier de taille N*N pour qu'aucune ne soit en prise.
Quelle est la taille de l'espace de recherche (nombre de "solutions" candidates) pour le problème des 4-reines ?
16! / ((16 - 4)! * 4!) = 1820
placer 4 reines les reines sont deux-à-deux indistinguables
Pour une excellente introduction aux mathématiques nécessaires au programmeur, voir la section “Mathematical Preliminaries” du chapitre 1 “Basic Concepts” de :
Knuth, Donald Ervin. The art of computer programming. Pearson Education, 2005.
nil nil
nil nil nil nil
nil nil
nil nil nil nil nil nil nil
nil nil nil nil
nil nil
nil nil nil nil nil nil nil
nil nil nil nil
nil nil nil
Etc.
nil nil nil
Divide Ut Imperes
Dans un groupe de personnes, une célébrité ne connaît personne mais est connue par tout le monde.
● Hypothèse : il y a une célébrité.● Tant qu'il y a au moins 2 personnes
○ Choisir deux personnes (P1 et P2).○ Demander à P1 si elle connaît P2.
■ Oui : retirer P1■ Non : retirer P2
● La personne restante est la célébrité.
Couvrir avec des triominos en forme de L, un damier de 2nx2n cases dont une case est interdite.
Transformer le problème.
1000 pièces de 1€ à répartir dans 10 boîtes afin que toute valeur comprise entre 1€ et 1000€ corresponde à une combinaison de boîtes.
Utiliser la numération binaire.
http://fr.wikipedia.org/wiki/Num%C3%A9ration_Bibi
● 20, 21, 22, 23, 24, 25, 26, 27, 28 dans les neuf premières boîtes
● 1000 - (20+21+...+28) = 489 dans la dernière boîte
● Toute somme inférieure ou égale à 511 peut être construite avec les neuf premières boîtes.
● Toutes les autres sommes peuvent être construites en utilisant la dernière boîte.
● Pour certaines sommes, il y a plusieurs constructions possibles.
Les cavaliers noirs doivent prendre la place des cavaliers blancs (et réciproquement), en minimisant le nombre de coups.
1 2 3
4 5 6
7 8 9
1 2 3
4 5 6
7 8 9
12
3
4 6
7 98
1 2 3
4 5 6
7 8 9
12
3
4 6
7 98
1 8
6 3
7 4
2 9
Approches gloutonnes.
Construire une solution pas à pas, en prenant à chaque pas la décision qui est localement la meilleure.
Il n'est pas toujours possible de construire une solution ainsi.
La solution construite n'est pas toujours optimale.
Placer le plus possible de rois non en prise.
Placer le plus possible de rois non en prise.
Placer le plus possible de rois non en prise.
Placer le plus possible de rois non en prise.
Est-ce la solution optimale ?
Est-ce la solution optimale ?
: OUI !
4 personnes et 1 lampe torche doivent traverser un pont.Le pont supporte au plus 2 personnes par traversée.
A traverse en 01 minB traverse en 02 minC traverse en 05 minD traverse en 10 min
Une traversée se fait au rythme de la personne la plus lente.
Solution gloutonne :(2 + 1) + (5 + 1) + 10 = 19 min
Mais il existe une solution en 17 min.
Il est intéressant de réfléchir à un algorithme pour résoudre de façon optimale le problème de la torche généralisée à n personnes.
Méthodes itératives
Partir d'une "solution" non optimale ou même fausse, et par transformations successives atteindre une solution si possible optimale.
Il faut essayer de prouver que l'algorithme s'arrête, et que la solution est optimale.
Soit une matrice m*n de réels.Transformer la matrice pour que les sommes de chaque ligne et de chaque colonne soient positives.
L'unique opération élémentaire autorisée est : changer les signes de tous les nombres d'une ligne ou d'une colonne.
Une solution itérative consisterait à chercher à chaque étape une ligne ou une colonne dont la somme est négative ou nulle et à changer les signes des nombres qui la composent.
Cet algorithme est-il correct ? Termine-t-il ?
Soit S la somme des éléments de la matrice.
A chaque étape de l'algorithme, S augmente.
Or il y a un nombre fini de solutions potentielles (2m*n), et donc un nombre fini de telles sommes S.
Cette somme, un monovariant, prouve que l'algorithme termine.
Nous verrons des méthodes itératives telles que : ● recuit simulé● recherche tabou● algorithmes génétiques● ...
Programmation dynamique
Ne pas recalculer la solution d'un sous-problème déjà rencontré.
Arrivée
Mouvements autorisés :
Récupérer le maximum de pièces.
M(i,j) = le nombre max de pièces qui ont pu être récupérées une fois la case (i,j) atteinte.
Vij = 1 si il y a une pièce sur la case (i,j), 0 sinon.
Départ (i=1, j=1)
Départ (i=1, j=1)
Arrivée
M(i,j) = max[ M(i-1,j), M(i,j-1) ] + Vij
M(0,j) = 0M(i,0) = 0
Mouvements autorisés :
Récupérer le maximum de pièces.
M(i,j) = le nombre max de pièces qui ont pu être récupérées une fois la case (i,j) atteinte.
Vij = 1 si il y a une pièce sur la case (i,j), 0 sinon.
0 0 0 0
0
0
0
0
1 1
1 1
1
1
1
1
2 2 2
2
2
3 3
3 3
3 4
4
5
5