【问题标题】:Count the number of ways to combine LEGO bricks [closed]计算组合乐高积木的方法数量[关闭]
【发布时间】:2012-04-10 18:31:05
【问题描述】:

我有任意一组乐高积木。我也有一些由 3 块乐高积木制成的人物。我想知道我可以从当前的乐高积木阵列中创建多少组合。

谁能给我一些参考,我可以解决这个问题吗?

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

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

/汉斯


编辑:这个问题是re-asked on the math stack exchange.

【问题讨论】:

  • 所有乐高积木都一样吗?如果不是,有多少种不同类型的砖? “人物”是由一组独特的砖块组成的吗?你应该在你的问题上投入更多的思考和努力。
  • 我有六种砖颜色,所以砖的阵列可以是:蓝色、红色、红色、黄色、绿色、黄色、橙色、蓝色、黄色、白色。这些人偶由 3 块砖组成。不同的数字是: 1:黄、白、蓝; 2:蓝、黄、绿; 3:黄色、橙色、蓝色; 4:黄、红、黄; 5:黄色、蓝色;
  • 现在,任何三个的组合都是有效的组合?
  • 不,我只有这些组合:1(黄、白、蓝)、2(蓝、黄、绿)、3(黄、橙、蓝)、4(黄、红、黄) ), 5 (黄、蓝)
  • 我们只看图 1。假设我们有 2 个黄色、3 个白色和 4 个蓝色块。仅针对图 1(黄色、白色、蓝色)的组合数量是多少?

标签: algorithm combinations combinatorics lego


【解决方案1】:

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

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

从文本的浏览来看,他们似乎以两种不同的方式解决了问题:

  1. 使用递归块定位和计数算法。
  2. 使用蛮力 - 尝试六块砖在空间中的所有可能位置(即使是那些砖不接触的位置。)

提示:可能的组合数量,即使是少量的积木,也是大量。这就是让乐高变得如此有趣的原因。

【讨论】:

  • 顺便提一下,在 math.stackexchange.com 上问这个问题可能是值得的。这确实是一道数学题,数学家们将能够给出更好的答案。
  • 非常感谢叶丽昂!我会在其他论坛提问。
【解决方案2】:

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

设 x1,x2,...xk 是一个解,使得组合 1 的 x1 个副本,组合 2 的 x2 个副本 ....

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

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

这个解决方案的复杂度是 O(n^k),其中 n 是砖块的数量,k 是图形的数量。

【讨论】:

  • 这是一个非常通用的答案 - 动态编程与手头的任务有什么关系?
  • @Li-aungYip 为什么?这是一个非常准确的答案。你不明白哪一部分?基本上选择你想要构建多少形状 1 的复制品,然后使用其余的积木来构建其他形状。
猜你喜欢
  • 2021-03-23
  • 2012-05-10
  • 2020-05-17
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多