Post a reply
Username:
Note:If not registered, provide any username. For more comfort, register here.
Subject:
Message body:
Enter your message here, it may contain no more than 60000 characters. 

Smilies
:D :) :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
Font size:
Font colour
Options:
BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON
Disable BBCode
Disable smilies
Do not automatically parse URLs
Confirmation of post
To prevent automated posts the board requires you to enter a confirmation code. The code is displayed in the image you should see below. If you are visually impaired or cannot otherwise read this code please contact the %sBoard Administrator%s.
Confirmation code:
Enter the code exactly as it appears. All letters are case insensitive, there is no zero.
   

Topic review - "slimgb" strategy differences in groebner versus liftstd
Author Message
  Post subject:  Re: "slimgb" strategy differences in groebner versus liftstd  Reply with quote
liftstd computes much more: not just a Groebner basis, but also the transformation matrix and the syzygies.
The current Singular(github version) tries to improve that by not computing the syzygies, if one does not need them.
Post Posted: Fri Mar 05, 2021 2:56 pm
  Post subject:  "slimgb" strategy differences in groebner versus liftstd  Reply with quote
Using option(prot) I can see that "slimgb" almost immediately diverges in strategy when used in groebner versus liftstd.
How can I make liftstd proceed like the groebner calculation?

For comparison, here are some snippets of output (I added newlines added in the prot output to make it easier to read and compare with a diff).
Groebner calculation with "slimgb":
Code:
...
STDIN  94> option(redSB);
STDIN  95> option(prot);
STDIN  96> ideal I2 = groebner(I, "slimgb");
slimgb in ring (QQ),(... snip variable list ...),(dp(54),C)
2M[81,81](648)
3M[100,100](2061)
3M[100,100](3833)
3M[100,100](5768)
3M[100,100](7465)
3M[100,100](9490)
3M[100,100](11436)
3M[48,48](12558)
...

liftstd calculation with "slimgb":
Code:
...
STDIN  94> option(redSB);
STDIN  95> option(prot);
STDIN  96> module s;
STDIN  97> matrix T;
STDIN  98> ideal I2 = liftstd(I,T,s,"slimgb");
{1}slimgb:
2M[81,81](729)
3M[100,100](2412)
3M[100,100](4197)
3M[100,100](6043)
...


With the same ideal, the first finishes in 10 seconds and under 100MB total memory usage (including program). While the second one is still running after hours. This is why I'd like to be able to have liftstd follow the same strategy and groebner.

Is it possible liftstd is changing the problem (homogenizing first?) under the hood? If so, in my particular case, the basis would explode to something huge, so I really hope it is not trying to do that.

As a check to see if groebner was doing extra heuristics, I also ran a test calling slimgb directly for calculating the groebner basis "ideal I2 = slimgb(I);"
The prot output matched exactly with the "ideal I2 = groebner(I, "slimgb");" case, so groebner is not added extra heuristics here.

What is causing the change in strategy between using slimgb for groebner and for liftstd?
Post Posted: Thu Mar 04, 2021 8:10 pm


It is currently Fri May 13, 2022 10:54 am
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group