# Way to Pólya Counting Theory
本文是 [Way to Burnside's Lemma](/yTfRpxg7QvW3bqQgkY-77A) 的拓展,主要包含以下內容
* cyclic index
* inventory
* pólya counting theorem
* pólya counting formula
本質上,Pólya Enumeration theorem (簡稱PET) 是 Burnside's lemma 的拓展版本,
能夠解決類似限制顏色選擇次數的本質不同計數問題。
請參考 https://oi-wiki.org/math/combinatorics/polya/
For the sake of trying to confuse you the readers,來先給出一些定義。
## Cyclic index
給定有限群 $G$ 作用在有限集 $X$, 其中 $|X| = n$, 則 $g \in G$ 的 cyclic index (循環指標) 是
$$z_{g,X}(t_1,\dots,t_n) = \prod_{O \in X/\langle g \rangle}t_{|O|} = \prod_{k=1}^{n}t_k^{r_k(g)} \in \mathbb Z[t_1,\dots,t_n]$$
其中 $r_k(g) := |\left\{\langle g \rangle \cdot x \in X/\langle g \rangle : |\langle g \rangle \cdot x| = k\right\}|$ 算的是有幾個 order 為 k 的 $\langle g \rangle$-orbit.
:::spoiler 第二個等號的證明
把各種 $O$ 按照大小分類,分成 $k := |O| \in\{ 1, \dots, n\}$ 再來相乘
$$\prod_{O \in X/\langle g \rangle}t_{|O|}
= \prod_{k=1}^{n}\prod_{O \in X/\langle g \rangle:\,|O|=k}t_k
= \prod_{k=1}^{n}t_k^{r_k(g)}$$
:::
並且,群 $G$ 本身的 cyclic index 是
$$z_{G,X}(t_1,\dots,t_n) = \frac{1}{|G|}\sum_{g\in G}z_{g,X}(t_1,\dots,t_n) \in \mathbb Q[t_1,\dots,t_n]$$
### Remark $\alpha$
關於這個定義,有一個值得一提的是:根據上一篇文章,我們知道
$$|Map(X,C)/G| = \frac{1}{|G|}\sum_{g\in G}|C|^{|X/\langle g \rangle|}$$
因此改寫右邊等式就有
$$|Map(X,C)/G| = z_{G,X}(|C|,\dots,|C|)$$
細節如下
::: spoiler
$$\begin{aligned}
z_{G,X}(|C|,\dots,|C|)
&= \frac{1}{|G|}\sum_{g\in G} t_{g,X}(|C|,\dots,|C|) \\
&= \frac{1}{|G|}\sum_{g\in G} \prod_{O \in X/\langle g \rangle} |C| & (\text{as } t_i = |C| \quad\forall i)\\
&= \frac{1}{|G|}\sum_{g\in G}|C|^{|X/\langle g \rangle|} \\
&= |Map(X,C)/G|
\end{aligned}$$
:::
### Remark $\beta$
如果根據 Cayley theorem 把 $G$ 看成一個 $X$ 的置換群,我們知道 $g$ 的每個元素都可被分解為一堆 disjoint cycle,則上述定義的 $r_k(g)$ 就等於
$g$ 的 cycle decomposition 中長度為 $k$ 的數目。
因此,把「各種長度的軌道數相加 = 軌道總數」這句話寫成數學,就有
$$\sum_{k=1}^{|X|}{r_k(g)} = |X/\langle g \rangle|$$
以及,「每個 $X$ 的元素都屬於一個軌道」就可以寫成
$$\sum_{k=1}^{|X|}{kr_k(g)} = |X|$$
### Remark $\gamma$
上述定義中 $z_{g,X}(t_1,\dots,t_n)$ 是一個 degree 為 $\sum_{k=1}^{|X|}{r_k(g)} = |X/\langle g \rangle|$ 的 monomial.
## Inventory and pattern inventory polynomial
定義 inventory 如下: $\forall f \in Map(X,C)$
$$p(f) = \prod_{x\in X}f(x) = \prod_{c\in C}c^{|f^{-1}(c)|}$$
:::spoiler 第二個等號的證明
由交換累加順序,證明如下
$$\begin{aligned}
\prod_{x\in X}f(x)
&= \prod_{c\in C}\prod_{x\in X: f(x) = c} c \\
&= \prod_{c\in C}\prod_{x\in X: x \in f^{-1}(c)} c \\
&= \prod_{c\in C} c^{|f^{-1}(c)|}
\end{aligned}$$
:::
Pattern inventory polynomial of $C$ is
$$p_{G,X}(C) = \sum_{O_f \in Map(X,C)/G}p(f)$$
其中 $f$ 可以是 $O_f$ 的任意元素
我們不禁要問,真的可以*任意元素*嗎?
請見
:::spoiler 良定義的證明
令 $O_f \in Map(X,C)/G$ 為給定。假設 $f,\,f' \in O_f$ 為某兩個著色函數。(此處的 $f'$ 不是指微分...)
因爲他們同屬一個軌道,假設有 $g\in G$ 使得 $f(g^{-1} \cdot x) = f'(x)\quad \forall x\in X$
則確實,因為 $g^{-1}\cdot G = G$,則可以改寫 product 如下
$$\begin{aligned}
\prod_{x\in X}f(x)
&= \prod_{x'\in X}\prod_{x : g \cdot x = x'}f(x) \\
&= \prod_{x'\in X}\prod_{x : x = g^{-1} \cdot x'}f(x) \\
&= \prod_{x'\in X}f(g^{-1}\cdot x') \\
&= \prod_{x'\in X}f'(x)
\end{aligned}$$
此即說明 $f\in O_f$ 可以任取。
:::
### Remark
實務上,我們知道 $C$ 可以被看做顏色的集合,然而這邊在定義
$p(f)$ 的時候卻把「顏色」給相乘了。
事實上,這是把每個 $c\in C$ 的元素都看成另一個變數 $x_c$ 並且才把 $p(f)$ 定義成這些變數的形式和,
就像你在生成函數做的事情一樣,而這些 $c_x$ 形成的形式多項式是一個向量空間 $\mathbb{Q}[c_x | x \in X]$。
以下把這個向量空間記為 $\mathbb{Q}[C]$
## Pólya Counting Theorem
statement: 給定有限群 $G$ 作用在有限群 $X$, 顏色集合 $C$
我們有
$$p_{G,X}(C) = z_{G,X}(\sum_{c\in C}c,\sum_{c\in C}c^2,\dots,\sum_{c\in C}c^n)$$
proof sketch: 根據上一篇的 [Lemma 1](https://hackmd.io/@a93951230/r173iKXaxg#Lemma-1) 我們可以把 $p_{G,X}(C)$ 的定義改寫成易於 Lemma 2 使用的形式 (we will prove equivalence in the following):
$$p_{G,X}(C) = \sum_{O \in Map(X,C)/G}\bar{p}(O)$$
其中 $\bar{p}(O)$ 做的事情就是從軌道 $O$ 中挑出一個 $f \in O$ 並計算回傳 $\prod_{x\in X}f(x)$
> 注意 $\bar{p}$ 是從 $Map(X,C)/G$ 打到 $C$ 的函數。也就是
> $$\bar{p} \in Map(Map(X,C)/G,C)$$
令 $W=\mathbb Q [C]$,此時便可以使用上一篇的 [Lemma 2](https://hackmd.io/@a93951230/r173iKXaxg#Lemma-2)
::: spoiler lemma 2 敘述
假設有限 $G$ 作用在有限 $X$,且 $W$ is a vector space over $\mathbb Q$,
則 $\forall w\in Map(X,W)^G$,以及 $\bar{w}\in Map(X/G,W)$ corresponding to $w$ by lemma 1, 都有
$$\sum_{O\in X/G}\bar{w}(O) = \frac{1}{|G|}\sum_{g\in G}\sum_{x\in X^g}w(x)$$
:::
按此得到
$$p_{G,X}(C) = \frac{1}{|G|}\sum_{g\in G}\sum_{f\in Map(X,C)^g}p(f) = \frac{1}{|G|}\sum_{g\in G}\sum_{f\in Map(X,C)^g}\prod_{x\in X}f(x)$$
---
現在我們 Claim 一些事實,所以關於定理的等號可以被推導。
Claim $\tau$:
$$p_{G,X}(C) = \sum_{O \in Map(X,C)/G}\bar{p}(O)$$
::: spoiler proof
按照定義對於每個 $O$, $\bar{p}(O) = p(f)$ 其中 $f$ 是某個$f \in O$。
:::
Claim $\mathfrak{A}$
$$\forall g\in G, \quad\sum_{f\in Map(X,C)^g}\prod_{x\in X}f(x) = \sum_{\bar{f} \in Map(X/\langle g \rangle,C)}\prod_{O \in X/\langle g\rangle}\bar{f}(O)^{|O|}$$
::: spoiler proof
因為$Map(X,C)^g \cong Map(X/\langle g \rangle,C)$,我們只要證明對於 $\forall f\in Map(X,C)^{g}$ 以及 $\phi(f) := \bar{f} \in Map(X/\langle g \rangle,C)$ 都有
$$\quad \prod_{x\in X}f(x) = \prod_{O\in X/\langle g \rangle}\bar{f}(O)^{|O|}$$
如下:
$$\prod_{x\in X}f(x)
= \prod_{O\in X/\langle g \rangle}\prod_{x\in O}f(x)
= \prod_{O\in X/\langle g \rangle}\prod_{x\in O}\bar{f}(O)
= \prod_{O\in X/\langle g \rangle}\bar{f}(O)^{|O|}
$$
:::
Claim $\aleph$:
$$\forall g\in G, \quad\sum_{\bar{f}\in Map(X/\langle g\rangle,C)}\prod_{O\in X/\langle g\rangle}\bar{f}(O)^{|O|} = \prod_{O\in X/\langle g\rangle}\sum_{c\in C}c^{|O|}$$
::: spoiler proof
Claim $\aleph$ 也許是本定理最難理解的部分。
令 $g$ 為給定。在這邊請容我暫時讓 $|C| := \tilde{c},\,|X/\langle g \rangle| := \tilde{o}$,以及將 $\prod,\,\sum$ 下面的符號化簡
,以避免大家看得頭痛。
化簡後,左邊變成 $\sum_{\bar{f}}\prod_{i=1}^{\tilde{o}}\bar{f}(O_i)^{|O_i|}$,而右邊變成 $\prod_{i=1}^{\tilde{o}}\sum_{j=1}^{\tilde{c}}c_j^{|O_i|}$
首先,對於任何 $\tilde{c}$-tuple $(c_1,\dots,c_\tilde{o})\in C^{|\tilde{o}|}$,都有唯一一個 $\bar{f}$ 使得
$\bar{f}(O_i) = c_i\quad \forall i = 1,\dots,\tilde{o}$
所以等號的左邊可以改寫成
$$
\sum_{\bar{f}}\prod_{i=1}^{\tilde{o}}\bar{f}(O_i)^{|O_i|}
= \sum_{(c_1,\dots,c_\tilde{o})}\sum_{\bar{f}(O_i) = c_i}
\prod_{i=1}^{\tilde{o}}c_i^{|O_i|}
= \sum_{(c_1,\dots,c_\tilde{o})}\prod_{i=1}^{\tilde{o}}c_i^{|O_i|}
$$
再用到下面的 lemma 就結束了。
*Lemma:* 如果 $A,\,B \subset \mathbb R$ 是兩有限集,並且 $|A| = \alpha,\,|B| = \beta$,$A = \{a_1, \dots, a_{\alpha}\},\,B = \{b_1,\dots,b_{\beta}\}$,則有
$$\prod_{i=1}^{\alpha}\sum_{j=1}^{\beta}b_j^{a_i} =
\sum_{({b'}_1,\dots,{b'}_{\alpha})\in B^{\alpha}}\prod_{i=1}^{\alpha}{b'}_i^{a_i}$$
proof sketch. 其實用一些小數字實驗,會發現這是一個挺直覺的 lemma,然證明的方法卻未必好想。
這件事情粗糙的說可以用交換律跟結合律直接解釋,但是我們還是給出一個 induction on $\alpha$ 的證明。
假設命題在更小值成立。
則有
$$\begin{aligned}
\prod_{i=1}^{\alpha}\sum_{j=1}^{\beta}b_j^{a_i}
&= \left(\prod_{i=1}^{\alpha-1}\sum_{j=1}^{\beta}b_j^{a_i} \right)\left(\sum_{j=1}^{\beta}b_j^{a_{\alpha}} \right) \\
&= \left(\sum_{({b'}_1,\dots,{b'}_{\alpha-1})\in B^{\alpha-1}}\prod_{i=1}^{\alpha-1}{b'}_i^{a_i}
\right)\left(\color{red}{\sum_{j=1}^{\beta}b_j^{a_{\alpha}}} \right) \\
&= \sum_{({b'}_1,\dots,{b'}_{\alpha-1})\in B^{\alpha-1}}\left(
\color{red}{\sum_{j=1}^{\beta}}\left(\prod_{i=1}^{\alpha-1}{b'}_i^{a_i}\right)\color{red}{b_j^{a_{\alpha}}} \\
\right) \\
&= \sum_{({b'}_1,\dots,{b'}_{\alpha})\in B^{\alpha}}\prod_{i=1}^{\alpha}{b'}_i^{a_i}
\end{aligned}$$
:::
Claim $\square$:
$$\forall g\in G, \quad\prod_{O\in X/\langle g\rangle}\sum_{c\in C}c^{|O|} = z_{g,x}(\sum_{c\in C}c,\sum_{c\in C}c^2,\dots,\sum_{c\in C}c^n)$$
::: spoiler proof
依 $z_{g,X}$ 的定義計算即可。
注意我們使用的是 $z_{g,X} = \prod_{O\in X/\langle g \rangle}t_{|O|}$ 的定義。用另一種使用 $r_k(g)$ 的定義也不是不行,不過會繞遠路。
:::
---
最後把這些 claims 組裝起來,終於得到
$$\begin{aligned}
p_{G,X}(C)
&= \frac{1}{|G|}\sum_{g\in G}\sum_{f\in Map(X,C)^g}\prod_{x\in X}f(x) & \text{Lemma 1 + claim }\tau\\
&= \frac{1}{|G|}\sum_{g\in G}\sum_{\bar{f} \in Map(X/\langle g \rangle,C)}\prod_{O \in X/\langle g\rangle}\bar{f}(O)^{|O|} & \text{claim }\mathfrak{A}\\
&= \frac{1}{|G|}\sum_{g\in G}\prod_{O\in X/\langle g\rangle}\sum_{c\in C}c^{|O|} & \text{claim }\aleph \\
&= \frac{1}{|G|}\sum_{g\in G}z_{g,X}(\sum_{c\in C}c,\sum_{c\in C}c^2,\dots,\sum_{c\in C}c^n) & \text{claim }\square \\
&= z_{G,X}(\sum_{c\in C}c,\sum_{c\in C}c^2,\dots,\sum_{c\in C}c^n)
\end{aligned}$$
### Remark A
如果有 $|X|=n$ 個格子要填 $|C|=k$ 個顏色,令這些顏色所代表的形式變數為
$c_1, c_2, \cdots, c_k$
則我們按生成函數的想法知道在 $G$ 作用下,使用 $p_1$ 個 $c_1$ 顏色,$p_2$ 個 $c_2$ 顏色, ... $p_r$ 個 $c_r$ 顏色的本質不同的方法數是多項式 $p_{G,X}(C)\in \mathbb Q [C]$ 中$c_1^{p_1}\dots c_k^{p_k}$ 的係數。
因此如果不限制顏色個數的話,他就是全體單項式的係數和,也就是讓所有 $c_i = 1$ 帶入 $p_{G,X}$ 所得。
根據 Pólya enumeration theorem, 也就是 $z_{G,X}(k,k,\dots,k)$,而這跟 Remark $\alpha$ 是吻合的。
## Appendix
下面的 C++ 代碼可以在 $O(n)$ 的時間計算 $\langle g \rangle$-orbit 的數目。
```cpp
#include <bits/stdc++.h>
using namespace std;
// clear an orbit
void clear(vector<int>& sigma,int i) {
while (sigma[i] != -1) {
int inext = sigma[i];
sigma[i] = -1;
i = inext;
}
}
// cycle count
int cycnt(vector<int> sigma) {
int ans = 0;
for (int i=0;i<sigma.size();i++) {
if (sigma[i] == -1) continue;
ans++;
clear(sigma,i);
}
return ans;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout << cycnt({0,1,2,3}) << '\n'; // 4
cout << cycnt({0,2,1,3}) << '\n'; // 3
cout << cycnt({3,2,1,0}) << '\n'; // 2
cout << cycnt({0}) << '\n'; // 1
return 0;
}
```
稍微改寫,我們便能在 $O(n!n)$ 的時間內計算 cyclic index
$$z_{Sym_n}(t_1,\dots,t_n)$$
方法如下。
```cpp=
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
vector<int> sigma;
ostream& operator<<(ostream& l,const vector<int>& r) {
for (int i=0;i<r.size();i++) l << r[i] << " \n"[i==r.size()-1];
return l;
}
// clear an orbit and return length of orbit
int clear(vector<int>& sigma,int i) {
int ans = 0;
while (sigma[i] != -1) {
ans++;
int inext = sigma[i];
sigma[i] = -1;
i = inext;
}
return ans;
}
// cycle count and cycle length count;
// ans[i] = count of length i orbit of sigma
vector<int> cycnt(vector<int> sigma) {
vector<int> ans(sigma.size()+1);
for (int i=0;i<sigma.size();i++) {
if (sigma[i] == -1) continue;
ans[clear(sigma,i)]++;
}
return ans;
}
int main() {
cin.tie(0)->sync_with_stdio(0);
// input n
int n = 6; // Sym_{n}
cin >> n;
sigma.resize(n);
map<vector<int>,int> poly;
iota(sigma.begin(),sigma.begin()+n,0);
do {
vector<int> cyc = cycnt(sigma);
poly[cyc]++;
} while (next_permutation(sigma.begin(),sigma.begin()+n));
// give output
ll fact = 1;
for (int i=2;i<=n;i++) fact *= i;
cout << "\\frac{1}{" << fact << "}\\left(";
bool skipplus = true;
for (auto& [cyc,coef] : poly) {
if (skipplus) skipplus = false;
else cout << " + ";
if (coef != 1) cout << coef;
for (int l=1;l<=n;l++) {
if (cyc[l] == 0) continue;
if (cyc[l] == 1) cout << "t_{" << l << "}";
else cout << "t_{" << l << "}^{" << cyc[l] << "}";
}
}
cout << "\\right)\n";
}
```
比方說,當 $n=3$ 時,我們有
$$
z_3 := z_{Sym_{3}} = \frac{1}{6}(2t_{3} + 3t_{1}t_{2} + t_{1}^{3})
$$
$n=5$
$$
z_5 = \frac{1}{120}(24t_{5} + 20t_{2}t_{3} + 30t_{1}t_{4} + 15t_{1}t_{2}^{2} + 20t_{1}^{2}t_{3} + 10t_{1}^{3}t_{2} + t_{1}^{5})
$$
當 $n=10$ 時,我們有
$$
\begin{aligned}
z_{10} =
\frac{1}{3628800}&(
362880t_{10} + 72576t_{5}^{2} +
151200t_{4}t_{6} + \\
&172800t_{3}t_{7} +
50400t_{3}^{2}t_{4} +
226800t_{2}t_{8} +
56700t_{2}t_{4}^{2} + \\
&120960t_{2}t_{3}t_{5} +
75600t_{2}^{2}t_{6} +
25200t_{2}^{2}t_{3}^{2} +
18900t_{2}^{3}t_{4} + 945t_{2}^{5} + \\
&403200t_{1}t_{9} +
181440t_{1}t_{4}t_{5} +
201600t_{1}t_{3}t_{6} +
22400t_{1}t_{3}^{3} + \\
&259200t_{1}t_{2}t_{7} +
151200t_{1}t_{2}t_{3}t_{4} +
90720t_{1}t_{2}^{2}t_{5} +
25200t_{1}t_{2}^{3}t_{3} + \\
&226800t_{1}^{2}t_{8} +
56700t_{1}^{2}t_{4}^{2} +
120960t_{1}^{2}t_{3}t_{5} +
151200t_{1}^{2}t_{2}t_{6} + \\
&50400t_{1}^{2}t_{2}t_{3}^{2} +
56700t_{1}^{2}t_{2}^{2}t_{4} +
4725t_{1}^{2}t_{2}^{4} +
86400t_{1}^{3}t_{7} + \\
&50400t_{1}^{3}t_{3}t_{4} +
60480t_{1}^{3}t_{2}t_{5} +
25200t_{1}^{3}t_{2}^{2}t_{3} +
25200t_{1}^{4}t_{6} + \\
&8400t_{1}^{4}t_{3}^{2} +
18900t_{1}^{4}t_{2}t_{4} +
3150t_{1}^{4}t_{2}^{3} +
6048t_{1}^{5}t_{5} + \\
&5040t_{1}^{5}t_{2}t_{3} +
1260t_{1}^{6}t_{4} +
630t_{1}^{6}t_{2}^{2} +
240t_{1}^{7}t_{3} + \\
&45t_{1}^{8}t_{2} +
t_{1}^{10})
\end{aligned}
$$
這個需要 $5$ 秒的計算 (measured with running on background with Apple M2)
注意,當 $n=12$ 時,我們有
$$
\begin{aligned}
z_{12} =
\frac{1}{479001600}&(39916800t_{12} +
6652800t_{6}^{2} +
13685760t_{5}t_{7} + \\
&14968800t_{4}t_{8} +
1247400t_{4}^{3} +
17740800t_{3}t_{9} +
7983360t_{3}t_{4}t_{5} + \\
&4435200t_{3}^{2}t_{6} +
246400t_{3}^{4} +
23950080t_{2}t_{10} +
4790016t_{2}t_{5}^{2} + \\
&9979200t_{2}t_{4}t_{6} +
11404800t_{2}t_{3}t_{7} +
3326400t_{2}t_{3}^{2}t_{4} +
7484400t_{2}^{2}t_{8} + \\
&1871100t_{2}^{2}t_{4}^{2} +
3991680t_{2}^{2}t_{3}t_{5} +
1663200t_{2}^{3}t_{6} +
554400t_{2}^{3}t_{3}^{2} + \\
&311850t_{2}^{4}t_{4} +
10395t_{2}^{6} +
43545600t_{1}t_{11} +
15966720t_{1}t_{5}t_{6} + \\
&17107200t_{1}t_{4}t_{7} +
19958400t_{1}t_{3}t_{8} +
4989600t_{1}t_{3}t_{4}^{2} +
5322240t_{1}t_{3}^{2}t_{5} + \\
&26611200t_{1}t_{2}t_{9} +
11975040t_{1}t_{2}t_{4}t_{5} +
13305600t_{1}t_{2}t_{3}t_{6} +
1478400t_{1}t_{2}t_{3}^{3} + \\
&8553600t_{1}t_{2}^{2}t_{7} +
4989600t_{1}t_{2}^{2}t_{3}t_{4} +
1995840t_{1}t_{2}^{3}t_{5} +
415800t_{1}t_{2}^{4}t_{3} + \\
&23950080t_{1}^{2}t_{10} +
4790016t_{1}^{2}t_{5}^{2} +
9979200t_{1}^{2}t_{4}t_{6} +
11404800t_{1}^{2}t_{3}t_{7} + \\
&3326400t_{1}^{2}t_{3}^{2}t_{4} +
14968800t_{1}^{2}t_{2}t_{8} +
3742200t_{1}^{2}t_{2}t_{4}^{2} +
7983360t_{1}^{2}t_{2}t_{3}t_{5} + \\
&4989600t_{1}^{2}t_{2}^{2}t_{6} +
1663200t_{1}^{2}t_{2}^{2}t_{3}^{2} +
1247400t_{1}^{2}t_{2}^{3}t_{4} +
62370t_{1}^{2}t_{2}^{5} + \\
&8870400t_{1}^{3}t_{9} +
3991680t_{1}^{3}t_{4}t_{5} +
4435200t_{1}^{3}t_{3}t_{6} +
492800t_{1}^{3}t_{3}^{3} + \\
&5702400t_{1}^{3}t_{2}t_{7} +
3326400t_{1}^{3}t_{2}t_{3}t_{4} +
1995840t_{1}^{3}t_{2}^{2}t_{5} +
554400t_{1}^{3}t_{2}^{3}t_{3} + \\
&2494800t_{1}^{4}t_{8} +
623700t_{1}^{4}t_{4}^{2} +
1330560t_{1}^{4}t_{3}t_{5} +
1663200t_{1}^{4}t_{2}t_{6} + \\
&554400t_{1}^{4}t_{2}t_{3}^{2} +
623700t_{1}^{4}t_{2}^{2}t_{4} +
51975t_{1}^{4}t_{2}^{4} +
570240t_{1}^{5}t_{7} + \\
&332640t_{1}^{5}t_{3}t_{4} +
399168t_{1}^{5}t_{2}t_{5} +
166320t_{1}^{5}t_{2}^{2}t_{3} +
110880t_{1}^{6}t_{6} + \\
&36960t_{1}^{6}t_{3}^{2} +
83160t_{1}^{6}t_{2}t_{4} +
13860t_{1}^{6}t_{2}^{3} +
19008t_{1}^{7}t_{5} + \\
&15840t_{1}^{7}t_{2}t_{3} +
2970t_{1}^{8}t_{4} +
1485t_{1}^{8}t_{2}^{2} +
440t_{1}^{9}t_{3} + \\
&66t_{1}^{10}t_{2} +
t_{1}^{12})
\end{aligned}
$$
計算需要 $877$ 秒 (14分鐘多)