|
procedure Sift(x:Permutation; i : integer); var j integer; begin j := x[i]; if x <> identite and i<= n then if not Defini(T[i,j]) then T[i,j] := x else Sift(Inverse(T[i,j]).x,i+1) end;La construction du tableau T se fait alors par un appel répété de la procédure sift comme suit:
Etant donné un sous groupe G de S48engendré par A,B,C,D,E,F,et une permutation quelconque a déterminer si a appartient au groupe G; et dans le cas positif donner une décomposition de a comme produit des permutations A,B,C,D,E,F.
id | s | - | - | - | - | - |
- | id | - | - | - | a | - |
- | - | id | - | - | - | - |
- | - | - | id | - | - | - |
- | - | - | - | id | - | - |
- | - | - | - | - | id | - |
- | - | - | - | - | - | id |
Sift(alpha: permutation):permutation; begin u := alpha; i := 1; j := alpha[i]; while ( i<= n and not(defini(t[i,j])) do begin u := Produit(u,Inverse(T[i,j])); i:= i + 1; j := u[i]; end Sift := u; end;On note SiftT(a) la valeur de la permutation u à la fin de l'algorithme Sift, celle-ci est l'identité si et seulement si la permutation a admet une décomposition ayant la forme donnée plus haut.
Tant qu'il existe un produit xy d'éléments de T tel que SiftT(xy) ¹ id Ajouter SiftT(xy) à T.On remarque que cet algorithme se termine car le nombre de places à l'intérieur du tableau T est limité. Le test d'arrêt consiste à vérifier que tous les produits d'éléments appartenant au tableau ont été calculés et que la procédure Sift leur a été appliquée.
id | s | s2 | s3 | s4 | s5 | s6 |
- | id | b1 | b22 | b2 | a | b3 |
- | - | id | - | g1 | g2 | g3 |
- | - | - | id | - | - | - |
- | - | - | - | id | - | - |
- | - | - | - | - | id | - |
- | - | - | - | - | - | id |
Ce document a été traduit de LATEX par HEVEA.