【发布时间】:2015-03-19 11:00:46
【问题描述】:
我正在为棋盘游戏开发概率分析程序。作为算法的一部分*我需要计算一个数字的分区的可能排列(加上一些填充),以便所有分区组件不能占据任何低于排列总长度的位置,以数字为单位,减去值的组件。
(然而,被分割的数字永远不会超过 8,并且排列的长度永远不会超过 7。)
例如,假设我有 4 的分区,“211”,我想在填充为 2 时找到排列,即长度为 5:
0 1 2 3 4 (array indexes)
5 4 3 2 1 (maximum value of partition component that can be allocated to each index)
2 1 1 _ _ (the partition plus 2 empty indexes)
这表示为像 {2,1,1,0,0} 这样的数组
当 2 在 0 索引中时有 6 个排列(4!/2!2!),并且 2 可以占用 4 个索引(2 不能放在最后一个索引中)所以总共有 24 个排列这种情况(一个 1 可以占据任何索引)。
输入“21100”的输出:
21100、21010、21001、20110、20101、20011
02110、02101、02011、12100、12010、12001
00211、10210、11200、10201、01210、01201
10021、01021、00121、11020、10120 01120
请注意,这只是“21100”的所有排列减去 2 在第 4 个索引中的排列的集合。这是一个比较简单的案例。
该问题可以描述为组合n个不同的排列组,因为上述情况可以表示为x=1 n=4和x=2 n=5的排列组合,其中x是值计数,n是“空间”计数。
我的困难是制定一种可以通过计算获得所有可能性的方法,任何建议都将不胜感激。 -请原谅我的问题中的术语混乱。
*算法回答以下问题:
有一组 n 个单位被攻击 k 次。每个 攻击有 p 几率失手和 q (1 - p) 几率造成伤害 集合中的一个随机单位。第二次受到伤害的单位被摧毁 并从集合中移除。
存在的概率是多少 x 个未受损单位、y 个受损单位和 z 个在攻击后被摧毁的单位?
如果有人知道解决此问题的更直接方法,请告诉我。
【问题讨论】:
-
我是一名组合数学的TA,我还是没看懂你的问题,请你尝试更好地正式定义你的输入和预期输出?
-
有效排列的每个规则/标准的项目符号列表(例如,“xyz 数字不能放在最后一个索引中”将是一个)可能是最好的方法。跨度>
-
有一点不清楚的是放置条件。我看不到“不能将数字放入任何低于 length-number-1 的索引”如何转换为“2 不能放入最后一个索引”。
-
@Tom:我真的认为您需要更准确地使用您的术语。确保您在问题中正确使用了
number和digit,而length-number-1不是很清楚。 -
我添加了一些进一步的解释,并试图标准化我的不确定语法,如果你愿意再看一下。
标签: algorithm combinations permutation integer-partition