【发布时间】:2020-02-10 17:04:46
【问题描述】:
我正在寻找一种算法,它可以为我提供元素1....n 的排列计数。如果我定义循环长度。
例如n := 4
<Set of cycle lengths> -> permutation count
1,1,1,1 -> 1 读取 4 个长度为 1 的循环导致 1 个排列:1,2,3,4
1,1,2 -> 5 读取长度为 1 的 2 个循环和长度为 2 的 1 个循环导致 5 个排列:1,2,4,3、1,4,3,2、1,3,2,4、2,1,3,4、3,2,1,4、
2,2 -> 3 读取 2 个长度为 2 的循环导致 3 个排列:2,1,4,3、3,4,1,2、4,3,2,1
1,3 -> 9 读取长度为 1 的 1 个循环和长度为 3 的 1 个循环导致 9 个排列 1,3,2,4、1,3,4,2、1,4,2,3、2,3,1,4、2,4,3,1、3,1,2,4 ,3,2,4,1,4,1,3,2,4,2,1,3,
4 -> 6 读取 1 个长度为 4 的循环导致 6 个排列:
2,3,4,1、2,4,1,3、3,1,4,2、3,4,2,1、4,1,2,3、4,3,1,2
如何计算包含循环长度的给定集合的排列计数?遍历所有排列不是一种选择。
【问题讨论】:
-
请澄清您的问题。我不清楚你的真正意思是什么。
1,1,1,1和1,1,2的值是有意义的,但我不知道之后会发生什么。 -
是的,
2,2怎么等于 6?我完全迷路了。 -
不知道“周期长度”是什么意思。
-
2,2的答案应该是 3。可能的循环集是12:34、13:24和14:23 -
是的,我用解释纠正了它
标签: algorithm math permutation combinatorics circular-permutations