计算合并乐高积木的方法数量

时间:2012-04-10 18:31:06

标签: algorithm combinations combinatorics lego

我有一系列任意的乐高积木。我也有一些由3块乐高积木制成的数字。我想知道我可以创建当前乐高积木阵列的数字组合数量。

任何人都有一些参考资料,所以我可以解决这个问题吗?

我可以使用哪些算法?我可以用任何理论吗?

提前感谢您提供的任何帮助。

/汉斯


修改:此问题为re-asked on the math stack exchange.

2 个答案:

答案 0 :(得分:5)

您是否相信这样的问题,或者至少是他们的一般情况,实际上仍然是开放研究问题?你在这里做真正的数学研究。 ;)

SørenEilers,Mikkel Abrahamsen和Bergfinnur Durhuus对LEGO组合计数问题做了一些工作,即计算number of unique ways you can arrange six identical 4x2 lego bricks.您可以查看他们的工作(包括Java代码)以获取灵感。

从文本中略过,似乎他们分两种方式解决了问题:

  1. 使用递归块定位和计数算法。
  2. 使用蛮力 - 尝试六块砖在太空中的每一个可能的位置(即使那些砖块不接触的砖块。)
  3. 提示:即使对于少量砖块,可能的组合数量。这就是LEGO如此有趣的原因。

答案 1 :(得分:1)

根据您期望的计算复杂性,您可以使用动态编程。

让x1,x2,... xk成为一个解决方案,使x1副本组合1,x2副本组合2 ....

F([])= F([x1 = 0] + F([x1 = 1] ......

F([x1])= F([x1,x2 = 0])+ F([x1,x2 = 1])....

这个解决方案的复杂性是O(n ^ k),其中n是砖的数量,k是数字的数量。