1

I found a paper, but here the author solves a bit different problem. My question is: Is there any efficient algorithm for computing all semigroups of order n?

  • So you don't just want to compute the number of semigroups, you want to compute the semigroups themselves? Meaning that you want your algorithm to generate a multiplication table for each and every semigroup of order $n$? – bof Apr 23 '16 at 08:50
  • There are an awful lot of them, see OEIS A001423: 1, 1, 4, 18, 126, 1160, 15973, 836021, 1843120128, 52989400714478, ... – almagest Apr 23 '16 at 09:00
  • Have you tried the GAP software http://www.gap-system.org/Packages/semigroups.html – almagest Apr 23 '16 at 09:10
  • I think you would find many answers related to your question if the question would be in the http://cstheory.stackexchange.com – user777 Apr 23 '16 at 09:41
  • I don't understand the content of this algorithm. What here does mean the 5-th line ( if v(ua[i]) is new ) ? – David Tsaturyan Apr 23 '16 at 10:15

1 Answers1

2

There is no efficient algorithm for computing all the semigroups of order $n$. The number of semigroups of order 10 is not even known (up to isomorphism and anti isomorphism). This is an extremely hard problem, and the number of semigroups grows very very quickly.

Almost all semigroups of any given size are 3-nilpotent, meaning that the product of any three elements is some fixed element 0, and that there is a product of two elements that is not 0. Arguably these semigroups are not very interesting.

See my answer here where I answer a similar question.

A library of all semigroups with order at most 8 (again up to isomorphism and anti isomorphism) is available in the GAP package Smallsemi.