【问题标题】:How to get all algebraic associative operations on a finite set by efficient algorithm?如何通过高效算法获得有限集合上的所有代数关联运算?
【发布时间】: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


【解决方案1】:

这不仅仅是设计自己的算法,而是数学模型查找器的任务。对于这个任务,我特别推荐mace4,这是the LADR library 的一部分。它专门针对这样的代数问题进行了调整。输入(我们将其命名为 semigroups.in)如下所示:

formulas(sos).
  (x * y) * z = x * (y * z).
end_of_list.

然后通过mace4 -n 4 -N 4 -m 10000 <semigroup.in 运行它(查找所有 4 元素模型并打印多达 10000 个)会产生类似的长输出

...

============================== MODEL =================================

interpretation( 4, [number=2331, seconds=0], [

        function(*(_,_), [
                           1, 2, 3, 3,
                           2, 3, 3, 3,
                           3, 3, 3, 3,
                           3, 3, 3, 3 ])
]).

============================== end of model ==========================

============================== STATISTICS ============================

For domain size 4.

Current CPU time: 0.00 seconds (total CPU time: 0.11 seconds).
Ground clauses: seen=64, kept=64.
Selections=2132, assignments=8520, propagations=6194, current_models=2331.
Rewrite_terms=210696, rewrite_bools=65151, indexes=11452.
Rules_from_neg_clauses=586, cross_offs=3767.

============================== end of statistics =====================

User_CPU=0.11, System_CPU=0.26, Wall_clock=0.

Exiting with 2331 models.

如您所见,它非常快。

该库包含许多其他工具,例如isofilter,可让您过滤代数的同构变体等。

【讨论】:

  • Wall_clock=0 显然,吹牛是这个库原生支持的特性。他们真的什么都想好了……
  • @ParthianShot 这似乎更像是一个未实现的功能。
猜你喜欢
  • 2020-12-30
  • 1970-01-01
  • 2018-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多