Polymake
Originalförfattare | Ewgenij Gawrilow och Michael Joswig |
---|---|
Initial release | 1997 |
Stabil frisättning |
4.6 / 14 januari 2022
|
Förvar | |
Skrivet i | C++ , Perl |
Operativ system | Linux , Mac |
Tillgänglig i | engelsk |
Licens | GNU General Public License |
Hemsida |
Polymake är programvara för algoritmisk behandling av konvexa polyedrar .
Även om det främst är ett verktyg för att studera kombinatoriken och geometrin hos konvexa polytoper och polyedrar , är den vid det här laget också kapabel att hantera enkla komplex , matroider , polyedriska fläktar, grafer , tropiska föremål, toriska varianter och andra föremål.
Polymake har citerats i över 100 nya artiklar indexerade av Zentralblatt MATH , vilket framgår av dess inlägg i swMATH-databasen.
Specialfunktioner
modul-
Polymake designades ursprungligen som ett forskningsverktyg för att studera aspekter av polytoper. Som sådan använder polymake många programvarupaket från tredje part för specialiserade beräkningar, vilket ger ett gemensamt gränssnitt och en brygga mellan olika verktyg. En användare kan enkelt (och omedvetet) växla mellan att använda olika mjukvarupaket i processen att beräkna egenskaper hos en polytop.
regelbaserad beräkning
Polymake använder internt en server-klientmodell där servern innehåller information om varje objekt (t.ex. en polytop) och klienterna skickar förfrågningar om att beräkna egenskaper. Servern har till uppgift att bestämma hur varje begäran ska slutföras från information som redan är känd om varje objekt med hjälp av ett regelbaserat system. Till exempel finns det många regler för hur man beräknar en polytops fasetter. Fasetter kan beräknas från en vertexbeskrivning av polytopen och från en (möjligen redundant) ojämlikhetsbeskrivning. Polymake bygger ett beroendediagram som beskriver stegen för att bearbeta varje begäran och väljer den bästa vägen via en algoritm av Dijkstra-typ.
skript
Polymake kan användas i ett perl-skript. Dessutom kan användare utöka polymake och definiera nya objekt, egenskaper, regler för beräkningsegenskaper och algoritmer.
Polymake-applikationer
Polymake delar in sin samling av funktioner och objekt i 10 olika grupper som kallas applikationer. De beter sig som C++ namnrymder. Polytopapplikationen var den första som utvecklades och den är den största.
Vanlig applikation
Denna applikation innehåller många "hjälpar"-funktioner som används i andra applikationer.
Fläktapplikation
Fan-applikationen innehåller funktioner för polyedriska komplex (som generaliserar enkla komplex ), plana ritningar av 3-polytoper, polyedriska fläktar och underavdelningar av punkter eller vektorer.
Fulton ansökan
Denna applikation behandlar normala toriska varianter . Namnet på den här applikationen är från boken "Introduktion till Toric Varieties" av William Fulton .
Grafapplikation
Grafapplikationen är till för att manipulera riktade och oriktade grafer. Vissa standardgraffunktioner finns (som för angränsande och klick) tillsammans med kombinatoriska funktioner som att beräkna gittret representerat av en riktad acyklisk graf.
Gruppansökan
Gruppapplikationen fokuserar på ändliga permutationsgrupper. Grundläggande egenskaper för en grupp kan beräknas som tecken och konjugationsklasser. I kombination med en polytop kan denna applikation beräkna egenskaper som är associerade med en grupp som verkar på en polytop genom att permutera polytopens hörn, fasetter eller koordinater.
Idealisk applikation
Den ideala applikationen beräknar några egenskaper hos polynomideal: Gröbner-basis , Hilbert-polynom och radikaler.
Matroid applikation
Matroidklassen kan beräkna alla standardegenskaper för en matroid som baser och kretsar. Denna applikation kan också beräkna mer avancerade egenskaper som Tutte-polynomet för en matroide och realisera matroiden med en polytop.
Polytopapplikation
Inom polytopapplikationen finns det över 230 funktioner eller beräkningar som kan göras med en polytop. Dessa funktioner sträcker sig i komplexitet från att helt enkelt beräkna grundläggande information om en polytop (t.ex. antal hörn, antal fasetter, tester för enkla polytoper och omvandling av en beskrivning av vertex till en olikhetsbeskrivning) till kombinatoriska eller algebraiska egenskaper (t.ex. H- vektor , Ehrhart-polynom , Hilbert-bas och Schlegel-diagram ). Det finns också många visualiseringsalternativ.
Topazapplikation
Topaz-applikationen innehåller alla funktioner relaterade till abstrakta enkla komplex . Många avancerade topologiska beräkningar över enkla komplex kan utföras som homologigrupper , orientering, fundamental grupp . Det finns också en kombinatorisk samling av egenskaper som kan beräknas som en beskjutning och Hasse-diagram .
Tropisk applikation
Den tropiska applikationen innehåller funktioner för att utforska tropisk geometri; i synnerhet tropiska hyperytor och tropiska kottar.
Utvecklingshistoria
Polymake version 1.0 dök först upp i förfarandet för DMV-seminariet "Polytopes and Optimization" som hölls i Oberwolfach, november 1997. Version 1.0 innehöll bara polytopapplikationen, men systemet med "applikationer" var ännu inte utvecklat. Version 2.0 släpptes någon gång 2003, [ citat behövs ] och version 3.0 släpptes 2016.
Programvarupaket
Används inom polymake
Nedan finns en lista över tredjepartsprogramvarupaket som polymake kan gränssnitta med från och med version 3.0. Användare kan också skriva nya regelfiler för gränssnitt med vilket programpaket som helst. Observera att det finns en viss redundans i den här listan (t.ex. några olika paket kan användas för att hitta det konvexa skrovet på en polytop). Eftersom polymake använder regelfiler och en beroendegraf för beräkningsegenskaper, är de flesta av dessa programvarupaket valfria. Vissa blir dock nödvändiga för specialiserade beräkningar.
- 4ti2 : mjukvarupaket för algebraiska, geometriska och kombinatoriska problem på linjära rum
- a-ton : tropisk korsningsteori
- azove : uppräkning av 0/1 hörn
- cdd : dubbelbeskrivningsmetod för att konvertera mellan en olikhet och vertexbeskrivning av en polytop
- Geomview : interaktivt 3D-visningsprogram
- Gfan : Gröbnerfläktar och tropiska sorter
- GraphViz : programvara för grafvisualisering
- LattE (Lattic Point Enumeration): räknar gitterpunkter inuti polytoper och integration över polytoper
- libnormaliz : affina monoider, vektorkonfigurationer, gitterpolytoper och rationella koner
- lrs : implementering av omvänd sökningsalgoritm för problem med uppräkning av vertex och problem med konvexa skrov
- nauty : automorfism grupper av grafer
- permlib : ställ in stabilisator och beräkningar i omloppsbana
- PORTA : räkna upp gitterpunkter för en polytop
- ppl : Parma Polyhedra Library
- qhull : Quickhull- algoritm för konvexa skrov
- singular : datoralgebrasystem för polynomberäkningar, med särskild tonvikt på kommutativ och icke-kommutativ algebra, algebraisk geometri och singularitetsteori
- skiss : för att göra linjeritningar av två- eller tredimensionella solida föremål
- SplitsTree4 : fylogenetiska nätverk
- sympol : verktyg för att arbeta med symmetriska polyedrar
- threejs : JavaScript-bibliotek för animerad 3D-datorgrafik
- tikz : TeX-paket för att skapa grafik programmatiskt
- TOPCOM : triangulering av punktkonfigurationer och matroider
- TropLi : för beräkning av tropiska linjära utrymmen av matroider
- tosimplex: Dual simplex-algoritm implementerad av Thomas Opfer
- Vinci : volymer av polytoper
Används i kombination med polymake
- jupyter-polymake : tillåter polymake i Jupyter- anteckningsböcker.
- PolymakeInterface : paket för användning av polymake i GAP .
- PolyViewer : GUI- visare för polymake-fies.