Polymake

From Wikipedia, the free encyclopedia

Original authorsEwgenij Gawrilow and Michael Joswig
Initial release1997; 29 years ago (1997)
Stable release
4.11 / 6 November 2023; 2 years ago (2023-11-06)
Repository
Polymake
Original authorsEwgenij Gawrilow and Michael Joswig
Initial release1997; 29 years ago (1997)
Stable release
4.11 / 6 November 2023; 2 years ago (2023-11-06)
Repository
Written inC++, Perl
Operating systemLinux, Mac
Available inEnglish
LicenseGNU General Public License
Websitepolymake.org

polymake is a software for the algorithmic treatment of convex polyhedra.[1]

Albeit primarily a tool to study the combinatorics and the geometry of convex polytopes and polyhedra,[2] it is by now also capable of dealing with simplicial complexes, matroids, polyhedral fans, graphs, tropical objects, toric varieties and other objects. In particular, its capability to compute the convex hull and lattice points of a polytope proved itself to be quite useful for different kinds of research.[3]

polymake has been cited in over 300 recent articles indexed by Zentralblatt MATH as can be seen from its entry in the swMATH database.[4]

polymake exhibits a few particularities, making it special to work with.

Firstly, polymake can be used within a Perl script. Moreover, users can extend polymake and define new objects, properties, rules for computing properties, and algorithms.[5]

Secondly, it exhibits an internal client-server scheme to accommodate the usage of Perl for object management and interfaces as well as C++ for mathematical algorithms.[6] The server holds information about each object (e.g., a polytope), and the client sends requests to compute properties. The server has the job of determining how to complete each request from information already known about each object using a rule-based system. For example, there are many rules on how to compute the facets of a polytope. Facets can be computed from a vertex description of the polytope, and from a (possibly redundant) inequality description. polymake builds a dependency graph outlining the steps to process each request and selects the best path via a Dijkstra-type algorithm.[6]

polymake divides its collection of functions and objects into 10 different groups called applications. They behave like C++ namespaces. The polytope application was the first one developed and it is the largest.[7]

  • Common: "helper" functions used in other applications.[8]
  • Graph: manipulation of directed and undirected graphs.[11]
  • Group: focus on finite permutation groups. Basic properties of a group can be calculated like characters and conjugacy classes.[12]
  • Matroid: computation of standard properties of a matroid, like bases and circuits. This application can also compute more advanced properties like the Tutte polynomial of a matroid and realizing the matroid with a polytope.[14]
  • Polytope: over 230 functions or calculations that can be done with a polytope. These functions range in complexity from simply calculating basic information about a polytope (e.g., number of vertices, number of facets, tests for simplicial polytopes, and converting a vertex description to an inequality description) to combinatorial or algebraic properties (e.g., H-vector, Ehrhart polynomial, Hilbert basis, and Schlegel diagrams).[7] There are also many visualization options.
  • Tropical: functions for exploring tropical geometry; in particular, tropical hypersurfaces and tropical cones.[16]

Development History

Interaction with other software packages

References

Related Articles

Wikiwand AI