Qu'est-ce que vous essayez de déterminer est de savoir s'il y a un sous-groupe H de G tel que {g , ..., g n} est un transversal des cosets de H. dire un ensemble de Représentation de la partition de G par les classes de H.
D'abord, par Lagrange's théorème, | G | = | G: H | * | G |, où | G: H | = | G |/| H | est l'indice du sous-groupe H de G. Si {g , ..., g n} est en effet un transversal, alors | G: H | = | {g , ..., g n}, donc le premier test dans votre algorithme devrait être si n divise | G |.
De plus, puisque g i et g j sont dans le même droit coset que si g i g j-1 est dans H, vous pouvez alors vérifier les sous-groupes d'indice n pour voir s'ils évitent g i g j-1. En outre, notez que (g i g j-1) (g j g k-1) = g i g k-1, de sorte que vous pouvez choisir tout appariement du g i s.
Ceci devrait être suffisant si n est petit comparé à | G |.
Une autre approche est de commencer avec H étant le groupe trivial et ajouter des éléments de l'ensemble H * = {h en G: h k = g i g j-1, pour tout, je, j, k; i! = j} aux générateurs de H jusqu'à ce que vous ne puissiez plus en ajouter (c'est-à-dire jusqu'à ce que ce ne soit plus un sous-groupe). H est alors un sous-groupe maximal de G tel que H est un sous-ensemble de H *. Si vous pouvez obtenir tous ces H (et les avoir assez grands) alors le sous-groupe que vous recherchez doit être l'un d'entre eux.
Cette approche fonctionnerait mieux pour un n plus grand.
Dans les deux cas, une approche non exponentielle n'est pas évidente.
EDIT: Je viens de trouver une discussion sur ce même sujet ici: http://en.wikipedia.org/wiki/Wikipedia:Reference_desk/Archives/Mathematics/2009_April_18#Is_a_given_set_of_group_elements_a_set_of_coset_representatives.3F
Cela me fait voudrais pouvoir immédiatement rappeler mes classes abstraites Algebra ... –
à tous ceux qui ont voté en faveur fermer: Jeez, la Guy demande un ALGORITHME. Dernière fois que j'ai vérifié, un algorithme était quelque chose utilisé en programmation. –