M = <U,D,F,B,L,R> on se demande si M est engendré par 2 générateurs (de longueur quelconque)?
Le GAP nous apporte une réponse .
Voici le script en GAP ci-dessous.
GAP trouve 2 formules T (79), Q (94) :
T = DUB2R'DRU'D'B'DL2U'LB'U'BUBL2B'ULF'L'FUFLFL'FU'FLF'L'F'UFRU'R'U'F'UF'LFL'FU2RU'R'F'U2FR
UR'U'F'U'L'B'U'BLFRUR'F'U (79)
Q = RD'RU'DRD'FUL'U2D'L'DFBFLB'FL'ULU2F2UF2LFL'F'UL'ULU'F'LFL'FUF'U'FUF'L'U'B'U'BLU
L'U'LU2FUF'UL'B'UBLUFRUR'U'F'U'FRUR'U'F'U'L'U'B'UBLU (94)
On utilise Cube Explorator pour trouver une nouvelle T et Q plus courtes.
T := B² U² B² L² D B² D L² D' U² F² L' B' F L² U B' R² D' L' F R² ; ordT = 12
Q := D R² B² U F² D' R² B² F² U L² U B' R² U' R' D² F' U' L' F' ; ordQ = 231
On a donc
M = <T,Q,>
Ainsi on peut trouver un dragon de M
un dragon = QT11 = QT'
Code : Tout sélectionner
# Model du Rubik's Cube en GAP
# 5 6 7
# 4 U 8
# 3 2 1
# 25 28 23 | 21 26 19 | 17 32 31 | 29 30 27
# 38 L 36 | 12 F 10 | 34 R 40 | 16 B 14
# 43 44 37 | 39 42 33 | 35 48 45 | 47 46 41
# 11 18 9
# 20 D 24
# 13 22 15
#
# U=54,D=53,F=52,B=51,L=50,R=49
#
#affichage en clair
afficher := function( formule )
local formule1 ;
formule1 := String(formule);;
formule1 := ReplacedString( formule1, "^-1", "'" );;
formule1 := ReplacedString( formule1, "^-2", "2" );;
formule1 := ReplacedString( formule1, "^2", "2" );;
formule1 := ReplacedString( formule1, "^-3", "" );;
formule1 := ReplacedString( formule1, "^3", "'" );;
formule1 := ReplacedString( formule1, "*", "" );;
return formule1 ;
end ;
#LAMBDA=le groupe des permutations du Rubik's Cube
pU := (2,4,6,8)(26,28,30,32) (1,3,5,7)(17,21,25,29)(19,23,27,31) ;;
pD := (18,24,22,20)(42,48,46,44) (9,15,13,11)(33,45,41,37)(35,47,43,39);;
pF := (2,34,18,36)(26,10,42,12) (1,35,11,23)(17,9,37,3)(19,33,39,21);;
pB := (6,38,22,40)(30,14,46,16) (7,25,13,45)(29,27,41,47)(31,5,43 ,15);;
pL := (4,12,20,14)(28,36,44,38) (3,39,13,27)(21,11,41,5)(23,37,43,25);;
pR := (8,16,24,10)(32,40,48,34) (1,29,15,33)(17,31,45,35)(19,7,47,9);;
LAMBDA := Group(pU,pD,pF,pB,pL,pR);
SGS := SmallGeneratingSet(LAMBDA);
Length(SGS);
pQ := SGS[1] ;
Order(pQ);
pT := SGS[2] ;
Order(pT) ;
# on se donne une permutation q et on veut trouver une formule associée V: q->V .
M := FreeGroup("U","D","F","B","L","R");
ROTBASE := GroupHomomorphismByImages( M, LAMBDA, GeneratorsOfGroup(M),GeneratorsOfGroup(LAMBDA) );
formule := PreImagesRepresentative( ROTBASE,pQ );;
afficher( formule );
Length( formule );
#Image( ROTBASE, formule ); # ça donne la permutation associée
formule := PreImagesRepresentative( ROTBASE,pT );;
afficher( formule );
Length( formule );
#Image( ROTBASE, formule ); # ça donne la permutation associée
LAMBDA2 := Group(pQ,pT) ;
Size( LAMBDA2 );
LAMBDA = LAMBDA2 ;
##################
# GAP trouve 2 formules T (79), Q (94)
#T := DUB2R'DRU'D'B'DL2U'LB'U'BUBL2B'ULF'L'FUFLFL'FU'FLF'L'F'UFRU'R'U'F'UF'LFL'FU2RU'R'F'U2FRUR'U'F'U'L'B'U'BLFRUR'F'U ;
#Q := RD'RU'DRD'FUL'U2D'L'DFBFLB'FL'ULU2F2UF2LFL'F'UL'ULU'F'LFL'FUF'U'FUF'L'U'B'U'BLUL'U'LU2FUF'UL'B'UBLUFRUR'U'F'U'FRUR'U'F'U'L'U'B'UBLU ;
#pT := (1,29,27,37,17,31,5,39,19,7,25,11)(2,38,42,48,30,16)(3,15)(4,12,20,28,36,44)(6,40,26,14,18,24)(8,34,46,32,10,22)(9,13,35,43,33,41)(21,45)(23,47);
#pQ := (1,15,35,11,21,29,5,17,45,9,37,23,31,25,19,47,33,39,3,7,27)(2,16,6,28,20,22,32,48,38,36,34)(4,44,46,8,24,14,12,10,26,40,30)(13,43,41);
# On utilise Cube Explorator pour trouver des nouvelles T et Q plus courtes.
#T := B2 U2 B2 L2 D B2 D L2 D' U2 F2 L' B' F L2 U B' R2 D' L' F R2 ;
#Q := D R2 B2 U F2 D' R2 B2 F2 U L2 U B' R2 U' R' D2 F' U' L' F' ;
#On verifie si on a M = <T,Q> pour les nouvelles formules T,Q trouvées
#pT:=pB*pB*pU*pU*pB*pB*pL*pL*pD*pB*pB*pD*pL*pL*pD^-1*pU*pU*pF*pF*pL^-1*pB^-1*pF*pL*pL*pU*pB^-1*pR*pR*pD^-1*pL^-1*pF*pR*pR ;
#pQ:=pD*pR*pR*pB*pB*pU*pF*pF*pD^-1*pR*pR*pB*pB*pF*pF*pU*pL*pL*pU*pB^-1*pR*pR*pU^-1*pR^-1*pD*pD*pF^-1*pU^-1*pL^-1*pF^-1 ;
#LAMBDA2 := Group(pQ,pT) ;
#Size( LAMBDA2 );
#LAMBDA = LAMBDA2 ;
#un dragon = QT' ; # ordT <= ordQ
#un dragon:=(D R2 B2 U F2 D' R2 B2 F2 U L2 U B' R2 U' R' D2 F' U' L' F')(R2 F' L D R2 B U' L2 F' B L F2 U2 D L2 D' B2 D' L2 B2 U2 B2);
####################