Skip to content

Improve SelectSmallGroups to cover more orders efficiently #4

@fingolfin

Description

@fingolfin

The function SelectSmallGroups is the underlying engine driving AllSmallGroups and IdsOfAllSmallGroups. This can for example be used to get all groups of a certain order which are not solvable.

For many orders, there are efficient implementations. But for many others (e.g. order 1920, many of the large cube free orders), there are not. These then fallback to a generic routine, which ends up creating all groups of a given order. This is very inefficient.

For example, there are 241004 groups of order 1920, but only 588 of these are non-solvable -- namely exactly the last 588. (In fact, for most of the "non-legacy" orders, the authors of the small groups library took care to first list the nilpotent groups, then the other solvable ones, and finally the non-solvable ones). Based on this knowledge,
AllSmallGroups(1920, IsSolvableGroup, false); could terminate in a few milliseconds, but instead it takes ages (I didn't bother to let the computation finish, so I don't know how long exactly).

It would be highly desirable to improve this. For order 1920 (which is a special case in the small groups library anyway), that would be fairly easy. It's somewhat more work for the cubefree groups, I guess.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions