Articulo de referencia

Polymake

polymake es un software para el tratamiento algorítmico de poliedros convexos . [ 1 ] Aunque inicialmente se utilizaba principalmente como herramienta para estudiar la combinato...

polymake es un software para el tratamiento algorítmico de poliedros convexos . [ 1 ]

Aunque inicialmente se utilizaba principalmente como herramienta para estudiar la combinatoria y la geometría de politopos y poliedros convexos , [ 2 ] ahora también es capaz de trabajar con complejos simpliciales , matroides , abanicos poliédricos, grafos , objetos tropicales , variedades tóricas y otros objetos. En particular, su capacidad para calcular la envoltura convexa y los puntos reticulares de un politopo ha demostrado ser muy útil para diferentes tipos de investigación. [ 3 ]

polymake ha sido citado en más de 300 artículos recientes indexados por Zentralblatt MATH , como puede verse en su entrada en la base de datos swMATH. [ 4 ]

Características y aplicaciones especiales

Polymake presenta algunas particularidades que hacen que trabajar con él sea especial.

En primer lugar, polymake se puede usar dentro de un script de Perl . Además, los usuarios pueden extender polymake y definir nuevos objetos, propiedades, reglas para calcular propiedades y algoritmos. [ 5 ]

En segundo lugar, presenta un esquema interno cliente-servidor para adaptarse al uso de Perl para la gestión de objetos e interfaces, así como a C++ para algoritmos matemáticos. [ 6 ] El servidor almacena información sobre cada objeto (por ejemplo, un politopo), y el cliente envía solicitudes para calcular propiedades. El servidor tiene la tarea de determinar cómo completar cada solicitud a partir de la información ya conocida sobre cada objeto mediante un sistema basado en reglas. Por ejemplo, existen muchas reglas sobre cómo calcular las facetas de un politopo. Las facetas se pueden calcular a partir de una descripción de vértices del politopo y de una descripción de desigualdad (posiblemente redundante). polymake construye un grafo de dependencias que describe los pasos para procesar cada solicitud y selecciona la mejor ruta mediante un algoritmo de tipo Dijkstra. [ 6 ]

polymake divide su colección de funciones y objetos en 10 grupos diferentes llamados aplicaciones. Se comportan como espacios de nombres de C++. La aplicación polytope fue la primera en desarrollarse y es la más grande. [ 7 ]

  • Común: funciones "auxiliares" utilizadas en otras aplicaciones. [ 8 ]
  • Grafo: manipulación de grafos dirigidos y no dirigidos. [ 11 ]
  • Grupo: enfoque en grupos de permutaciones finitas. Las propiedades básicas de un grupo se pueden calcular como caracteres y clases de conjugación. [ 12 ]
  • Matroide: cálculo de propiedades estándar de un matroide , como bases y circuitos. Esta aplicación también puede calcular propiedades más avanzadas, como el polinomio de Tutte de un matroide y la realización del matroide con un politopo. [ 14 ]
  • Politopo: más de 230 funciones o cálculos que se pueden realizar con un politopo. Estas funciones varían en complejidad, desde el cálculo de información básica sobre un politopo (p. ej., número de vértices, número de facetas, pruebas para politopos simpliciales y conversión de una descripción de vértice a una descripción de desigualdad) hasta propiedades combinatorias o algebraicas (p. ej., vector H , polinomio de Ehrhart , base de Hilbert y diagramas de Schlegel ). [ 7 ] También hay muchas opciones de visualización.

Historia del desarrollo

La versión 1.0 de polymake apareció por primera vez en las actas del seminario DMV "Polítopos y optimización" celebrado en Oberwolfach en noviembre de 1997. [ 2 ] La versión 1.0 solo contenía la aplicación de politopos, pero el sistema de "aplicaciones" aún no estaba desarrollado. La versión 2.0 se publicó en julio de 2003, [ 17 ] y la versión 3.0 se publicó en 2016. [ 18 ] La última gran revisión, la versión 4.0, se publicó en enero de 2020. [ 19 ]

Interacción con otros paquetes de software

Polymake tiene una estructura altamente modular y, por lo tanto, muestra una gran interacción con paquetes de software de terceros para cálculos especializados, proporcionando así una interfaz común y un puente entre diferentes herramientas. Un usuario puede cambiar fácilmente (y sin darse cuenta) entre el uso de diferentes paquetes de software durante el proceso de cálculo de las propiedades de un politopo. [ 20 ]

Utilizado dentro de polymake

A continuación se muestra una lista de paquetes de software de terceros con los que polymake puede interactuar a partir de la versión 4.0. Los usuarios también pueden escribir nuevos archivos de reglas para interactuar con cualquier paquete de software. Tenga en cuenta que existe cierta redundancia en esta lista (por ejemplo, se pueden usar varios paquetes diferentes para calcular la envoltura convexa de un politopo). Dado que polymake utiliza archivos de reglas y un grafo de dependencias para calcular propiedades, [ 5 ] la mayoría de estos paquetes de software son opcionales. Sin embargo, algunos se vuelven necesarios para cálculos especializados.

  • 4ti2 : paquete de software para problemas algebraicos, geométricos y combinatorios en espacios lineales.
  • a-tint : teoría de la intersección tropical
  • azove : enumeración de 0/1 vértices
  • barvinok : conteo de puntos enteros en politopos parametrizados y no parametrizados
  • cdd : método de doble descripción para convertir entre una desigualdad y una descripción de vértices de un politopo.
  • Geomview : programa interactivo de visualización 3D
  • Gfan : abanicos de Gröbner y variedades tropicales
  • GraphViz : software de visualización de gráficos
  • homología : grupos de homología computacional de complejos simpliciales
  • LattE (Enumeración de puntos reticulares): conteo de puntos reticulares dentro de politopos e integración sobre politopos.
  • libnormaliz : monoides afines , configuraciones vectoriales, politopos reticulares y conos racionales
  • lrs : implementación del algoritmo de búsqueda inversa para el problema de enumeración de vértices y el problema de la envoltura convexa.
  • mptopcom : cálculo de triangulaciones de configuraciones de puntos y matroides mediante búsqueda inversa paralela
  • nauty : grupos de automorfismos de grafos
  • plantri : triangulaciones planares
  • permlib : configura el estabilizador y los cálculos en órbita.
  • PORTA : enumerar los puntos reticulares de un politopo
  • ppl : Biblioteca de poliedros de Parma
  • qhull : Algoritmo Quickhull para envolventes convexas
  • singular : sistema de álgebra computacional para cálculos polinomiales, con especial énfasis en álgebra conmutativa y no conmutativa, geometría algebraica y teoría de singularidades.
  • boceto : para realizar dibujos lineales de objetos sólidos bidimensionales o tridimensionales
  • SplitsTree4 : redes filogenéticas
  • sympol : herramienta para trabajar con poliedros simétricos
  • threejs : biblioteca JavaScript para gráficos 3D animados por computadora.
  • tikz : Paquetes de TeX para crear gráficos mediante programación
  • TropLi : para calcular espacios lineales tropicales de matroides
  • tosimplex: Algoritmo simplex dual implementado por Thomas Opfer
  • Vinci : volúmenes de politopos

Utilizado junto con polymake

  • jupyter-polymake : permite usar polymake dentro de los cuadernos Jupyter .
  • OSCAR : Sistema de investigación de álgebra computacional de código abierto actualmente en desarrollo.
  • PolymakeInterface : paquete para usar polymake en GAP .
  • PolyViewer : Visor con interfaz gráfica de usuario para archivos polymake.

Referencias

  1. Sitio web oficial
  2. 1 2 Gawrilow, Ewgenij; Joswig, Michael (2000-01-01). Kalai, Gil; Ziegler, Günter M. (eds.). polymake: un marco para analizar politopos convexos . Politopos: combinatoria y computación, Seminario DMV. Birkhäuser Basel. pp. 43–73 . doi : 10.1007/978-3-0348-8438-9_2 . ISBN  9783764363512.
  3. ^ Assarf, Benjamín; Gawrilow, Ewgenij; Señor, Katrin; Joswig, Michael; Lorenz, Benjamín; Paffenholz, Andreas; Rehn, Thomas (1 de marzo de 2017). "Calcular cascos convexos y contar puntos enteros con polimake" . Computación de programación matemática . 9 (1): 1– 38. arXiv : 1408.4653 . doi : 10.1007/s12532-016-0104-z . ISSN 1867-2957 . S2CID 5594262 .  
  4. "Polymake - Software matemático - swMATH" .
  5. ^ Joswig , Michael; Müller, Benjamín; Paffenholz, Andreas (17 de febrero de 2009). "Politopos polifabricados y reticulares". arXiv : 0902.2919 [ matemáticas.CO ].
  6. 1 2 Gawrilow, Ewgenij; Joswig, Michael (2005-07-13). "Razonamiento geométrico con polymake". arXiv : math/0507273 .
  7. 1 2 "Documentación de polymake, aplicación: polytope" . polymake.org . Consultado el 11 de junio de 2016 .
  8. "Documentación de polymake, aplicación: común" . polymake.org . Consultado el 11 de junio de 2016 .
  9. "Documentación de polymake, aplicación: fan" . polymake.org . Consultado el 11 de junio de 2016 .
  10. "Documentación de polymake, aplicación: fulton" . polymake.org . Consultado el 11 de junio de 2016 .
  11. "Documentación de polymake, aplicación: gráfico" . polymake.org . Consultado el 11 de junio de 2016 .
  12. "Documentación de polymake, aplicación: grupo" . polymake.org . Consultado el 11 de junio de 2016 .
  13. "Documentación y aplicación de polymake: ideal" . polymake.org . Consultado el 11 de junio de 2016 .
  14. "Documentación de polymake, aplicación: matroid" . polymake.org . Consultado el 11 de junio de 2016 .
  15. "Documentación de polymake, aplicación: topaz" . polymake.org . Consultado el 11 de junio de 2016 .
  16. "Documentación de polymake, aplicación: tropical" . polymake.org . Consultado el 11 de junio de 2016 .
  17. "lanzamiento de polymake 2.0" . www.computational-geometry.org . Consultado el 13 de noviembre de 2023 .
  18. "Polymake 3.0" . GitHub . Consultado el 28 de junio de 2016 .
  19. "Polymake 4.0 [ wiki de polymake ] " . polymake.org . Consultado el 13-11-2023 .
  20. Gawrilow, Ewgenij; Joswig, Michael (1 de junio de 2001). «Polymake: Un enfoque para el diseño de software modular en geometría computacional» . Actas del decimoséptimo simposio anual sobre geometría computacional . SCG '01. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 222–231 . doi : 10.1145/378583.378673 . ISBN  978-1-58113-357-8. S2CID 16519425 .