Lo que estamos tratando de determinar es si hay un subgrupo H de G tal que {g , ..., g n} es unatransversal de las clases laterales de H. es decir, un conjunto de representantes de la partición de G por los conjuntos de H.
Primero, por Lagrange's teorema, | G | = | G: H | * | G |, donde | G: H | = | G |/| H | es el índice del subgrupo H de G. Si {g , ..., g n} es de hecho una transversal, entonces | G: H | = | {g , ..., g n} |, por lo que la primera prueba en su algoritmo debe ser si n divide | G |.
Además, puesto que g i y g j están en la misma clase lateral derecha sólo si g i g j-1 es en H, a continuación, puede comprobar subgrupos con el índice n para ver si evitan g i g j-1. Además, observe que (g i g j-1) (g j g k-1) = g i g k-1, para que pueda elegir cualquier emparejamiento del g i s.
Esto debería ser suficiente si n es pequeño en comparación con | G |.
Otro enfoque consiste en comenzar con H siendo el grupo trivial y añadir elementos del conjunto H * = {h en G:! H k = g i g j-1, para todo i, j, k; i! = j} a los generadores de H hasta que no pueda agregar más (es decir, hasta que ya no sea un subgrupo). H es entonces un subgrupo máximo de G tal que H es un subconjunto de H *. Si puede obtener todos esos H (y que sean lo suficientemente grandes), entonces el subgrupo que está buscando debe ser uno de ellos.
Este enfoque funcionaría mejor para n mayores.
De cualquier manera, un enfoque de tiempo no exponencial no es obvio.
EDIT: Acabo de encontrar una discusión de este tema tan aquí: 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
Esto me hace gustaría poder recordar inmediatamente mis clases de álgebra abstracta ... –
A quien votaron para cerrar: Por Dios, la tipo está preguntando por un ALGORITMO. La última vez que verifiqué, un algoritmo era algo utilizado en la programación. –