[GAP Forum] Time to compute Size(semigroup)

Andrew Solomon andrew at illywhacker.net
Tue Jan 27 19:27:52 GMT 2004


Dear Jose Joao Morais,

The semigroups you are working with have different sizes
(S1 is approximately 20 times larger than S2), the elements
are represented differently and may not even have the same number of
generators.

The algorithm used to find the size of a semigroup is the naive one
(see RightSemigroupIdealEnumeratorDataGetElement in smgideal.gi).
At the top level the algorithm involves multiplicative closure of a set
and lower down, it involves insertion into a sorted list.

I can see no reason why the timings for the same functions should be
comparable, as the complexity of each one would depend upon
the number of generators, the size of the semigroup and the number of
points in the transformations.

Future discussions on such rather technical topics might be better
conducted via support at gap-system.org to avoid swamping the forum.

Andrew Solomon


On Tue, Jan 27, 2004 at 11:08:22AM +0000, Jose Joao Morais wrote:
> Dear GAP Forum,
> 
> 	I have a semigroup of transformations S1. Then I do
> 
> gap> Size(S1);
> 39536
> 
> 	and this is what I got with DisplayProfile()
> 
> gap> DisplayProfile();
>   count  self/ms  chld/ms  function
>   39537       10      -10  UnderlyingCollection: system getter
>   39537       30        0  UnderlyingCollection
>   39543       50        0  ADD_LIST
>  276739      260       20  EQ: for two transformations of the same set
>  237221      620      -10  Enumerator: for a collection that is a list
>   39530     1420      700  AddSet: for mutable internally represented
> list, and object
>   39530       80     2110  AddSet
> 3950033     5680     -220  LT: <trans> < <trans>
>  237216     6040     1040  PROD: trans * trans
>  237216     3370     5280  IN: for an object, and a small list
>   39537     1060    18050  ISB_LIST: for a right semigroup ideal
> enumerator
>  790742      480    18710  Size: for a list that is a collection
>       1        0    19190  Size: for a collection
>       3        0    19190  Order: for a group
>       1       60    19130  LENGTH: for a semigroup ideal enumerator
>            19190           TOTAL
> 
> 
> 
> 
> 
> 	For another semigroup S2, which is a semidirect product semigroup,
> whose elements are Tuples, I did
> 
> gap> Size(S2);
> 1764
> 
> 	after clearing the Profile information I got these times
> 
> gap> DisplayProfile();
>   count  self/ms  chld/ms  function
> 165128*     9060     -430  UnderlyingCollection: system getter
> 165128*    18000     9280  UnderlyingCollection
> 8863493     9230      120  EQ: for two transformations of the same set
>  425088      680      570  AddSet
> 1627094     1920      -50  LT: <trans> < <trans>
>  127008     2180      340  PROD: trans * trans
>   63504      670     4270  IN: for an object, and a small list
> 165128*    53310    97690  ISB_LIST: for a right semigroup ideal
> enumerator
> 171496*     9570   141430  Size: for a list that is a collection
>       1        0   151000  Size: for a collection
>       4        0   151000  Order: for a group
>       1        0   151000  LENGTH: for a semigroup ideal enumerator
> 
> (Total    104620)
> 
> 
>   63504       10       40  SemiDirectProductSemigroupElmAction: system
> getter
>  127008       50       20  Enumerator: system getter
>  127008      100      -30  IsSingleValued
>  127010      100        0  FamilySource: system getter
>  127008      100       10  IsTotal
>  127013      130       20  Enumerator: for a collection that is a list
>  127010      120       50  Tester(FamilySource)
>   63504      190        0  SemiDirectProductSemigroupElmAction
>  127008      170       30  Source: for default general mapping
>  127009      180       50  Enumerator
>  127010      180       90  FamilySource
>   65301      140      160  EQ: for two pairs
>  127008      110      210  PreImagesRange: for total general mapping
> (delegate to `Source')
>  508330      190      140  EQ: for two families: delegate to
> `IsIdenticalObj'
>   63540      450       50  Setter(SemiDirectProductSemigroupElmAction):
> system setter
>  425088      500        0  AddSet: for mutable internally represented
> list, and object
>   63540       80      500  Setter(SemiDirectProductSemigroupElmAction)
>   63540      830       60  Setter(IsSemiDirectProductSemigroupElm)
>  127008     2040     1740  ImageElm: for mapping by function
>  127008      140     3790  ImageElm
>  667623     2250     1720  LT: for two pairs
> 8255520    13190    45140  ELM_LIST: for a right semigroup ideal
> enumerator
>  127008    22500   111250  IN: for a semigroup ideal emunerator
>  127008      370   133980  IN: for a domain, and an element
>   63504     2260   143390  PROD: for two elements of a semidirect
> product semigroup
>           151000           TOTAL
> 
> 
> 
> 
> 	I wonder if anyone could give me an hint on why the times for the
> common methods between these two results are so much higher in the case
> of S2.
> 
> 
> 	Thank you,
> 	Jose Morais
> 	
> 
> _______________________________________________
> Forum mailing list
> Forum at mail.gap-system.org
> http://mail.gap-system.org/mailman/listinfo/forum

-- 
http://www-staff.it.uts.edu.au/~andrews/
Department of Computer Systems,
University of Technology, Sydney
PO Box 123, Broadway NSW Australia 2007
phone: +61-2-9514-7938            fax:   +61-2-9514-4535
CRICOS provider code - 00099F






More information about the Forum mailing list