(搁置, 填坑看心情.)
所谓 \(q-\text{analog}\), 即对一个对象 \(u\), 构造关于 \(q\) 的表达式 \(f(q)\), 使得
就组合数学来说, 也许可以理解为: \(u\) 是某类对象的 "总数", 而 \(f(q)\) 则以 \(q\) 的指标为这类对象赋予不同的组合意义, 得到一个 GF. 当然, 带入 \(q\rightarrow 1\) 的时候, GF 的值也就是总数了.
先来看一些定义.
\(\textbf{Definition 1.}\) \((q-\text{integer})\) \(\displaystyle \qnum n:=\sum_{i=0}^{n-1}q^i\).
\(\textbf{Definition 2.}\) \((q-\text{factorial})\) \(\displaystyle \qnum n!:=\prod_{i=1}^n[i]_q=\frac{\prod_{i=1}^n(1-q^i)}{(1-q)^n}\).
\(\textbf{Definition 3.}\) \((q-\text{binomial coefficient})\) \(\displaystyle \qbino{n}{m}:=\frac{[n]_q!}{[m]_q![n-m]_q!}~(n\ge m\ge 0)\).
\(\textbf{Definition 4.}\) \((q-\text{polynomial coefficient})\) \(\displaystyle \qbino{\sum a}{\{a\}}:=\frac{[\sum a]_q!}{\prod_i[a_i]_q!}\).
需要关注的是这些 \(q-\text{analog}\) 所引出的 \(f(q)\) 的组合意义. 我们用 \(\qnum n!\) 来举例:
\(\textbf{Theorem 1.}\) 令 \(S_n\) 为 \(n\) 阶排列集合, \(\pi(\sigma)\) 表示排列 \(\sigma\) 的逆序对数, 则
组合意义上, 这表明 \([n]_q!\) 是 \(n\) 阶排列数量关于逆序对数的 GF.
\(\textbf{Proof.}\) 枚举 \(\sigma\) 的反序表 (每个位置对逆序对的贡献), 则
尝试把传统的结论搬到 \(q-\text{analog}\) 上. 比如对于组合数的递推 \(\binom{n}{m}=\binom{n-1}{m-1}+\binom{n-1}{m}\), 可以推导其类似的 \(q-\text{analog}\) 形式:
\(\textbf{Theorem 2.}\) 对于 \(q-\text{binomial}\), \(n\ge1\) 时存在递推
\(\textbf{Proof.}\) 循规蹈矩展开即证.
所以 ... 组合意义到底是什么呢? 考虑 "在网格图上行走" 这一经典情景, 由于
所以 \([q^k]\qbino{n+m}{n}\) 就表示从 \((0,0)\) 走折线到 \((n,m)\), 折线与 \(x\) 轴间的网格数量为 \(k\) 的方案数. 明显 "与 \(x\) 轴" 和 "与 \(y\) 轴" 没有区别, 从这个角度我们也能说明
有二项式系数自然有二项式定理啦!
\(\textbf{Theorem 3.}\) \((q-\text{binomial theorem})\)
\(\textbf{Proof.}\) 和二项式定理一样, 尝试归纳证明. 对于 \(n=1\) 是显然的. 对于 \(n>1\):
反过来, \(\qbino{n}{m}\) 的组合意义仍然是我们所关心的. 从二项式定理反向构造, 我们可以得到一个重要的结论:
\(\textbf{Theorem 4.}\)
即, 在 \(\binom{n}{m}\) 所描述的 \(n\) 个盒子放 \(m\) 个球的基础上, 方案数关于 "是否有球" 这一 \(01\) 序列逆序对的 GF.
\(\textbf{Proof.}\) 在 \(\text{Theorem 3.}\) 中左右提取 \([z^m]\), 那么
利用这个难以描述的结论可以推出很多东西, 比如范德蒙德卷积:
\(\textbf{Theorem 5.}\)
嗯, 再找点组合数的出现情景 ... 欸? 我们在研究 GF, 那就不得不提到
那有没有一种可能 ...
\(\textbf{Theorem 6.}\)
\(\textbf{Proof.}\) 不喜欢归纳? 组合意义! 展开左式的级数, 依次选择 \(q^{ij}z^j\) 的过程中, 将 \(z\) 的指标视为 \(x\) 方向的移动, \(q\) 的指标视为 \(y\) 方向的移动, 最终走到 \(z^m\) 时, \(q\) 的指标正好对应走出的折线与 \(y\) 轴间的网格数量. 套用 \(\text{Theorem 2.}\) 的推论即证.
又解决一个, 接下来看看 Lucas 定理
现在, 我们来研究 \(\qbino{n}{m}\bmod p\) 的结果. 有结论:
\(\textbf{Theorem 7.1.}\) \((q-\text{Lucas's theorem})\)
其中 \(\Phi_p(q)\) 表示关于 \(q\) 的 \(p\) 阶分圆多项式. 当然, 在 \(\mathbb R[q]\) 上利用 CRT, 也能得到:
\(\textbf{Theorem 7.2.}\)
\(\textbf{Proof.}\) 令 \(d=\operatorname{ord}_p(q)\), 有引理:
\(\textbf{Lemma.}\)
\[\qbino{d}{m}\equiv0\pmod p\quad(m\in(0,d)). \]\(\textbf{Proof.}\) 展开左式多项式, 分母非 \(0\), 分子为 \(0\).
$\square$
因此再由 \(\text{Theorem 3.}\) 可知
继续在二项式形式上研究, 发现
\(\textbf{Example 1.}\) 求 \(\qnum n!\bmod q^m\).
\(\textbf{Solution.}\) 存在许多没用 \(q-\text{analog}\) 的做法, 这里不提.
欲求
用 \(\text{Theorem 3.}\) 变形分子:
显然只有前 \(\sqrt m\) 项有用. 此外, 注意组合数本身的递推是容易的. 例如
其中 \(\frac{1-q^{n-i+1}}{1-q^i}\) 对系数的变化非常规整, 可以线性地求出来. 因此, 维护 \(\qbino{n}{i}/(1-q)^n\), 可以做到 \(\mathcal O(m\sqrt m)\). 值得注意的是, 分母 \((1-q)^n\) 可以换成任意多项式.
有趣的是, \(\qnum n!\) 的分子之倒数形似拆分数的 GF. 进一步, 可以指出:
即, 左式是拆分项数不超过 \(n\), 每项都不超过 \(m\) 时, 划分方案关于被划分数的 GF.
怎么这不标个 \(\text{Theorem}\) 也不给证明? 你看这玩意儿和 \(\text{Theorem 2.}\) 的推论分明一个意思嘛!
\(\textbf{Example 2.}\) 有限域上的计数问题.
\(\textbf{Example 2.1.}\) 求 \(\mathbb F_q^n\) 中大小为 \(k\) 的线性无关有序向量组个数.
\(\textbf{Solution.}\) 答案显然是
当然, 这个例子是为了引出一个定义来描述这个比较基本的式子:
\(\textbf{Definition 5.}\) \(((n)_k)_q:=\prod_{i=0}^{k-1}(q^n-q^i)=\frac{(q-1)^kq^{\binom{k}{2}}\qnum n!}{\qnum{n-k}!}\).
\(\textbf{Example 2.2.}\) 求 \(\mathbb F_q^n\) 中 \(k\) 维子空间的个数.
\(\textbf{Solution.}\) 先找钦定空间的一个基. 其方案数为 \(((n)_k)_q\). 此时每个 \(k\) 维空间会被计数 \(((k)_k)_q\) 次. 所以答案为 \(\frac{((n)_k)_q}{((k)_k)_q}\). 正巧:
计算意义上不难验证. 怎么编个组合意义?
在 \(\binom{n}{m}\) 所描述的 \(n\) 个盒子放 \(m\) 个球的基础上, 方案数关于 "是否有球" 这一 \(01\) 序列逆序对的 GF.
考虑 \(k\) 个基行向量消元后得到的 \(k\times n\) 的上三角矩阵, 我们按列计数. 每选一列, 如果这一列上出现了一个新的向量, 那么方案数为 \(1\) (消元过程已确定), 否则方案数为已有向量的张成空间里任选一个的方案数, 即前面有的 \(1\) 的个数.
\(\textbf{Example 2.3.}\) 求 \(\mathbb F_q\) 上秩为 \(k\) 的 \(n\times m\) 的矩阵个数.
\(\textbf{Solution.}\) 不妨考虑行秩. 先在 \(\mathbb F_q^m\) 上取一个大小为 \(k\) 的线性无关向量组, 钦定其为矩阵的一个极大线性无关向量组. 顺便需要钦定这个向量组是满足条件的向量组中行编号字典序最小的. 此时的方案数为 \(((m)_k)_q\).
对于剩下的 \(n-k\) 个向量, 第 \(r\) 行的向量必须落在前 \(r-1\) 行张成的空间内. 熟悉组合意义的你可以直呼方案数为 \(\qbino{n}{k}\). 因此总方案为 \(((m)_k)_q\qbino{n}{k}\).
当然, \(((m)_k)_q\qbino{n}{k}=\frac{((m)_k)_q((n)_k)_q}{((k)_k)_q}=((n)_k)_q\qbino{m}{k}\), 可以验证考虑列秩将得到一样的结果.
\(\textbf{Example 2.4.}\) \(U,V\) 是 \(\mathbb F_q\) 上的线性空间, \(\dim U=n,\dim V=m\). 求 \(V^U\) 中的单射数量.
\(\textbf{Solution.}\) 对于线性变换 \(\mathcal A: U\rightarrow V\), 取 \(U\) 的一组基 \(\{\vct u_{1..n}\}\), 则 \(\mathcal A\) 满秩当且仅当 \(V\) 上的向量组 \(\{\mathcal A\vct u_{1..n}\}\) 线性无关. 另一方面, \(\mathcal A\) 亦被 \(\{\mathcal A\vct u_{1..n}\}\) 唯一确定. 因此答案就是 \(((m)_n)_q\).
\(\textbf{Example 2.5.}\) \(U,V\) 是 \(\mathbb F_q\) 上的线性空间, \(\dim U=n,\dim V=m\). 求 \(V^U\) 中的满射数量.
\(\textbf{Solution.}\) 即 \(\mathbb F_q\) 上秩为 \(m\) 的 \(m\times n\) 的矩阵数量. \(((n)_m)_q\).
\(\textbf{Example 2.6.}\) \(U,V\) 是 \(\mathbb F_q\) 上的线性空间, \(\dim U=n,\dim V=m\). 求 \(V^U\) 中的双射数量.
\(\textbf{Solution.}\) 要求 \(n=m\). 此时答案为 \(((n)_n)_q\).