Karim BELABAS on Mon, 28 Apr 2003 21:59:10 +0200 (MEST)

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: polredabs() suggestion

On Mon, 28 Apr 2003, Igor Schein wrote:
> On Mon, Apr 28, 2003 at 04:26:01PM +0200, Karim BELABAS wrote:
>> On Mon, 28 Apr 2003, Igor Schein wrote:
>>> I was thinking, maybe it's a good idea to restart smallvectors() with
>>> a lower bound once a better generator is found, to shorten the sorting
>>> stage.
>> The current algorithm does this. Anytime a better generator is found, the
>> bound is updated, pruning the search tree.
> Then I don't understand the following behavior ( snapshot of a polredabs()
> running I happen to be running right now, at \g5 ):
> The same generator is output over and over again.
> In other recent examples, I saw cases where several different generators
> are output during this stage.   It doesn't make sense if pruning is done,
> because the non-optimal ones shouldn't be seen more than once.

The ones which are output _are_ optimal [so far]. Pruning is done so that all
the _strictly_ worse ones currently accumulated are deleted. Then we
accumulate new elements [ which we don't check because the check is expensive
and it failed a few times already ].

When the cache overflows, we have to get rid of some of those accumulated
elements, so we sort them in order of increasing norm, and check them in

When we find a generator, the "tail" is deleted. Unfortunately, we may find
the same generator over and over again [ because we accumulate elements all
of which generate subfields ].

An exhaustive search algorithm simply doesn't work when there are many
subfields and huge dimension. Using a C^n algorithm when n = 72 is not really
supposed to work. It _does_ work sometimes, but you shouldn't expect it too


P.S: I could "mark" the previous generator, so that the check is not done
many times on the same element, and it is just accepted as is, provided it
passes the test once. With current settings that means < 0.5% savings. I
didn't bother.
Karim Belabas                     Tel: (+33) (0)1 69 15 57 48
Dép. de Mathématiques, Bât. 425   Fax: (+33) (0)1 69 15 60 19
Université Paris-Sud              http://www.math.u-psud.fr/~belabas/
F-91405 Orsay (France)            http://www.parigp-home.de/  [PARI/GP]