5 votos

BRECHA de la forma Más eficaz de comprobar varias propiedades de un grupo en el pequeño grupo de la biblioteca

En la BRECHA , me gustaría búsqueda de los pequeños grupos de la biblioteca buscando grupos con propiedades específicas (supongo que este es el uso más común).

  • Si tengo una lista de las propiedades que quiero probar, ¿cuál es la más eficiente y elegante manera de hacer esto?

  • En algunos idiomas hay un "Switch" de la declaración, no podía encontrar una cosa en la BRECHA. ¿Hay algo similar?

  • Si desea comprobar varias propiedades, es mejor para iterar a través de una lista de comprobación de todas las propiedades de cada elemento en la lista, o es mejor filtro de la lista de todo lo que no tiene la primera propiedad, y a continuación, volver sobre la lista filtrada de quitar todo lo que no tiene la segunda propiedad, etc.

  • Si yo estaba de iterar sobre los grupos pequeños por

        for g in AllSmallGroups(n) do
            check some property
            check another property
            check some attributes
        od;
    

    BRECHA tendría que calcular algo de información sobre el grupo g, en el proceso tal vez el aprendizaje de algunos atributos acerca de g.

  • Por cuánto tiempo la BRECHA de 'recordar' estos, y ¿cuál es la mejor manera de la búsqueda de mantener esto en mente?

4voto

ahulpke Puntos 2612

Mientras g es el mismo grupo, BRECHA (en la misma sesión) recordar todas sus propiedades (y el uso de memoria para él). Si usted cree que el grupo de nuevo (por ejemplo, por SmallGroup(n,index), o por otra llamada a AllSmallGroups), todas las propiedades que se dan desde el inicio se perderán. Por lo tanto, con el grupo por grupo es el mejor camino. Sin embargo, la manera de utilizar el bucle de crear por primera vez todos los grupos y, a continuación, los recuerdo a todos con todas sus propiedades y atributos, que puede ser duro en la memoria. Suponiendo que usted está buscando un par de grupos en un gran conjunto (o sólo desea almacenar los números de identificación de los grupos de todos modos), corriendo por los números de índice será mucho mejor:

for i in [1..NrSmallGroups(n)] do
  g:=SmallGroup(n,i);
  Now Do Your Tests for g, if they are satisfied remember index i in a list.
od;

(No hay switch declaración, pero un elif lo que permitirá que el mismo constructo.)


Añadido por AK: También, SmallGroupsInformation muy útil: puede decirle cómo los grupos de un determinado orden en que se ordenan, y que las propiedades y los atributos son precalculadas por muy rápido que se utilizan en funciones de selección como AllSmallGroups. Por ejemplo:

gap> SmallGroupsInformation(256);

  There are 56092 groups of order 256.
  They are sorted by their ranks. 
     1 is cyclic. 
     2 - 541 have rank 2.
     542 - 6731 have rank 3.
     6732 - 26972 have rank 4.
     26973 - 55625 have rank 5.
     55626 - 56081 have rank 6.
     56082 - 56091 have rank 7.
     56092 is elementary abelian. 

  For the selection functions the values of the following attributes 
  are precomputed and stored:
     IsAbelian, PClassPGroup, RankPGroup, FrattinifactorSize and 
     FrattinifactorId. 

  This size belongs to layer 2 of the SmallGroups library. 
  IdSmallGroup is available for this size. 

Usted puede utilizar este conocimiento para acelerar la búsqueda y reducir el espacio de búsqueda.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X