【发布时间】:2014-07-09 16:25:54
【问题描述】:
对一组 2 个元素进行二元运算的次数是 2^(2*2)=16。
该集合上的关联二元运算数仅为 8。
对一组 3 个元素进行二元运算的次数为 3^(3*3)=19683。
该集合上的关联二元运算数仅为 113。
如何知道n个元素的集合有多少个关联二元运算?
另外,为了得到这113个操作并写入文件,还需要编写一个程序。
如果我将尝试获取所有 19683 操作,然后检查所有 19683 操作的关联属性“a*(bc)==(ab)*c”,这将有效,但这n=4 个元素应该需要很长时间!
如何编写一个高效的算法来解决这个任务?
请帮帮我!
【问题讨论】:
-
您的问题范围很广,而且可能也不太关注 SO。 SO 是关于编程,而不是关于组合学。
-
@JensGustedt 这个问题更多的是关于算法而不是组合。当然,您需要组合数学来分析算法(一个简单的实现在复杂性上类似于
O(n^(n^2))),但这与组合数学无关。我同意这篇文章可能更适合programmers SE,因为他们在their FAQ 中特别提到了算法。 -
@bheklilr:嗯,SO 至少有一个algorithm tag(还有一个用于抽象代数的标签,甚至还有一个用于半群的标签)。但我认为,它太宽泛了,一个好的答案可能会很长。最后,到目前为止,OP 还没有尝试过任何事情(这是一个“给我算法”的问题)。 IremadzeArchil:也许math.stackexchange.com?实际上,您是在问“存在多少具有 n 个元素的半群?”
-
关注oeis.org/A023814,或许可以找到一些不错的资源
标签: c algorithm modeling abstract-algebra semigroup