Résoudre un Rubik's Cube en marchant dans un graphe

Chaque mélange du cube est un point, chaque mouvement un chemin vers un point voisin. Ce solveur cherche le trajet vers le cube résolu en traversant deux graphes emboîtés. Chaque étape est expliquée à deux niveaux : en clair, et avec les mathématiques. À tout moment, tu peux forcer un autre coup et voir comment le solveur s'adapte.

U dessus · D dessous · R droite · L gauche · F avant · B arrière — seul : quart de tour dans le sens des aiguilles d'une montre (en regardant la face) · ′ : sens inverse · 2 : demi-tour.
Choisis une couleur, puis clique sur les cases du patron (les centres sont fixes). Recopie ton propre cube, puis valide.
en coups · ·
Hors résolution, ces boutons tournent le cube. Pendant une résolution, ils forcent un détour depuis l'étape courante.
Construction des tables de distances…
phase 1 phase 2 détour imposé · voisins où h baisse stagne monte. Distance au centre ∝ h. Clique un voisin pour forcer ce coup.

Le graphe vu de près : chaque sommet est un cube

Le schéma circulaire résume le graphe. Ici, on regarde ses vrais sommets. D'abord le chemin de la solution, cube par cube : chaque flèche est un mouvement (orange : phase 1, bleu : phase 2, violet : détour). Clique sur un cube pour y aller.

Ce que tu vois

Au centre, le cube tel qu'il est à l'étape en cours. Autour, les 18 cubes qu'on obtient en faisant un seul mouvement : ce sont ses voisins dans le graphe, et chaque trait est une route. Vert : ce mouvement rapproche du but ; gris : ça ne change rien ; rouge : ça éloigne. Le trait épais est le coup choisi par le solveur, et ↩ ramène au cube d'avant.

Les voisins vont par trois (par exemple R, R2 et R′) et sont reliés entre eux en pointillés : faire R puis encore R, c'est arriver sur R2. Clique sur un voisin pour y aller.

Boule de rayon 1

Sommets x·s, s ∈ S, |S| = 18. Le graphe n'est pas un arbre : pour chaque face, {x, xF, xF2, xF′} induit un K₄ (c'est Cay(ℤ₄, {1, 2, 3})), et deux faces opposées commutent (x·U·D = x·D·U), ce qui crée des carrés. Les sphères croissent donc comme 1, 18, 243, 3 240… au lieu de 18·17k−1 pour un arbre. Couleur : variation de l'estimation (phase, h) ; entrer dans G₁ compte comme un progrès, puis h décroissant.

En clairpour tout le monde
En détailthéorie des graphes, algèbre, probabilités

Combien de mélanges ?

Un Rubik's Cube peut être mélangé de 43 252 003 274 489 856 000 façons. En regardant une position par seconde, il faudrait environ 1 400 milliards d'années pour toutes les voir : cent fois l'âge de l'univers. Et pourtant, chacune se résout en 20 coups au plus.

Autre curiosité : si on démonte le cube et qu'on le remonte au hasard, il n'y a qu'une chance sur 12 qu'il soit encore faisable.

Le groupe du cube

Les rotations engendrent G₀ = ⟨U, R, F, D, L, B⟩, sous-groupe de 𝔖₄₈ (permutations des 48 facettes mobiles). Un état est un quadruplet (σc, oc, σe, oe) ∈ 𝔖₈ × ℤ₃⁸ × 𝔖₁₂ × ℤ₂¹². Le groupe des assemblages (𝔖₈ ⋉ ℤ₃⁸) × (𝔖₁₂ ⋉ ℤ₂¹²) contient G₀ comme sous-groupe d'indice 12, découpé par trois invariants : Σoc ≡ 0 (mod 3), Σoe ≡ 0 (mod 2), sgn σc = sgn σe[9].

|G₀| = 8!·3⁷·12!·2¹¹ / 2 = 2²⁷·3¹⁴·5³·7²·11. Un remontage uniforme tombe dans G₀ avec probabilité 1/12 ; ces invariants jouent le rôle de quantités conservées. C'est une image : il s'agit d'homomorphismes vers un groupe abélien (somme des orientations, signature), pas d'un théorème de Noether, qui relie une symétrie à une quantité conservée.

Une carte géante

Imagine que chaque mélange soit une ville, et chaque mouvement une route vers une ville voisine. Chaque ville a exactement 18 routes (6 faces, et pour chacune : un quart de tour, un demi-tour, ou un quart de tour dans l'autre sens).

Résoudre le cube, c'est trouver le trajet le plus court jusqu'à la ville « résolu ». Le problème : la carte est bien trop grande pour être dessinée en entier.

Graphe de Cayley

Γ = Cay(G₀, S), |S| = 18, S = S⁻¹ : graphe non orienté, 18-régulier, sommet-transitif. Son diamètre vaut 20[2] ; la plupart des positions sont à distance 18.

Borne inférieure par comptage : en interdisant deux coups sur la même face et en ordonnant les faces opposées (qui commutent), le nombre de séquences canoniques de longueur k croît comme ≈ 18·13,35k−1. Comme Σk≤17 reste inférieur à |G₀|, certaines positions exigent au moins 18 coups. Le « superflip » en exige exactement 20 (Reid, 1995)[12].

Des graphes assez petits pour être dessinés en entier

Et si on n'avait le droit qu'à quelques mouvements ? Le nombre de positions devient assez petit pour dessiner tout le graphe. Chaque colonne regroupe les cubes situés au même nombre de coups du cube résolu (à gauche). Clique sur un cube : le chemin le plus court vers le résolu s'allume. Sur le vrai cube, ce dessin aurait 43 milliards de milliards de sommets : impossible, d'où la boussole.

Cay(H, SH) pour des sous-groupes H ≤ G₀ : ⟨U⟩ ≅ ℤ₄ (graphe K₄) ; ⟨R2, U2⟩ ≅ D₆, diédral d'ordre 12 (cycle C₁₂, car R2·U2 est d'ordre 6) ; ⟨U, D⟩ ≅ ℤ₄ × ℤ₄ (produit cartésien K₄ □ K₄, diamètre 2) ; ⟨U2, D2, R2⟩, d'ordre 96 et de diamètre 10. La colonne k est la sphère de rayon k du BFS depuis e, et le plus court chemin se lit en remontant l'arbre BFS, pour un coût O(|H|·|SH|). Pour G₀, |G₀|·|S| ≈ 7,8·10²⁰ : c'est exactement ce qu'IDA* et les tables sur projections contournent.

Deux missions

Plutôt que de tout faire d'un coup, le solveur découpe le travail en deux. Mission 1 : tourner chaque pièce dans le bon sens, sans s'occuper de sa place, comme on retourne toutes les cartes face visible avant de les trier.

Mission 2 : ranger les pièces à leur place, avec seulement les mouvements qui ne les retournent plus. Deux petits problèmes au lieu d'un énorme.

Sous-groupe et graphe de Schreier

G₁ = ⟨U, D, R2, F2, L2, B2⟩ est le stabilisateur des orientations et de la tranche E[1]. Indice [G₀ : G₁] = 3⁷·2¹¹·C(12,4) = 2 217 093 120 ; un état uniforme est déjà dans G₁ avec probabilité ≈ 4,5·10⁻¹⁰.

Phase 1 : plus court chemin dans le graphe de Schreier Sch(G₀, G₁, S), dont les sommets sont les classes G₁g (diamètre 12). Phase 2 : plus court chemin dans Cay(G₁, S₂), |S₂| = 10, |G₁| = 8!·8!·4!/2 = 19 508 428 800 (diamètre 18). Si chaque phase est résolue de façon optimale, on obtient donc au plus 12 + 18 = 30 coups ; le solveur de cette page borne son temps de recherche (500 ms), donc la phase 2 peut ne pas l'être et cette borne n'est alors qu'indicative. Thistlethwaite (1981) utilisait une chaîne de quatre sous-groupes, pour au plus 52 coups[10].

La boussole

Le solveur a une boussole spéciale qui dit « il reste au moins 7 coups ». Elle peut être trop optimiste, mais elle ne ment jamais dans l'autre sens.

Pour la fabriquer, l'ordinateur explore d'abord des versions simplifiées du cube (par exemple, en ne regardant que le sens des coins), assez petites pour être parcourues en entier. Ensuite il essaie tous les chemins de 1 coup, puis de 2, puis de 3… en abandonnant tout chemin que la boussole juge trop long.

Heuristique admissible et IDA*

Une projection π : Γ → Γ′ (ici sur des coordonnées : orientation des coins 3⁷, des arêtes 2¹¹, tranche C(12,4)…) est un morphisme de graphes, donc 1-lipschitzienne : dΓ′(πx, πe) ≤ dΓ(x, e). Un BFS exhaustif sur Γ′ (~10⁶ sommets, coût O(|V|·|S|)) donne ces distances exactes. Le maximum de deux heuristiques admissibles reste admissible, et h est cohérente : |h(x) − h(xs)| ≤ 1.

IDA*[4] : DFS itératif avec la borne f = g + h ≤ L, mémoire O(L), optimal dans chaque phase. Le coût dépend de la distribution de h (histogrammes ci-dessus) : nombre de nœuds ≈ Σd N(d)·P(h ≤ L − d)[6]. Korf a trouvé les premières solutions optimales de positions aléatoires ainsi, avec des tables de motifs plus grandes[5].

Le mélange compte-t-il ?

Le solveur ne sait pas comment le cube a été mélangé : il ne regarde que la position obtenue. Deux cubes identiques auront la même solution, qu'on ait fait 25 ou 1 000 mouvements pour y arriver.

Mais la longueur du mélange change les positions qu'on obtient. Après 3 coups, le cube est au plus à 3 coups de la solution : essaie de mélanger en 3 coups, le solveur trouve souvent le chemin inverse. Avec 25 coups, le mélange est en pratique déjà très varié, mais je n'ai pas calculé son écart avec le tirage uniforme : les positions n'ont pas toutes la même chance. C'est pour ça qu'en compétition, on tire directement une position au hasard (bouton « état aléatoire »)[11].

Mélange fini et marche aléatoire

La recherche est une fonction de l'état x seul : l'historique n'intervient pas (propriété de Markov). Ce qui dépend de la longueur k, c'est la loi de x : un mélange est une marche aléatoire Xk = s₁⋯sk sur Cay(G₀, S), avec d(Xk) ≤ k. Pour k < 20, les positions lointaines sont inaccessibles.

En métrique demi-tour, le graphe contient des triangles (R·R·R2 = e), donc n'est pas biparti : la chaîne est irréductible et apériodique et converge vers l'uniforme sur G₀[8]. En métrique quart de tour, chaque quart de tour est une permutation impaire des 48 facettes : le graphe est biparti, un mélange de k quarts de tour n'atteint que la moitié de G₀ (parité de k) et la loi ne converge jamais vers l'uniforme. D'où les mélanges « à état aléatoire » de la WCA : tirer (σc, oc, σe, oe) uniformément sous les trois invariants, puis résoudre l'inverse.

Et si on sort du chemin ?

Clique sur un point autour de l'étape courante, ou sur un mouvement sous le cube : tu forces le solveur à jouer ce coup. Il recalcule alors un nouveau chemin depuis là. Souvent le détour coûte un ou deux coups. Parfois il ne coûte rien, et il arrive même qu'il raccourcisse la solution : preuve que le solveur ne trouve pas toujours le meilleur chemin.

Si tu es en mission 2 et que tu tournes une face d'un quart de tour sur le côté, tu fais ressortir le cube de la mission 2 : sur le dessin, le chemin repart vers le cercle extérieur.

Détours et contre-exemples

Forcer une arête s depuis x : par l'inégalité triangulaire, d(xs) ∈ {d(x) − 1, d(x), d(x) + 1}. Pour des chemins optimaux, l'écart de longueur totale vérifie donc Δ ∈ {0, 1, 2} (Δ = 1 possible car Γ n'est pas biparti). Tout Δ < 0 observé est un contre-exemple à l'optimalité du chemin initial ; tout Δ > 2 montre que le nouveau chemin n'est pas optimal. Kociemba borne le temps de calcul, pas la longueur.

Un coup hors de S₂ appliqué à x ∈ G₁ donne xs ∉ G₁ (car G₁ est un sous-groupe) : l'état retourne dans le graphe de Schreier et une nouvelle phase 1 est nécessaire. Autre contre-exemple classique : la meilleure phase 1 ne mène pas forcément à la meilleure solution totale, d'où l'énumération de plusieurs chemins de phase 1.

Le même principe ailleurs : le taquin et le GPS

Le taquin (le jeu des 15 plaques à faire glisser) et le GPS d'une voiture marchent exactement comme notre solveur. Dans le taquin, chaque position des plaques est une ville, et chaque glissement une route. La boussole : additionner, pour chaque plaque, le nombre de cases qui la séparent de sa place. Une plaque ne bouge que d'une case à la fois, donc il faut au moins ce nombre de coups : la boussole ne ment jamais.

Dans un GPS, les villes sont les carrefours, et les routes sont… les routes. La boussole : la distance à vol d'oiseau jusqu'à l'arrivée, car aucune route n'est plus courte que la ligne droite. Et comme notre solveur rejoint d'abord G₁, le GPS rejoint d'abord l'autoroute, roule dessus, puis redescend sur les petites routes : ce sont aussi des graphes emboîtés.

Même les pièges se ressemblent. En 1880, le taquin « 14-15 » (deux plaques inversées) a passionné l'Amérique : il est impossible, pour la même raison qu'un cube où deux pièces ont été échangées (essaie avec « colorier » !).

Même structure, autres graphes

Taquin n×n : sommets = configurations, arête = glissement ; (n²)!/2 états atteignables (9!/2 = 181 440 pour le 3×3, 16!/2 ≈ 1,05·10¹³ pour le 4×4), diamètres 31 et 80[18]. Invariant : parité de la permutation combinée à la ligne de la case vide, d'où exactement deux orbites[15]. L'heuristique de Manhattan est une somme de distances dans des graphes projetés (une plaque seule sur la grille), admissible car un coup déplace une seule plaque d'une case. IDA* a été introduit sur ce problème[4], et les bases de motifs[16] sont l'analogue exact de nos tables BFS sur projections.

GPS : graphe pondéré (carrefours, tronçons, temps de parcours) ; A*[14] avec h = distance euclidienne / vitesse maximale, admissible par l'inégalité triangulaire. Hiérarchies de contraction[17] : les sommets sont ordonnés par importance et la recherche bidirectionnelle ne monte que vers des sommets plus importants. C'est l'analogue de la chaîne G₀ ⊃ G₁ ⊃ {e} : on ramène d'abord le problème dans un sous-graphe plus petit et plus structuré.

Rubik's CubeTaquin 4×4GPS
Sommetposition du cubeposition des plaquescarrefour
Arêtequart ou demi-tour (18 par sommet)glissement d'une plaque (2 à 4)tronçon de route, pondéré par le temps
Taille4,3·10¹⁹1,05·10¹³≈ 1,8·10⁷ carrefours (réseau européen)
Positions impossibles11 remontages sur 121 sur 2 (le « 14-15 »)sens interdits, zones non reliées
Boussole hBFS sur projections (orientations, permutations)distance de Manhattan, bases de motifsdistance à vol d'oiseau / vitesse max
Graphes emboîtésG₀ ⊃ G₁ ⊃ {résolu}ranger 1ʳᵉ ligne et 1ʳᵉ colonne → taquin 3×3petites routes → nationales → autoroutes
RechercheIDA* en deux phasesIDA*A*, Dijkstra bidirectionnel
Pire cas20 coups80 coups—

Et encore ailleurs ?

Les chimistes utilisent les groupes pour décrire la symétrie des molécules. Les programmes qui jouent aux échecs ou au go explorent eux aussi des graphes géants, guidés par une boussole.

Liens avec d'autres sciences

Physique : groupes de symétrie (cristallographie, SU(3) des quarks), invariants et lois de conservation. Chimie : groupes ponctuels moléculaires. Probabilités : marches aléatoires sur les groupes et temps de mélange[8]. IA : A*/IDA*, heuristique apprise par réseau de neurones et apprentissage par renforcement (DeepCubeA)[7], convolution sur la structure locale du graphe[3]. Informatique : BFS, programmation dynamique, calcul distribué (la preuve du nombre 20 a demandé ~35 années CPU)[2].

  1. H. Kociemba, The two-phase algorithm.
  2. T. Rokicki, H. Kociemba, M. Davidson, J. Dethridge, The Diameter of the Rubik's Cube Group Is Twenty, SIAM J. Discrete Math. 27(2), 2013 ; cube20.org ; Optimal solutions for the Rubik's Cube.
  3. Solving a Rubik's Cube Using Its Local Graph Structure, arXiv:2408.07945, 2024.
  4. R. E. Korf, Depth-first iterative-deepening: an optimal admissible tree search, Artificial Intelligence 27, 1985.
  5. R. E. Korf, Finding optimal solutions to Rubik's Cube using pattern databases, AAAI 1997.
  6. R. E. Korf, M. Reid, S. Edelkamp, Time complexity of iterative-deepening-A*, Artificial Intelligence 129, 2001.
  7. F. Agostinelli, S. McAleer, A. Shmakov, P. Baldi, Solving the Rubik's cube with deep reinforcement learning and search, Nature Machine Intelligence 1, 2019.
  8. P. Diaconis, Group Representations in Probability and Statistics, IMS Lecture Notes 11, 1988.
  9. D. Joyner, Adventures in Group Theory: Rubik's Cube, Merlin's Machine, and Other Mathematical Toys, Johns Hopkins University Press, 2ᵉ éd. 2008.
  10. J. Scherphuis, Thistlethwaite's 52-move algorithm.
  11. World Cube Association, Règlement, article 4 (mélanges).
  12. Superflip (Wikipédia).
  13. Solving a Rubik's cube with graph theory (Reddit).
  14. P. E. Hart, N. J. Nilsson, B. Raphael, A Formal Basis for the Heuristic Determination of Minimum Cost Paths, IEEE Trans. Systems Science and Cybernetics, 1968.
  15. W. W. Johnson, W. E. Story, Notes on the "15" Puzzle, American Journal of Mathematics 2(4), 1879.
  16. J. C. Culberson, J. Schaeffer, Pattern Databases, Computational Intelligence 14(3), 1998.
  17. R. Geisberger, P. Sanders, D. Schultes, D. Delling, Contraction Hierarchies: Faster and Simpler Hierarchical Routing in Road Networks, WEA 2008.
  18. A. Brüngger, A. Marzetta, K. Fukuda, J. Nievergelt, The parallel search bench ZRAM and its applications, Annals of Operations Research 90, 1999.