6 votos

¿Biblioteca de posets en GAP?

¿Existe alguna forma de obtener en GAP los diagramas de Hasse de posets famosos como la red de particiones o la red de divisores de un entero? Si no están guardados, ¿hay alguna manera de obtenerlos de alguna otra forma, como usando SAGE? Si no, ¿hay algún truco para obtener el diagrama de Hasse fácilmente sin programar todo desde cero? ¿Se guardan posets o retículos pequeños en GAP? ¿Como los que tienen como máximo 7 puntos?

5voto

simsim Puntos 44

Sage tiene una clase integrada Poset con una funcionalidad bastante amplia. Esta celda de Sage da un ejemplo bastante aburrido:

P = posets(5)
for p in P:
    p.show()
    print('\n')

Para algo más específico, puedes mirar el catálogo de posets/lattices y utilizar algunas de las opciones de graficación de gráficos:

posets.IntegerPartitions(10).hasse_diagram().show(figsize=[10,10])

particiones de 10 como lattice

Para una mejor experiencia, probablemente querrás ser más sofisticado con las opciones de la gráfica, como usar esta opción:

heights Un diccionario que mapea alturas a la lista de vértices en esta altura.

2voto

ahulpke Puntos 2612

En cuanto a la pregunta específica: No, GAP no tiene un tipo de datos formal de "poset" y por lo tanto tampoco tiene una biblioteca de posets. Sin embargo, es probable que exista una biblioteca independiente como recurso en la web.

2voto

Russ Woodroofe Puntos 198

Aunque GAP no tiene un tipo de dato de poset formal, el paquete de homología sí tiene ese tipo, y tiene algunos de los ejemplos que mencionas incluidos. Es difícil construir la parte compilada de la biblioteca, pero prácticamente todo lo relacionado con los posets debería funcionar sin compilar. Desafortunadamente, no creo que el soporte de poset en este paquete esté conectado a algo que muestre diagramas de Hasse.

Conozco dos formas de mostrar los diagramas de Hasse de retículos de subgrupos en GAP, ambas requieren un software adicional:

No es demasiado difícil mostrar los diagramas de Hasse en xgap o Gap.app. El código integrado solo maneja retículos de subgrupos. Tengo código (no pulido) que dibuja retículos de particiones en estos sistemas. Por si acaso, lo publicaré en mi página web. Al menos servirá como modelo de cómo mostrar los diagramas de Hasse de nuevos posets en xgap o Gap.app.

Ten en cuenta que necesitas Xwindows (en Linux u otro sistema similar a Unix) para ejecutar xgap, o una Mac para ejecutar Gap.app.

También podrías mirar la rutina DotFileLatticeSubgroups. Esa exporta un retículo de subgrupos a un archivo de GraphViz, que luego puedes convertir en una imagen del diagrama de Hasse. Mira por ejemplo esta pregunta.

2voto

Louis Maddox Puntos 125

Lo hace, está mencionado en la documentación de Macaulay2 aquí

El paquete GAP Simplicial Homology, disponible en http://www.eecis.udel.edu/~dumas/Homology/, provee métodos para utilizar posets dentro de GAP. Según la documentación, los posets se almacenan en GAP de la siguiente manera: El conjunto base es el conjunto de enteros 1..n+1 y las relaciones se almacenan en una lista de longitud n, donde la entrada i-ésima es el conjunto de vértices que cubren a i en el poset. En particular, 1 debería ser el elemento mínimo único y n+1 debería ser el elemento máximo único.

El enlace está ahora roto, y parece ser https://ljk.imag.fr/membres/Jean-Guillaume.Dumas/Homology/ ahora en su lugar. Puedes encontrar el enlace antiguo en the Wayback Machine.

Ten en cuenta que esto no es el paquete simpcomp.

Estoy investigando el mismo problema y no conocía el parámetro heights en Sage, probablemente lo usaré en su lugar pero dejo esta nota por si acaso ayuda.

Específicamente, estaba intentando ver si era sencillo hacer una red de particiones enteras como en Sage, pero parece que no lo es.

1voto

Conozco que este es un hilo antiguo, pero estaba buscando una biblioteca de posets y encontré https://github.com/isadofschi/posets.

Hice algunos ejemplos hace algún tiempo para mis clases de GAP en este blog de Jupyter.

RelToDot está inspirado en DotBinaryRelation del paquete numericalsgps. DotBinaryRelation se puede usar en combinación con HasseDiagramBinaryRelation para resolver el problema inicial.

gap> d:=DivisorsInt(12);;
gap> r:=BinaryRelationByElements(Domain(d),List(Filtered(Cartesian(d,d),t->t[2] mod t[1] =0),t->Tuple(t)));
 Domain([ 1, 2, 3, 4, 6, 12 ]) >
gap> h:=HasseDiagramBinaryRelation(r);
 Domain([ 1, 2, 3, 4, 6, 12 ]) >

Luego, puedes usar el DotBinaryRelation del paquete numericalsgps:

gap> Print(DotBinaryRelation(h));
digraph  NSGraph{rankdir = TB; edge[dir=back];
1 [label="1"];
2 [label="2"];
3 [label="3"];
4 [label="4"];
5 [label="6"];
6 [label="12"];
2 -> 1;
3 -> 1;
4 -> 2;
5 -> 2;
5 -> 3;
6 -> 4;
6 -> 5;
}

(o DotSplash). Si estás usando el kernel de gap en Jupyter, entonces simplemente puedes escribir JupyterSplashDot(DotBinaryRelation(h)).

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