(搁置, 填坑看心情.)

\[\mathfrak{Defining~\LaTeX~macros\cdots}
\newcommand{\qnum}[1]{\lbrack{#1}\rbrack_q}
\newcommand{\qbino}[2]{{{#1}\brack{#2}}_q}
\newcommand{\vct}[1]{\boldsymbol{#1}}
\]

  所谓 \(q-\text{analog}\), 即对一个对象 \(u\), 构造关于 \(q\) 的表达式 \(f(q)\), 使得

\[u=\lim_{q\rightarrow1}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\) 的逆序对数, 则

\[\qnum n!=\sum_{\sigma\in S_n}q^{\pi(\sigma)}.
\]

组合意义上, 这表明 \([n]_q!\) 是 \(n\) 阶排列数量关于逆序对数的 GF.

  \(\textbf{Proof.}\) 枚举 \(\sigma\) 的反序表 (每个位置对逆序对的贡献), 则

\[\begin{aligned}
\sum_{\sigma\in S_n}q^{\pi(\sigma)}
&= \sum_{r_1=0}^{n-1}\sum_{r_2=0}^{n-2}\cdots\sum_{r_n=0}^0q^{r_1+r_2+\cdots+r_n}\\
&= \sum_{r_1=0}^{n-1}q^{r_1}\sum_{r_2=0}^{n-2}q^{r_2}\cdots\sum_{r_n=0}^nq^{r_n}\\
&= \prod_{i=1}^{n}[i]_q\\
&= \qnum n!.
\end{aligned}
\]
$\square$

  尝试把传统的结论搬到 \(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\) 时存在递推

\[\qbino{n}{m}=\qbino{n-1}{m-1}+q^m\qbino{n-1}{m}.
\]

  \(\textbf{Proof.}\) 循规蹈矩展开即证.

\[\begin{aligned}
\qbino{n-1}{m-1}+q^m\qbino{n-1}{m}
&= \frac{[n-1]_q!}{[m-1]_q![n-m]_q!}+q^m\frac{[n-1]_q!}{[m]_q![n-m-1]_q!}\\
&= \frac{\prod_{i=n-m+1}^{n-1}(1-q^i)}{\prod_{i=1}^{m-1}(1-q^i)}+\frac{q^m\prod_{i=n-m}^{n-1}(1-q^i)}{\prod_{i=1}^m(1-q^i)}\\
&= \frac{\prod_{i=n-m+1}^n(1-q^i)}{\prod_{i=1}^{m}(1-q^i)}\\
&= \qbino{n}{m}.
\end{aligned}
\]
$\square$

  所以 ... 组合意义到底是什么呢? 考虑 "在网格图上行走" 这一经典情景, 由于

\[\qbino{n+m}{m}=\qbino{n+m-1}{m-1}+q^m\qbino{n+m-1}{m}.
\]

所以 \([q^k]\qbino{n+m}{n}\) 就表示从 \((0,0)\) 走折线到 \((n,m)\), 折线与 \(x\) 轴间的网格数量为 \(k\) 的方案数. 明显 "与 \(x\) 轴" 和 "与 \(y\) 轴" 没有区别, 从这个角度我们也能说明

\[\qbino{n}{m}=\qbino{n}{n-m}.
\]

  有二项式系数自然有二项式定理啦!

  \(\textbf{Theorem 3.}\) \((q-\text{binomial theorem})\)

\[\prod_{i=0}^{n-1}(1+q^iz)=\sum_{i=0}^nq^{\binom{i}{2}}\qbino{n}{i}z^i.
\]

  \(\textbf{Proof.}\) 和二项式定理一样, 尝试归纳证明. 对于 \(n=1\) 是显然的. 对于 \(n>1\):

\[\begin{aligned}
\prod_{i=0}^{n-1}(1+q^iz)
&= (1+q^{n-1}z)\prod_{i=0}^{n-2}(1+q^iz)\\
&= (1+q^{n-1}z)\sum_{i=0}^{n-1}q^{\binom{i}{2}}\qbino{n-1}{i}z^i.\\
&= \sum_{i=0}^nz^i\left(q^{\binom{i}{2}}\qbino{n-1}{i}+q^{n-1}q^{\binom{i-1}{2}}\qbino{n-1}{i-1}\right)\\
&= \sum_{i=0}^nz^iq^{\binom{i}{2}}\left(\qbino{n-1}{n-i-1}+q^{n-i}\qbino{n-1}{n-i}\right)\\
&= \sum_{i=0}^nq^{\binom{i}{2}}\qbino{n}{i}z^i.
\end{aligned}
\]
$\square$

  反过来, \(\qbino{n}{m}\) 的组合意义仍然是我们所关心的. 从二项式定理反向构造, 我们可以得到一个重要的结论:

  \(\textbf{Theorem 4.}\)

\[\qbino{n}{m}=\sum_{S\in\{1..n\},|S|=m}q^{\sum_{x<y}[x\notin S][y\in S]}.
\]

即, 在 \(\binom{n}{m}\) 所描述的 \(n\) 个盒子放 \(m\) 个球的基础上, 方案数关于 "是否有球" 这一 \(01\) 序列逆序对的 GF.

  \(\textbf{Proof.}\) 在 \(\text{Theorem 3.}\) 中左右提取 \([z^m]\), 那么

\[\begin{aligned}[]
[z^m]\prod_{i=0}^{n-1}(1+q^iz)
&= \sum_{S\in\{0..n-1\},|S|=m}q^{\sum_{x\in S}x}\\
&= \sum_{S\in\{1..n\},|S|=m}q^{\sum_{x\in S}\sum_{y=0}^{x-1}1}\\
&= \sum_{S\in\{1..n\},|S|=m}q^{\sum_{x\in S}\left(\sum_{y\in S}[y<x]+\sum_{y\notin S}[y<x]\right)}\\
&= q^{\binom{i}{2}}\sum_{S\in\{1..n\},|S|=m}q^{\sum_{x\in S}\sum_{y\notin S}[y<x]}.
\end{aligned}
\]
$\square$

  利用这个难以描述的结论可以推出很多东西, 比如范德蒙德卷积:

  \(\textbf{Theorem 5.}\)

\[\qbino{n+m}{k}=\sum_{i=0}^kq^{(n-i)(k-i)}\qbino{n}{i}\qbino{m}{k-i}.
\]

  嗯, 再找点组合数的出现情景 ... 欸? 我们在研究 GF, 那就不得不提到

\[[z^m]\frac{1}{(1-z)^n}=\binom{n+m-1}{m},
\]

那有没有一种可能 ...

  \(\textbf{Theorem 6.}\)

\[\prod_{i=0}^{n}\frac{1}{1-q^iz}=\sum_{i\ge0}\qbino{n+i}{i}z^i.
\]

  \(\textbf{Proof.}\) 不喜欢归纳? 组合意义! 展开左式的级数, 依次选择 \(q^{ij}z^j\) 的过程中, 将 \(z\) 的指标视为 \(x\) 方向的移动, \(q\) 的指标视为 \(y\) 方向的移动, 最终走到 \(z^m\) 时, \(q\) 的指标正好对应走出的折线与 \(y\) 轴间的网格数量. 套用 \(\text{Theorem 2.}\) 的推论即证.

$\square$

  又解决一个, 接下来看看 Lucas 定理

\[\binom{n}{m}\equiv\binom{n/p}{m/p}\binom{n\bmod p}{m\bmod p}\pmod p\quad(p\in\mathbb P).
\]

现在, 我们来研究 \(\qbino{n}{m}\bmod p\) 的结果. 有结论:

  \(\textbf{Theorem 7.1.}\) \((q-\text{Lucas's theorem})\)

\[\qbino{n}{m}=\binom{n/p}{m/p}\qbino{n\bmod p}{m\bmod p}\pmod{\Phi_p(q)}.
\]

其中 \(\Phi_p(q)\) 表示关于 \(q\) 的 \(p\) 阶分圆多项式. 当然, 在 \(\mathbb R[q]\) 上利用 CRT, 也能得到:

  \(\textbf{Theorem 7.2.}\)

\[\qbino{n}{m}=\binom{n/p}{m/p}\qbino{n\bmod p}{m\bmod p}\quad(q\rightarrow e^{\frac{2\pi i}{p}k},~k\perp p).
\]

  \(\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.}\) 可知

\[\prod_{i=0}^{d-1}(1+q^iz)\equiv 1+z^d\pmod p.
\]

  继续在二项式形式上研究, 发现

\[\begin{aligned}[]
[z^m]\prod_{i=0}^{n-1}(1+q^iz)
&= [z^m]\left(\prod_{i=0}^{d-1}(1+q^iz)\right)^{n/d}\left(\prod_{i=0}^{(n\bmod d)-1}(1+q^iz)\right)\\
&\equiv \left([z^{m/d}](1+z)^{n/d}\right)\left([z^{m\bmod d}]\prod_{i=0}^{(n\bmod d)-1}(1+q^iz)\right)\\
&= \binom{n/d}{m/d}\qbino{n\bmod d}{m\bmod d}\pmod{p}.
\end{aligned}
\]
$\square$

  \(\textbf{Example 1.}\) 求 \(\qnum n!\bmod q^m\).

  \(\textbf{Solution.}\) 存在许多没用 \(q-\text{analog}\) 的做法, 这里不提.

  欲求

\[\frac{\prod_{i=1}^n(1-q^i)}{(1-q)^n}\bmod q^m.
\]

用 \(\text{Theorem 3.}\) 变形分子:

\[\begin{aligned}[]
\prod_{i=1}^n(1-q^i)
&= \prod_{i=0}^{n-1}(1-q\cdot q^i)\\
&= \sum_{i=0}^n(-1)^iq^{\binom{i+1}{2}}\qbino{n}{i}.
\end{aligned}
\]

显然只有前 \(\sqrt m\) 项有用. 此外, 注意组合数本身的递推是容易的. 例如

\[\qbino{n}{i}=\frac{1-q^{n-i+1}}{1-q^i}\qbino{n}{i-1},
\]

其中 \(\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. 进一步, 可以指出:

\[\qbino{n}{m}=[z^n]\frac{1}{1-z}\prod_{i=1}^m\frac{1}{1-q^iz}.
\]

即, 左式是拆分项数不超过 \(n\), 每项都不超过 \(m\) 时, 划分方案关于被划分数的 GF.

  怎么这不标个 \(\text{Theorem}\) 也不给证明? 你看这玩意儿和 \(\text{Theorem 2.}\) 的推论分明一个意思嘛!

  \(\textbf{Example 2.}\) 有限域上的计数问题.

  \(\textbf{Example 2.1.}\) 求 \(\mathbb F_q^n\) 中大小为 \(k\) 的线性无关有序向量组个数.

  \(\textbf{Solution.}\) 答案显然是

\[\prod_{i=0}^{k-1}(q^n-q^i).
\]

当然, 这个例子是为了引出一个定义来描述这个比较基本的式子:

  \(\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}\). 正巧:

\[\qbino{n}{k}=\frac{((n)_k)_q}{((k)_k)_q}.
\]

计算意义上不难验证. 怎么编个组合意义?

  在 \(\binom{n}{m}\) 所描述的 \(n\) 个盒子放 \(m\) 个球的基础上, 方案数关于 "是否有球" 这一 \(01\) 序列逆序对的 GF.

  考虑 \(k\) 个基行向量消元后得到的 \(k\times n\) 的上三角矩阵, 我们按列计数. 每选一列, 如果这一列上出现了一个新的向量, 那么方案数为 \(1\) (消元过程已确定), 否则方案数为已有向量的张成空间里任选一个的方案数, 即前面有的 \(1\) 的个数.

$\square$

  \(\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\).

Note -「q-analog」组合意义灭天地的更多相关文章

  1. Note -「动态 DP」学习笔记

    目录 「CF 750E」New Year and Old Subsequence 「洛谷 P4719」「模板」"动态 DP" & 动态树分治 「洛谷 P6021」洪水 「S ...

  2. Note -「Lagrange 插值」学习笔记

    目录 问题引入 思考 Lagrange 插值法 插值过程 代码实现 实际应用 「洛谷 P4781」「模板」拉格朗日插值 「洛谷 P4463」calc 题意简述 数据规模 Solution Step 1 ...

  3. Note -「单位根反演」学习笔记

    \(\mathcal{Preface}\)   单位根反演,顾名思义就是用单位根变换一类式子的形式.有关单位根的基本概念可见我的这篇博客. \(\mathcal{Formula}\)   单位根反演的 ...

  4. Note -「Mobius 反演」光速入门

    目录 Preface 数论函数 积性函数 Dirichlet 卷积 Dirichlet 卷积中的特殊函数 Mobius 函数 & Mobius 反演 Mobius 函数 Mobius 反演 基 ...

  5. 「CTSC 2013」组合子逻辑

    Tag 堆,贪心 Description 给出一个数列 \(n\) 个数,一开始有一个括号包含 \([1,n]\),你需要加一些括号,使得每个括号(包括一开始的)所包含的元素个数 \(\leq\) 这 ...

  6. Note -「Min_25 筛」“你就说这素因子你要不要吧?你要不要?”

      赛上想写,Track Lost 了属于是. \(\mathscr{Intro}\)   Min_25 筛是用于求积性函数前缀和,同时顺带求出一些"有意思"的信息的筛法.   一 ...

  7. Linux 小知识翻译 - 「Linux」和「发行版」之间的关系

    「Linux」本来指的仅仅是内核.5年之前大多都是这么认为的,但是最近不这么说了. 最近一般都说「Linux」是个 OS,这里的OS,不仅仅是内核,而是指电脑的整体环境(除了内核,还包括一些外围的软件 ...

  8. LOJ 3399 -「2020-2021 集训队作业」Communication Network(推式子+组合意义+树形 DP)

    题面传送门 一道推式子题. 首先列出柿子,\(ans=\sum\limits_{T_2}|T_1\cap T_2|·2^{T_1\cap T_2}\) 这个东西没法直接处理,不过注意到有一个柿子 \( ...

  9. Note -「多项式」基础模板(FFT/NTT/多模 NTT)光速入门

      进阶篇戳这里. 目录 何为「多项式」 基本概念 系数表示法 & 点值表示法 傅里叶(Fourier)变换 概述 前置知识 - 复数 单位根 快速傅里叶正变换(FFT) 快速傅里叶逆变换(I ...

  10. Note -「圆方树」学习笔记

    目录 圆方树的定义 圆方树的构造 实现 细节 圆方树的运用 「BZOJ 3331」压力 「洛谷 P4320」道路相遇 「APIO 2018」「洛谷 P4630」铁人两项 「CF 487E」Touris ...

随机推荐

  1. 谈一谈 Netty 的内存管理 —— 且看 Netty 如何实现 Java 版的 Jemalloc

    本文基于 Netty 4.1.112.Final 版本进行讨论 在之前的Netty 系列中,笔者是以 4.1.56.Final 版本为基础和大家讨论的,那么从本文开始,笔者将用最新版本 4.1.112 ...

  2. 《使用Gin框架构建分布式应用》阅读笔记:p251-p271

    <用Gin框架构建分布式应用>学习第14天,p251-p271总结,总21页. 一.技术总结 1.Docker & Docker Compose version: "3. ...

  3. 第八届御网杯线下赛Pwn方向题解

    由于最近比赛有点多,而且赶上招新,导致原本应该及时总结的比赛搁置了,总结来说还是得多练,因为时间很短像这种线下赛,一般只有几个小时,所以思路一定要清晰,我还是经验太少了,导致比赛力不从心,先鸽了~ S ...

  4. 4-11.3 C++中的显式类转换

    目录 static_cast 1.用来改变基本类型:一般是高精度转低精度 2.恢复void* 指针类型 const_cast 用来去除底层const(low-level const) reinterp ...

  5. 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现二

    一.前言介绍: 1.1 项目摘要 随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势.古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力.然而,在现代社会中 ...

  6. mysql8可以创建虚拟列作为公式映射字段

    普通的表 加个字段 此时再查 想改这个虚拟字段? 没门,他不能被修改.只能改那个被映射的原字段 我们看看表结构定义 好了,明白了,你就是个影分身!

  7. 在 ASP.NET Core 中创建 gRPC 客户端和服务器

    前言 gRPC 是一种高性能.开源的远程过程调用(RPC)框架,它基于 Protocol Buffers(protobuf)定义服务,并使用 HTTP/2 协议进行通信. 新建项目 新建解决方案Grp ...

  8. Pyecharts——Python高级可视化

    Pyecharts是百度开源的移植到Python上的可视化工具,里面方法调用起来像是标记性语言,因此代码的可读性很强,一目了然.下面是一个绘制散点图的例子: #%% import pyecharts. ...

  9. Auto-Encoding Variational Bayes (VAE原文)、变分推理

    变分自动编码器的大致概念已经理解了快一年多了,但是其中的数学原理还是没有搞懂,在看到相关的变体时,总会被数学公式卡住.下决心搞懂后,在此记录下我的理解. 公式推导--变分下界 这篇文章提出一种拟合数据 ...

  10. Checking Table 设计模式 - 从概念、建模、设计到实现——兼谈基于业务需求驱动的设计模式创新

    郑 先全, 架构师, NEC Asia Pacific Pte Ltd 简介: 如何基于业务需求驱动理念来开展我们的模式创新,成为了当今架构师.设计师的重要职责之一.本文通过具体的 Checking ...