Benchmarks para bases de Gröbner e solução de sistema polinomial


10

Na pergunta recente Sistema de resolução de 7 equações algébricas não lineares simbolicamente , Brian Borchers confirmou experimentalmente que o Maple pode resolver um sistema polinomial que Matlab / Mupad não pode manipular. Ouvi no passado, de pessoas que trabalham no campo, que o Maple tem uma implementação de alta qualidade das bases de Gröbner e algoritmos relacionados (que eu assumo é o que está sendo usado aqui).

Por isso, sou tentado a sugerir "O Matlab é lento com esse tipo de problema, mude para o Maple", mas eu gostaria de ter dados para fazer backup dessa declaração.

Existe um conjunto de resultados comparativos comparando a velocidade e a eficácia das implementações da base de Gröbner e soluções de sistemas polinomiais em diferentes sistemas de álgebra computacional? (Maple, Mathematica, a caixa de ferramentas simbólica do Matlab, etc.).


Não esqueça sympy!
Christian Clason

@ChristianClason Sim, em princípio existem muitos deles. Singular, Macaulay, Magma, CoCoA, Gap, Sage, Axiom, Maxima, Yacas ... Você acredita que o sympy é particularmente bom? Como se sai no problema de Alaa?
Federico Poloni

Não que eu acredite que seja particularmente bom, estou apenas interessado, pois é amplamente disponível, de código aberto e bastante fácil de aprender. Eu tentei no problema, mas não obtive nenhum resultado (mas também não tive muita paciência).
Christian Clason

Eu acho que é preciso diferenciar entre software simbólico de uso geral (SymPy, Maple, caixa de ferramentas do Matlab, Mathematica) e os mais fortes pacotes industriais para fins especiais (Singular, CoCoA, Macaulay). O Sage é um pouco diferente porque essencialmente apenas agrupa muitos pacotes para fins especiais (juntamente com alguns pacotes para fins gerais). Há uma lista útil na Wikipedia .
Christian Clason

Outro motivo que mencionei o sympy é que ele desempenha o mesmo papel no qual Alaa está interessado - é fácil usar os resultados (via lambdify) em cálculos numéricos.
Christian Clason

Respostas:


10

Eu publiquei alguns benchmarks aqui: http://www.cecm.sfu.ca/~rpearcea/mgb.html

Estes são para pedidos com graus totais. Para resolver sistemas, você normalmente precisa fazer mais trabalho. Os horários são para um desktop de médio porte típico a partir de 2015 (Haswell Core i5 quad core).

O sistema mais rápido em um núcleo é o Magma, que usa aritmética de ponto flutuante e SSE / AVX. O Magma é o sistema mais forte porque possui boas implementações do FGLM e do Groebner walk (não testado). Esses algoritmos são usados ​​para converter uma base total de graus em uma base lexicográfica que possui uma forma triangular. Em seguida, você normalmente fatoraria os polinômios nas variáveis ​​mais baixas.

mgb é a biblioteca C do Maple 2016 que implementa o algoritmo F4 para ordens totais de grau e eliminação. Seu desempenho é comparável ao Magma quando ele usa múltiplos núcleos.

FGb é a implementação do F4 de Faugere. A versão testada aqui é do site dele e é mais rápida que a versão do Maple.

Giac é um sistema de código aberto com uma implementação do F4. Há um artigo descrevendo-o http://arxiv.org/abs/1309.4044

Singular é um sistema de código aberto para muitos cálculos em geometria algébrica. Os benchmarks aqui usam "modStd", que é uma versão multi-modular do algoritmo Buchberger. Você pode ver que o algoritmo Buchberger não é competitivo com o F4. O motivo básico é que F4 amortiza o custo de todas as operações monomiais. Além disso, o Singular possui razoavelmente boas implementações do FGLM e do Groebner Walk, além de outros algoritmos úteis para a solução.


Obrigado, isso é muito útil. Estou pensando em mudar a resposta aceita.
Federico Poloni

8

O Google benchmark polynomial systemsleva a alguns hits, incluindo a Iniciativa de Referência em Álgebra de Computadores da Universidade de Mannheim . Infelizmente, a maioria deles está desatualizada ou extinta. O mais ativo parece ser o SymbolicData Wiki , mas, pelo que sei, ele apenas coleta problemas de benchmark , não resultados de benchmark .

Algumas comparações (datadas de 1996) dos sistemas polinomiais de resolução Axiom, Macsyma, Maple, Mathematica, MuPAD e Reduce podem ser encontradas em Hans-Gert Gräbe, Sobre o sistema polinomial de solução de Axiom, Macsyma, Maple, Mathematica, MuPAD, e Reduce , Preprint 11/96 des Instituts für Informatik, Universität Leipzig, Alemanha, dezembro de 1996 . A conclusão é que o Axiom, o Maple e o Reduce vencem devido ao uso das bases de Gröbner (os outros não no momento), com o Maple saindo um pouco à frente dos outros.

Há também uma comparação antiga no site do SINGULAR mostrando o SINGULAR 2.0 (atual em dezembro de 2015 é 4.0.2) vencendo o Maple, entre outros.

Por outro lado, uma publicação mais recente ( Yao Sun, Dongdai Lin e Dingkang Wang. 2015. Ao implementar algoritmos de Gröbner baseados em assinaturas usando rotinas algébricas lineares da M4RI. ACM Commun. Comput. Algebra 49, 2 (agosto de 2015) , 63-64 comparam a implementação dos autores de um algoritmo de base Gröbner com o de Maple, Singular e Magma, com o Magma sendo mais rápido que os outros dois pacotes por uma ordem de magnitude (e vinculando-se à implementação dos autores).

Portanto, parece depender muito do problema (tamanho e estrutura) e da versão do software que pacote é o mais rápido. No entanto, a recomendação de usar um sistema de álgebra computacional de propósito específico desenvolvido ativamente, como Singular, Magma ou Maple, em vez de um software de computação simbólica de uso geral, é sólida. Isso vale duas vezes para uma caixa de ferramentas em um software numérico , que adiciona outro nível de sobrecarga e geralmente está várias versões atrás do software independente em que elas são baseadas (MuPAD, anteriormente Maple, no caso da caixa de ferramentas do Matlab).


Obrigado por fornecer esses recursos. É surpreendente para mim que existem muito poucos ou nenhum benchmark abrangente e atualizado.
Federico Poloni

6

Lembre-se sempre de que os resultados de qualquer benchmark dependerão, além do tamanho do problema, do campo base sobre o qual o anel polinomial é definido (números racionais ou números inteiros modulam a potência de um número primo).

A biblioteca FGb é uma implementação ativamente desenvolvida e de alto desempenho do algoritmo F5. Uma referência comparando FGb a Magma pode ser encontrada em:

Faugère, J.‑C. (2010). FGb: Uma Biblioteca para Computar Bases de Gröbner (pp. 84-87). doi: 10.1007 / 978-3-642-15582-6_17

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.