Le problème des N-Dames
consiste à placer N dames
sur un échiquier NxN sans que l'une d'elles puisse en
prendre une autre
(avec les règles des échecs : une dame
peut prendre toute pièce située
sur sa ligne, sa colonne ou sur l'une de ses deux diagonales).
Le problème peut
être représenté avec N variables (V i
∈ [1..N], i=1 .. N), représentant la position en
colonne de la dame de
la ligne i. En effet, comme deux dames ne peuvent pas être
sur la même
ligne, et qu'il y a autant de dames que de lignes, il y a exactement
une et une seule dame par ligne.
Les contraintes imposées sur
les variables V i sont :
pour tout i ≠ j :
V i ≠ V j (ne pas mettre deux dames sur la
même colonne).
V i - i ≠ V j - j (ne pas mettre deux dames sur la
même diagonale NO-SE)
V i + i ≠ V j + j (ne pas mettre deux dame sur la
même diagonale NE-SO)
Pour plus d'information voir l'article Wikipédia
qui expose le cas
du problème des huit dames, placer 8 dames dans un
échiquier 8x8 : Problème
des huit dames
Les
buts du projet NQueens
Ce projet a pour but de
trouver toutes les solutions au problème des N
dames, en partant de N=19. Placer 19 dames sur un échiquier
19x19
cases, sans qu'aucune des dames du jeu ne puisse prendre une autre
dame, autrement dit sans qu'aucune des 19 dames ne soit sur la
même
ligne, la même colonne ou sur la même diagonale que
l'une des 18 dames
restantes.
Les responsables du projet
espèrent battre le record
mondial qui est actuellement de N=25. Le projet est actuellement dans
une étape de développement et les
résultats seront publics.
A partir de N=23, le projet devrait
être assez mûr pour le considérer comme
stable.
Contexte
Le problème des huit dames
Le problème des huit dames
consiste à placer huit
dames sur un échiquier de tel sorte qu'aucune des dames du
jeu ne
puisse en attaquer une autre. Une méthode alternative pour
représenter
ce problème consiste à placer huit pions sur une
grille huit par huit
de tel sorte qu'aucun d'entre eux ne partage une même ligne,
colonne ou
diagonale.
On sait depuis longtemps qu'il existe
92 solutions
au problème. Sur ces 92 solutions, on compte 12
modèles distincts. La
totalité des 92 solutions peuvent être
transformées en l'un des ces 12
modèles uniques par l'utilisation de la rotation ou de la
réflection.
Extension du problème à N
dames et un échiquier NxN
Si nous augmentons la taille de
l'échiquier au delà
des 8 lignes/colonnes, il est intéressant de
connaître le nombre de
solutions existantes pour chacune des valeurs de N. Par exemple, si
N=10, il y aura 724 solutions dont 92 distinctes.
Solutions du problème
des 6 dames : 4 solutions, 1 distincte
Connaissances actuelles
A ce jour, nous savons que pour N=25,
il existe 2.207.893.435.808.352 solutions [1].
Ce résultat a été obtenu par 2 groupes
de recherche indépendants :
Par l'équipe Objectweb ProActive
INRIA (proactive(AT)objectweb.org), 11 Juin 2005 [Contact :Alexandre Di
Costanzo (Alexandre.Di_Costanzo(AT)sophia.inria.fr)]. Ce calcul a
nécessité 53 années processeur
cumulées.
Résultat
confirmé par le projet NTU 25Queen de
l'Université National de Taiwan
et l'Université Ming Chuan, dirigé par Yuh-Pyng
(Arping) Shieh, 26
Juillet 2005. Ce calcul a nécessité 26.613 jours
processeur cumulés.
Je ne connais aucun projet qui tente de
résoudre le problème N=26
Echiquier
Solutions
Temps
Echiquier
Solutions
Temps (h:m:s)
1x1
1
14x14
365 596
00:00:01
2x2
0
< 0 s
15x15
2 279 184
00:00:04
3x3
0
< 0 s
16x16
14 772 512
00:00:23
4x4
2
< 0 s
17x17
95 815 104
00:02:38
5x5
10
< 0 s
18x18
666 090 624
00:19:26
6x6
4
< 0 s
19x19
4 968 057 848
02:32:24
7x7
40
< 0 s
20x20
39 029 188 884
20:35:06
8x8
92
< 0 s
21x21
314 666 222 712
174:53:45
9x9
352
< 0 s
22x22
2 691 008 701 644
832:16:56
10x10
724
< 0 s
23x23
24 233 937 684 440
7 115:11:51
11x11
2680
< 0 s
24x24
226 732 487 925 864
84 600:06:17
12x12
14200
< 0 s
25x25
2 207 893 435 808 352
?
13x13
73712
< 0 s
26x26
?
?
Les solutions du
problème des N dames et les temps pour sa
résolution sur un PC 800 Mhz et avec l'utilisation du Code J
Somers [2]
Le
projet
Ce projet est une tentative pour
trouver les
résultats au problème des N dames par
l'utilisation du cadriciel BOINC
pour différentes tailles d'échiquier en
débutant par N=19
Comment ?
Pour le problème des N
dames, le nombre de solutions
et le temps requis pour résoudre la totalité du
problème augmente d'un
facteur n! . Ainsi vouloir résoudre ce problème
sur un PC seul révèle
quasiment du marathon à partir de N=19
Mais, du fait de la nature du
problème, c'est un
candidat parfait pour la parallélisation. Ceci peut
être effectué en
plaçant les dames dans toutes les positions possibles de la
première
Colonne/ligne de l'échiquier, et alors de
résoudre les problèmes. La
solution du problème est la somme de toutes les solutions
des
sous-problèmes.
Par exemple, pour le
problème des 8 dames, nous avons :
Premier sous problème
après une subdivision (7x7 sous-échiquier)
Premier sous-problème
après deux subdivisions (6x6 sous-échiquier)
De cette façon, on peut
résoudre le problème pour un échiquier
de taille N comme pour un échiquier N N-1
(Un échiquier N avec une dame déjà
placée sur la première ligne/colonne). En faisant
cela, le problème est assez réduit pour
être calculé par un PC dans un lapse de temps
raisonnable.
Calcul
Pour chaque échiquier, le
projet envoit des unités
de travail pour les premières n/2 positions de la
première dame, puis
le nombre de solutions doit être doublé pour
obtenir la solution réelle
du problème. Dans un échiquier avec un nombre n
impair, le processus
est similaire, calculer (n-1)/2 et pour les (n+1)/2 solutions, la
seconde dame est placée uniquement dans la
première moitié de
l'échiquier.
Actuellement, le code
utilisé sur le projet se base sur le code de Jeff Somers [2],
qui a été modifié pour
intégrer les sous-échiquiers, les points de
sauvegarde (checkpoint), et le cadriciel BOINC.
Cet article a été publié le 15-09-2007 15:22. Vous pouvez suivre les commentaires suscités par cet article grâce au fil RSS 2.0. Vous pouvez laisser un commentaire.
Dernière mise à jour 10-08-2008 11:29
Vos commentaires (0)
Seul les utilisateurs enregistrés peuvent commenter un article.