组合排列组

时间:2015-03-19 11:00:46

标签: algorithm combinations permutation integer-partition

我正在为棋盘游戏开发概率分析程序。作为算法的一部分*我需要计算一个数字的分区的可能排列(加上一些填充),这样所有分区组件都不能占用任何低于排列总长度的位置,以数字为单位减去值组件。

(但是,分割的数字不太可能高于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!),并且有4个索引可以占用2个(2个不能放入最后一个索引)所以总共有24个排列这种情况(1可以占据任何指数)。

输入“21100”的输出:

  

21100,21010,21001,20110,20101,20011

     

02110,02101,02011,12100,12010,12001

     

00211,10210,11200,10201,01210,01201

     

10021,01021,6121,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 攻击后销毁单位?

如果有人知道更直接的方法解决这个问题,请告诉我。

1 个答案:

答案 0 :(得分:0)

我将使用该算法生成多个问题的所有排列,如此问题的答案中所给出的

  

How to generate all the permutations of a multiset?

然后过滤以符合我的标准。

相关问题