|
original poster
TSC999
posted 2021-7-14 23:10
Last edited by hbghlyj 2025-5-16 02:49有重复元素的圆排列和环排列计数公式。
第一步,先按下式求出有重复元素的圆排列计数 $Q$$$Q=\frac{1}{s} \sum_{d \mid D}\left(\varphi(d)\left(\frac{s}{d}\right)!/ \prod_{i=1}^m\left(\frac{n_i}{d}\right)!\right)$$式中 $s=\sum_{i=1}^m n[i], \varphi(d)$ 为欧拉函数。 $d$ 是 $D$ 的所有约数,包括 1 和 $D$ 本身。
第二步,算出 $Q$ 中的对称圆排列数 $M$,当 $n_i$ 中多于两个奇数时,$M=0$,否则 $M=\left(\sum_{i=1}^m\left\lfloor\frac{n[i]}{2}\right\rfloor\right)!/ \prod_{i=1}^m\left\lfloor\frac{n[i]}{2}\right\rfloor!$ 种,$\left\lfloor\frac{n[i]}{2}\right\rfloor$ 表示取整。
第三步,环排列数 $\Phi=\frac{Q+M}{2}$。
MMA 写的程序代码:- Clear["Global`*"];
- m = 3; n[1] = 4; n[2] = 4; n[3] = 1;
- k = 1; (* n[i]奇数个数 *)
- s = \!\(
- \*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(m\)]\(n[i]\)\);
- Q = (Sum[EulerPhi[d] *(s/d)!/\!\(
- \*UnderoverscriptBox[\(\[Product]\), \(i = 1\), \(m\)]\(\((
- \*FractionBox[\(n[i]\), \(d\)])\)!\)\), {d,
- Divisors[GCD[n[1], n[2], n[3]]]}])/s;(*圆排列数*)
- If[k < 3, M = (\!\(
- \*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(m\)]\(\[LeftFloor]
- \*FractionBox[\(n[i]\), \(2\)]\[RightFloor]\)\))!/\!\(
- \*UnderoverscriptBox[\(\[Product]\), \(i = 1\), \(m\)]\(\[LeftFloor]
- \*FractionBox[\(n[
- i]\), \(2\)]\[RightFloor]!\)\), 0]; (*圆排列中的对称排列数*)
- \[CapitalPhi] = ((Q + M)/2)(*环排列数*)
Copy the Code 运行结果为 38。 |
|