
Résoudre le
problème des N-Dames de N=18 jusqu'à N=25 (record
mondial)
INSCRIPTION
Télécharger
BOINC (tutorial)
URL du projet : http://nqueens.ing.udec.cl/
Système d'exploitation :
Linux, Windows
|
Liens du projet
|
L'Alliance
Francophone
|
Statistiques |
|
|
|
|
Le problème des
N-Dames
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
résoudre le 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 égaler 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
|
|
15x15
|
2 279 184
|
00:00:04
|
|
3x3
|
0
|
|
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
|
|
19x19
|
4 968 057 848
|
02:32:24
|
|
7x7
|
40
|
|
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
|
|
23x23
|
24 233 937 684 440
|
7 115:11:51
|
|
11x11
|
2680
|
|
24x24
|
227 514 171 973 736
|
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.
Dernière mise à jour : 13-12-2007 22:37
|