80
Stratégies pour la résolution de problèmes combinatoires mercredi 19 mars 2014 Pierre-Edouard Portier http://liris.cnrs.fr/pierre-edouard.portier/ia.html

combinatoires résolution de problèmes Stratégies pour la

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: combinatoires résolution de problèmes Stratégies pour la

Stratégies pour la résolution de problèmes

combinatoiresmercredi 19 mars 2014Pierre-Edouard Portier

http://liris.cnrs.fr/pierre-edouard.portier/ia.html

Page 2: combinatoires résolution de problèmes Stratégies pour la

La recherche exhaustive.

Page 4: combinatoires résolution de problèmes Stratégies pour la

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”

Page 5: combinatoires résolution de problèmes Stratégies pour la

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

Page 6: combinatoires résolution de problèmes Stratégies pour la

Combien de grilles possibles ?

Page 7: combinatoires résolution de problèmes Stratégies pour la

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

Page 8: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^1

Page 9: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^2

Page 10: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^3

Page 11: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^4

Page 12: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^5

Page 13: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^6

Page 14: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^7

Page 15: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^8

Page 16: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^9

Page 17: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^10

Page 18: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^11

Page 19: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^12

Page 20: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^13

Page 21: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^14

Page 22: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^21

Page 23: combinatoires résolution de problèmes Stratégies pour la

http://www.powersof10.com/10^26

Page 24: combinatoires résolution de problèmes Stratégies pour la

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

Page 25: combinatoires résolution de problèmes Stratégies pour la

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

Page 26: combinatoires résolution de problèmes Stratégies pour la

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

Page 27: combinatoires résolution de problèmes Stratégies pour la

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

Page 28: combinatoires résolution de problèmes Stratégies pour la

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

Page 29: combinatoires résolution de problèmes Stratégies pour la

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.

Page 30: combinatoires résolution de problèmes Stratégies pour la

Version naïve en GNU Prolog

Page 31: combinatoires résolution de problèmes Stratégies pour la
Page 32: combinatoires résolution de problèmes Stratégies pour la

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

Page 33: combinatoires résolution de problèmes Stratégies pour la

Backtracking

Page 34: combinatoires résolution de problèmes Stratégies pour la

Ê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

Page 35: combinatoires résolution de problèmes Stratégies pour la

N-Reines :Placer N reines sur un échiquier de taille N*N pour qu'aucune ne soit en prise.

Page 36: combinatoires résolution de problèmes Stratégies pour la

Quelle est la taille de l'espace de recherche (nombre de "solutions" candidates) pour le problème des 4-reines ?

Page 37: combinatoires résolution de problèmes Stratégies pour la

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.

Page 38: combinatoires résolution de problèmes Stratégies pour la
Page 39: combinatoires résolution de problèmes Stratégies pour la
Page 40: combinatoires résolution de problèmes Stratégies pour la

nil nil

nil nil nil nil

Page 41: combinatoires résolution de problèmes Stratégies pour la

nil nil

nil nil nil nil nil nil nil

nil nil nil nil

Page 42: combinatoires résolution de problèmes Stratégies pour la

nil nil

nil nil nil nil nil nil nil

nil nil nil nil

nil nil nil

Etc.

nil nil nil

Page 43: combinatoires résolution de problèmes Stratégies pour la

Divide Ut Imperes

Page 44: combinatoires résolution de problèmes Stratégies pour la

Dans un groupe de personnes, une célébrité ne connaît personne mais est connue par tout le monde.

Page 45: combinatoires résolution de problèmes Stratégies pour la

● 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é.

Page 46: combinatoires résolution de problèmes Stratégies pour la

Couvrir avec des triominos en forme de L, un damier de 2nx2n cases dont une case est interdite.

Page 47: combinatoires résolution de problèmes Stratégies pour la
Page 48: combinatoires résolution de problèmes Stratégies pour la
Page 49: combinatoires résolution de problèmes Stratégies pour la
Page 50: combinatoires résolution de problèmes Stratégies pour la
Page 51: combinatoires résolution de problèmes Stratégies pour la

Transformer le problème.

Page 52: combinatoires résolution de problèmes Stratégies pour la

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.

Page 53: combinatoires résolution de problèmes Stratégies pour la

Utiliser la numération binaire.

http://fr.wikipedia.org/wiki/Num%C3%A9ration_Bibi

Page 54: combinatoires résolution de problèmes Stratégies pour la

● 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.

Page 60: combinatoires résolution de problèmes Stratégies pour la

Approches gloutonnes.

Page 61: combinatoires résolution de problèmes Stratégies pour la

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.

Page 62: combinatoires résolution de problèmes Stratégies pour la

Placer le plus possible de rois non en prise.

Page 65: combinatoires résolution de problèmes Stratégies pour la

Placer le plus possible de rois non en prise.

Page 66: combinatoires résolution de problèmes Stratégies pour la

Est-ce la solution optimale ?

Page 67: combinatoires résolution de problèmes Stratégies pour la

Est-ce la solution optimale ?

: OUI !

Page 68: combinatoires résolution de problèmes Stratégies pour la

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.

Page 69: combinatoires résolution de problèmes Stratégies pour la

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.

Page 70: combinatoires résolution de problèmes Stratégies pour la

Méthodes itératives

Page 71: combinatoires résolution de problèmes Stratégies pour la

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.

Page 72: combinatoires résolution de problèmes Stratégies pour la

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.

Page 73: combinatoires résolution de problèmes Stratégies pour la

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 ?

Page 74: combinatoires résolution de problèmes Stratégies pour la

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.

Page 75: combinatoires résolution de problèmes Stratégies pour la

Nous verrons des méthodes itératives telles que : ● recuit simulé● recherche tabou● algorithmes génétiques● ...

Page 76: combinatoires résolution de problèmes Stratégies pour la

Programmation dynamique

Page 77: combinatoires résolution de problèmes Stratégies pour la

Ne pas recalculer la solution d'un sous-problème déjà rencontré.

Page 78: combinatoires résolution de problèmes Stratégies pour la

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)

Page 79: combinatoires résolution de problèmes Stratégies pour la

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.

Page 80: combinatoires résolution de problèmes Stratégies pour la

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