Comment l'ordinateur résout-il le cube ?

Si VRAIMENT aucun des autres forums ne vous inspire pour poster votre question ...
Répondre
Avatar du membre
cubix147
Inamovible
Messages : 440
Enregistré le : mar. juil. 17, 2007 11:19 pm
Localisation : 59
Contact :

Comment l'ordinateur résout-il le cube ?

Message par cubix147 »

Qui pourrait m'expliquer comment un ordinateur résout le cube en une vingtaine de mouvements ?

De façon simple SVP , je n'y connais pas grand chose en programmation ... donc un peu de pédagogie est requise :-D

Ce que je crois connaître:
- ça n'est pas une méthode "humaine" avec qq formules
- ni une méthode de Blind (qui semble être très robotique pourtant...)
- et pis c'est tout...
Image
Bannière atoutcubes.com
TMOY
Nous ne t'oublierons pas
Messages : 6854
Enregistré le : mar. avr. 29, 2008 6:38 pm
Localisation : Vous avez 15 secondes pour me repérer
Contact :

Re: Comment l'ordinateur résout-il le cube ?

Message par TMOY »

Je pense que le mieux est encore de lire la description rapide faite par l'auteur de la méthode lui-même sur son site:

http://kociemba.org/cube.htm" onclick="window.open(this.href);return false; (cliquer sur The Two-Phase-Algorithm).
Image
Avatar du membre
Cubeur-manchot
VIP au club des 1000
Messages : 2999
Enregistré le : jeu. sept. 11, 2014 5:16 pm
Localisation : Bures-sur-Yvette (91)
Contact :

Re: Comment l'ordinateur résout-il le cube ?

Message par Cubeur-manchot »

La résolution se fait en deux étapes :
- la première passe d'un cube mélangé à un cube de la forme suivante (*) :
- la face blanche contient uniquement des pièces blanches et des pièces jaunes
- la face jaune contient uniquement des pièces blanches et des pièces jaunes
- sur la tranche du milieu, les edges bleus sont sur les faces bleue et verte, les edges verts sont sur les faces bleue et verte, et pareil avec rouge/orange sur les faces rouge/orange
- la deuxième étape finit la résolution du cube en utilisant U, U', U2, D, D', D2, R2, F2, B2, L2 (c'est à dire les mouvements normaux pour les faces U et D, et uniquement les mouvements doubles pour les autres faces)

(*) pour voir à quoi ressemble vraiment un cube de cette forme, mélange-le en utilisant uniquement U, U', U2, D, D', D2, R2, F2, B2, L2

NB : concrètement, pour faire chacune de ces deux étapes, l'ordinateur "génère" la solution, c'est à dire qu'il fait tous les mouvements possibles, puis il regarde s'il a résolu le cube en 1 mouvement, puis s'il n'a pas réussi il rapplique tous les mouvements sur chacun des cubes qu'il a réussi à former avec 1 seul mouvement, etc et il continue à appliquer tous ses mouvements sur tous ses cubes en mémoire jusqu'à résoudre le cube (ou jusqu'à trouver une forme convenable comme par exemple pour la première étape) en générant une séquence de mouvements qui convient.

NB : bien sûr, on doit rajouter les symétries, on n'est pas obligés de choisir les faces blanche et jaune, on peut choisir les bleue et verte par exemple :smt023:
cubix147 a écrit :- ça n'est pas une méthode "humaine" avec qq formules
En effet,
- on ne peut pas connaitre dans notre petite tête tous les états du cube que l'on peut atteindre avec 10 mouvements par exemple (tout simplement parce qu'il y en a beaucoup trop !)
- l'ordinateur ne connait aucune formule, il cherche brutalement la solution en testant toutes les combinaisons possibles de mouvements
cubix147 a écrit :Qui pourrait m'expliquer comment un ordinateur résout le cube en une vingtaine de mouvements ?
Pourquoi ça ne prend QUE 20 mouvements environ et que c'est quasiment optimal ? (la question qui tue... :smt040: )
(Techniquement, l'ordinateur découpe le groupe du cube en produit direct de sous-groupes de taille à peu près identique : 2,217,093,120 paquets de 19,508,428,800 éléments, et ces deux nombres étant du même ordre de grandeur, on va voir après que ça donne des trucs sympas)
Dans la pratique, imagine un rectangle d'aire égale à 9, et note x et y sa largeur et sa longueur.
Et le périmètre minimum est obtenu pour x=y (= 3)
Par analogie : notre groupe de toutes les combinaisons du cube, on va le découper en produit (exactement comme pour l'aire du rectangle) de 2 sous-groupes, et de la même façon quand on a les tailles assez proches (tout comme on avait x=y) on a un nombre de mouvements qui est proche du minimal (idem périmètre minimal). C'est tout pareil :)
G=H*I (son vrai nom c'est pas I mais je ne sais plus comment c'est, bref peu importe)
avant on avait A=x*y
on voit bien que si taille(H) et taille(I) sont environ égales, c'est pareil que x et y environ égaux, donc ça minimise le nombre de coups :P

Mais après, c'est bien beau tout ça, mais pourquoi est-ce que cette méthode en deux temps et ces tailles de sous-groupes coïncident ?
Aussi étrange que cela puisse paraître, c'est un pur coup de bol ! Eh oui, les gens qui ont bossé dessus ont cherché à découper le groupe du cube en parties égales, donc ils ont cherché une forme générale de l'étape intermédiaire, et il se trouve que celle-ci (définie tout en haut) convient, donc ils l'ont gardé.
Et pourquoi est-ce qu'ils ne font pas une résolution brutale en une seule étape ? 43 milliards de milliards de combinaisons, soit plusieurs millions de téraoctets de mémoire, c'est à dire inimaginable d'espérer avoir une solution sur un ordinateur hyperpuissant avant quelques centaines d'années... tout ça pour une seule résolution ! bref, mauvaise idée :mrgreen:
TMOY
Nous ne t'oublierons pas
Messages : 6854
Enregistré le : mar. avr. 29, 2008 6:38 pm
Localisation : Vous avez 15 secondes pour me repérer
Contact :

Re: Comment l'ordinateur résout-il le cube ?

Message par TMOY »

Cubeur-manchot a écrit : (Techniquement, l'ordinateur découpe le groupe du cube en produit direct de sous-groupes
Euh non, perdu, il ne s'agit pas d'un produit direct. Ni même semi-direct, d'ailleurs, puisque le groupe <U,D,U2,D2,R2,L2,B2,F2> n'est pas un sous-groupe distingué du groupe du cube. En fait il n'y a pas de produit du tout, juste un sous-groupe auquel on se ramène.
Image
Avatar du membre
Mr0.
Sexy délégué
Messages : 2722
Enregistré le : jeu. avr. 03, 2008 8:38 pm
Localisation : Bordeaux
Contact :

Re: Comment l'ordinateur résout-il le cube ?

Message par Mr0. »

Cubeur-manchot a écrit :NB : concrètement, pour faire chacune de ces deux étapes, l'ordinateur "génère" la solution, c'est à dire qu'il fait tous les mouvements possibles, puis il regarde s'il a résolu le cube en 1 mouvement, puis s'il n'a pas réussi il rapplique tous les mouvements sur chacun des cubes qu'il a réussi à former avec 1 seul mouvement, etc et il continue à appliquer tous ses mouvements sur tous ses cubes en mémoire jusqu'à résoudre le cube (ou jusqu'à trouver une forme convenable comme par exemple pour la première étape) en générant une séquence de mouvements qui convient.
Je pense que c'est important de préciser qu'il n'explore pas tous les mouvements possibles à chaque profondeur, et qu'il ne stocke pas en mémoire toutes les positions sur lesquelles il tombe : ça prendrait juste la vie pour s'exécuter, en plus d'inutilement utiliser une place énorme en mémoire.

Le programme dispose de deux heuristiques afin de supprimer ("pruner") certains mouvements de sa recherche : la première, utilisée lors de la phase 1, prend en paramètre une position du cube, et lui retourne la distance exacte au sous groupe H<U,D,R2,L2,B2,F2>. La seconde, utilisée lors de la phase 2, lui retourne une distance exacte au cube résolu.

Il commence donc par récupérer la distance minimale à H pour sa position initiale (et ses symétries...), qui est sa "profondeur minimale" pour la phase 1.
Lors de la première phase il va chercher une solution jusqu'à H en prunant à la volée : à chaque position il va appliquer les mouvements possibles, et garder le premier qui diminue sa distance à H. Et il recommence la même chose à la position suivante jusqu'à tomber dans H.
Une fois dans H il passe à la phase 2 et récupère une solution optimale pour sa position.

Pour trouver d'autres solutions il va augmenter sa profondeur minimale pour la phase 1, et chercher des solutions sous optimales pour arriver dans H, dans l'espoir que le nombre de mouvements dans la phase 2 diminue.
Pour avoir une solution optimale il suffit d'attendre que la solution dans la phase 2 soit de 0 mouvements, où que ta profondeur minimale ait atteinte la taille de ta meilleure solution jusqu'à présent.

Tu peux aussi regarder la doc d'implémentation de cube 20 ici : http://cube20.org/src/" onclick="window.open(this.href);return false;" onclick="window.open(this.href);return false; (les pdf), ils sont plus compréhensibles que de regarder directement le code source...
Avatar du membre
Cubeur-manchot
VIP au club des 1000
Messages : 2999
Enregistré le : jeu. sept. 11, 2014 5:16 pm
Localisation : Bures-sur-Yvette (91)
Contact :

Re: Comment l'ordinateur résout-il le cube ?

Message par Cubeur-manchot »

Mr0. a écrit :Le programme dispose de deux heuristiques afin de supprimer ("pruner") certains mouvements de sa recherche : la première, utilisée lors de la phase 1, prend en paramètre une position du cube, et lui retourne la distance exacte au sous groupe H<U,D,R2,L2,B2,F2>. La seconde, utilisée lors de la phase 2, lui retourne une distance approximative au cube résolu.
Ah d'accord je ne savais pas qu'il y avait une façon de déterminer la distance à H, dans ce cas effectivement c'est plus logique. Je pensais que, par exemple pour la première étape, vu qu'il y a en général une douzaine de mouvements, en utilisant des symétries et des fonctions simples dans le code, c'était faisable (j'ai codé la résolution brutalement sur mon ordi (et sur Caml en plus !) et il trouve rapidement jusqu'à 8-9 mouvements sans utiliser aucune symétrie ni aucune table, aucun raccourci, donc 3 étapes de plus avec plein d'outils c'est réalisable...). :(
Par ailleurs, pour les résolutions avec remplissage partiel du cube (des pièces grises restant indéterminées avant la résolution), le programme affiche bien les séquences de mouvements possibles en profondeur (toutes les 11, puis toutes les 12, etc). Et est-ce que pendant cette résolution aussi l'ordi utilise des heuristiques ou bien génère-t-il bêtement en testant la forme après ? :?
TMOY a écrit :
Cubeur-manchot a écrit : (Techniquement, l'ordinateur découpe le groupe du cube en produit direct de sous-groupes
Euh non, perdu, il ne s'agit pas d'un produit direct. Ni même semi-direct, d'ailleurs, puisque le groupe <U,D,U2,D2,R2,L2,B2,F2> n'est pas un sous-groupe distingué du groupe du cube. En fait il n'y a pas de produit du tout, juste un sous-groupe auquel on se ramène.
D'accord, effectivement les séquences de mouvements de la première étape couvrent tout G donc tu as raison :oui:
Répondre