polymake цитировался в более чем 300 недавних статьях, проиндексированных Zentralblatt MATH, как видно из его записи в базе данных swMATH. [4]
Специальные функции и приложения
polymake обладает рядом особенностей, делающих работу с ним особенно приятной.
Во-первых, polymake может использоваться в скрипте Perl . Более того, пользователи могут расширять polymake и определять новые объекты, свойства, правила для вычисления свойств и алгоритмы. [5]
Во-вторых, он демонстрирует внутреннюю схему клиент-сервер для размещения использования Perl для управления объектами и интерфейсами, а также C++ для математических алгоритмов. [6] Сервер хранит информацию о каждом объекте (например, политопе), а клиент отправляет запросы для вычисления свойств. Сервер имеет задачу определения того, как выполнить каждый запрос из информации, уже известной о каждом объекте, используя систему, основанную на правилах. Например, существует много правил о том, как вычислять грани политопа. Грани могут быть вычислены из описания вершин политопа и из (возможно, избыточного) описания неравенства. polymake строит граф зависимостей, описывающий шаги для обработки каждого запроса, и выбирает наилучший путь с помощью алгоритма типа Дейкстры. [6]
polymake делит свою коллекцию функций и объектов на 10 различных групп, называемых приложениями. Они ведут себя как пространства имен C++. Приложение polytope было разработано первым и является самым большим. [7]
Распространенные: «вспомогательные» функции, используемые в других приложениях. [8]
Веер: функции для полиэдральных комплексов (которые обобщают симплициальные комплексы ), плоские чертежи 3-многогранников, полиэдральные веера и подразделения точек или векторов. [9]
Матроид: вычисление стандартных свойств матроида , таких как базы и схемы. Это приложение также может вычислять более сложные свойства, такие как полином Тутте матроида и реализация матроида с помощью многогранника. [14]
Политоп: более 230 функций или вычислений, которые можно выполнить с политопом. Эти функции варьируются по сложности от простого вычисления базовой информации о политопе (например, количество вершин, количество граней, тесты для симплициальных политопов и преобразование описания вершин в описание неравенства) до комбинаторных или алгебраических свойств (например, H-вектор , полином Эрхарта , базис Гильберта и диаграммы Шлегеля ). [7] Также есть много вариантов визуализации.
Тропические: функции для исследования тропической геометрии ; в частности, тропические гиперповерхности и тропические конусы. [16]
История развития
polymake версии 1.0 впервые появился в трудах DMV-семинара «Многогранники и оптимизация», состоявшегося в Обервольфахе в ноябре 1997 года. [2] Версия 1.0 содержала только приложение многогранников, но система «приложений» еще не была разработана. Версия 2.0 была выпущена в июле 2003 года, [17] а версия 3.0 была выпущена в 2016 году. [18] Последняя большая ревизия, версия 4.0, была выпущена в январе 2020 года. [19]
Взаимодействие с другими программными пакетами
polymake имеет высокомодульную конструкцию и, следовательно, демонстрирует отличное взаимодействие со сторонними программными пакетами для специализированных вычислений, тем самым предоставляя общий интерфейс и мост между различными инструментами. Пользователь может легко (и неосознанно) переключаться между использованием различных программных пакетов в процессе вычисления свойств политопа. [20]
Используется в polymake
Ниже приведен список сторонних программных пакетов, с которыми polymake может взаимодействовать, начиная с версии 4.0. Пользователи также могут писать новые файлы правил для взаимодействия с любым программным пакетом. Обратите внимание, что в этом списке есть некоторая избыточность (например, несколько различных пакетов могут использоваться для поиска выпуклой оболочки многогранника). Поскольку polymake использует файлы правил и граф зависимостей для вычисления свойств, [5] большинство этих программных пакетов являются необязательными. Однако некоторые из них становятся необходимыми для специализированных вычислений.
4ti2: программный пакет для решения алгебраических, геометрических и комбинаторных задач на линейных пространствах
a-tint: теория тропического пересечения
azove: перечисление 0/1 вершин
барвинок: подсчет целых точек в параметризованных и непараметризованных многогранниках
cdd: метод двойного описания для преобразования между неравенством и вершинным описанием многогранника
single: система компьютерной алгебры для полиномиальных вычислений, с особым акцентом на коммутативную и некоммутативную алгебру, алгебраическую геометрию и теорию особенностей
эскиз: для создания линейных рисунков двух- или трехмерных твердых объектов
^ ab Gawrilow, Ewgenij; Joswig, Michael (2000-01-01). Kalai, Gil; Ziegler, Günter M. (ред.). polymake: a Framework for Analyzing Convex Polytopes . Polytopes—combinatorics and computing, DMV Seminar. Birkhäuser Basel. стр. 43–73 . doi :10.1007/978-3-0348-8438-9_2. ISBN9783764363512.
^ Ассарф, Бенджамин; Гаврилов, Евгений; Герр, Катрин; Йосвиг, Майкл; Лоренц, Бенджамин; Паффенхольц, Андреас; Рен, Томас (01 марта 2017 г.). «Вычисление выпуклых оболочек и подсчет целых точек с помощью Polymake». Математическое программирование вычислений . 9 (1): 1–38 . arXiv : 1408.4653 . doi : 10.1007/s12532-016-0104-z. ISSN 1867-2957. S2CID 5594262.
^ "Polymake - Математическое программное обеспечение - swMATH".
^ аб Йосвиг, Майкл; Мюллер, Бенджамин; Паффенхольц, Андреас (17 февраля 2009 г.). «Полимак и решетчатые многогранники». arXiv : 0902.2919 [math.CO].
^ ab Gawrilow, Ewgenij; Joswig, Michael (2005-07-13). "Геометрическое рассуждение с помощью polymake". arXiv : math/0507273 .
^ Gawrilow, Ewgenij; Joswig, Michael (2001-06-01). "Polymake: подход к модульному проектированию программного обеспечения в вычислительной геометрии". Труды семнадцатого ежегодного симпозиума по вычислительной геометрии . SCG '01. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 222– 231. doi :10.1145/378583.378673. ISBN978-1-58113-357-8. S2CID 16519425.