初探 q-模拟
q-模拟的定义
一个定理、等式或者表达式的 q-模拟是指在引入一个新的参数 \(q\) 后当 \(q→1\) 时原定理、等式或表达式的极限。
很神奇,为什么要引入这样一个 \(q\) 的变元呢?而且事实上下面的 \(q\) 更多地作为一个形式元或者可变参数之类的东西存在。与其说是考察 \(q\rightarrow 1\) 的极限,不如说是从“\(q\rightarrow 1\) 的极限和原结果相同”这个条件出发,引入了 \(q\) 的参数并延展出了这样一些东西。
至于为什么变元叫做 \(q\)?
这个倒是容易一点。\(q\) 也算一个较常用的字母,但是地位明显低于 \(a,b,c,x,y,z,u,v,w\) 等。用来作为一个参量的名字,既不会喧宾夺主,也不会太过生僻,完美!
在下面,我们会从一种特殊的 q-analog 出发:引入参数 \(q\) 去模拟“数”。
对于一个数 \(c\) 的 q-analog,是指关于 \(q\) 的一个函数 \(f(q)\),使得 \(\lim_{q\rightarrow 1}f(q)=c\)。
经典 q-模拟的部分内容
基础的定义
考虑一般的情况:用 q-analog 去模拟整数。这里我们令 \(f(q)\) 为一个幂级数,则有:
Definition.
给定 \(n\in \mathbb N_+\),我们定义 q-整数 \([n]_q\) 为:
\[[n]_q=\sum_{k=0}^{n-1}q^k=\frac{1-q^n}{1-q} \]很显然,\([n]_q\) 对应了一般的正整数 \(n\)。
有了整数,我们可以进一步地定义和整数相关的东西:
Definition.
给定 \(n\in \mathbb N\),我们定义 q-阶乘 \([n]_q!\) 为:
\[[n]_q!= \begin{cases} \prod_{k=1}^n[k]_q=(1-q)^{-n}\prod_{k=1}^n(1-q^k)&n>0\\ 1&n=0 \end{cases} \]\([n]_q!\) 对应了一般的阶乘 \(n!\)。当然也可以定义类似于下降幂的东西。
给定 \(n,m\in \mathbb N\),我们定义 q-组合数 \(\newcommand{\qbinom}[2]{\begin{bmatrix}#1\\#2\end{bmatrix}_q}\qbinom{n}{m}\) 为:
\[\qbinom{n}{m}= \begin{cases} \frac{[n]_q!}{[m]_q![n-m]_q!}&n\ge m\\ 0&n<m \end{cases} \]\(\qbinom{n}{m}\) 对应了一般的 \(\dbinom{n}{m}\),并且它们的性质非常相似。先在这里总结一下:
- 对称性:\(\qbinom{n}{m}=\qbinom{n}{n-m},n\ge m\);
- 特殊值:
- \(\qbinom{n}{n}=\qbinom{n}{0}=1\);
- \(\qbinom{n}{1}=\qbinom{n}{n-1}=[n]_q=\frac{1-q^n}{1-q}\);
- 超级多的组合含义。
给定 \(n\in \mathbb N\) 和数列 \(a_1,a_2,\dots,a_k\),其中 \(a\) 的元素均是非负整数,且 \(\sum_ja_j=n\)。
我们定义 q-多项式系数 \(\qbinom{n}{a_1,\dots,a_k}\) 为:
\[\qbinom{n}{a_1,\dots,a_k}=\frac{[n]_q!}{\prod_{j=1}^k[a_j]_q!} \]\(\qbinom{n}{a_1,\dots,a_k}\) 对应了一般的多项式系数 \(\dbinom{n}{a_1,\dots,a_k}\)。
这里实际上也简单地探讨了各个数的性质。之后还有更多的定义再说吧。
部分 q-模拟的内容
在这里,我们进一步考察一下一些 q-模拟的内涵。
可能会引入一些新的定义,之后再说。
q-阶乘
想必各位对于逆序对数很熟悉吧!(笑)
都知道 \(n\) 阶排列关于逆序对数的生成函数怎么算吧?
不知道?!
好吧,众所周知,我们可以从小到大插入排列中的元素从而生成一个排列。在这个过程中我们可以统计每次加入一个元素后新增的逆序对数。假如排列中元素的编号为 \(1,2,\dots,n\),则插入 \(k\) 的时候,逆序对增量可以是 \(0\) 到 \(k-1\) 中的任意一个整数,因此可以得到生成函数:
和 q-阶乘的关系已经很明显了,我们令 \(x=q\) 即可立即得到 \([n]_q!\) 的组合意义。设 \(\sigma(p)\) 为排列 \(p\) 中的逆序对数,则有:
Theorem.
\[[n]_q!=\sum_{p\in S_n}q^{\sigma(p)} \]
一个显然的事实是,\(q=1\) 的时候有:
\[n!=\sum_{p\in S_n}1=|S_n| \]我猜这就是 \(q\)-模拟作用在定理上的情况。准确来说我们应该考察 \(q\rightarrow 1\) 时左右的极限,不过在这里右侧可以直接算出来,就不管了。
q-组合数和 q-多项式系数
q-组合数的组合含义就要丰富得多了。
逆序数和降位和
我们直接给出:
Theorem.
给定非负整数数列 \(a_1,a_2,\dots,a_k\),令 \(S\) 为可重集,使得 \(\forall 1\le j\le k\),\(S\) 中恰好包含了 \(a_j\) 个 \(j\)。
令 \(P\) 为 \(S\) 中元素的排列构成的集合,令 \(n=\sum_ja_j\),则有:
\[\qbinom{n}{a_1,\dots,a_k}=\sum_{p\in P}q^{\sigma(p)} \]证明不太直接,之后会给出 q-组合数的证明,q-多项式系数看心情。
此外,在没有特殊限制的情况下,下面这个“降位和”和“逆序数”在整体的结构上表现出了一定的相关性。
Definition.
对于一个 \(n\) 阶排列 \(p\)(可以是可重集排列),我们将它的元素从 \(0\) 开始标号。则它的降位和为:
\[\varsigma(p)=\sum_{x=0}^{n-2}[p_x>p_{x+1}]x \]
这个 \(\varsigma\) 的符号是我自己乱选的,不知道有没有专门的记号。
Theorem.
给定非负整数数列 \(a_1,a_2,\dots,a_k\),令 \(S\) 为可重集,使得 \(\forall 1\le j\le k\),\(S\) 中恰好包含了 \(a_j\) 个 \(j\)。
令 \(P\) 为 \(S\) 中元素的排列构成的集合,令 \(n=\sum_ja_j\),则有:
\[\qbinom{n}{a_1,\dots,a_k}=\sum_{p\in P}q^{\varsigma(p)} \]注意这里 \(q\) 的幂次由 \(\varsigma(p)\) 决定,不是逆序数。
当然,由于我懒了,所以之后多半会只给出一个 q-组合数的证明。
甚至可能压根没有相关的证明。
回过头去看一下,其实也一定有:
\[[n]_q!=\sum_{p\in S_n}q^{\varsigma(p)} \]类似地,我们可以考虑从小到大插入元素的过程,并且说明插入 \(k\) 时可以导致降位和增加 \(0\) 到 \(k-1\) 中任意一个整数。具体过程略去。
需要注意的是,虽然“逆序数”和“降位和”此处具有相同的式子的结构,但并不意味着它们有着密切的关系。它们只是“恰好”在这个背景下有着同样的结构而已。
帕斯卡公式
众所周知:
我们尝试扩展到 q-组合数。事实上,我们只需要考察一下做差的结果即可。
Theorem.
给定 \(n\ge m>0\) 的正整数 \(n,m\),我们有类似于帕斯卡公式的结果:
\[\qbinom{n}{m}=\qbinom{n-1}{m}+q^{n-m}\qbinom{n-1}{m-1} \]
Proof.
首先,我们可以根据 q-组合数的定义,给出有一点点差别的东西:
\[\qbinom{n}{m}=\frac{\prod_{j=n-m+1}^{n}(1-q^j)}{\prod_{j=1}^m(1-q^j)} \]然后直接开算!
\[\begin{aligned} \qbinom{n}{m}-\qbinom{n-1}{m} &=\frac{1}{\prod_{j=1}^m(1-q^j)}\left(\prod_{j=n-m+1}^n(1-q^j)-\prod_{j=n-m}^{n-1}(1-q^j)\right)\\ &=\frac{(q^{n-m}-q^n)\prod_{j=n-m+1}^{n-1}(1-q^j)}{\prod_{j=1}^m(1-q^j)}\\ &=q^{n-m}\qbinom{n-1}{m-1} \end{aligned} \]
令 \(m=n-m\),我们有:
接着,利用下指标反转的公式:
有趣的是,虽然形式类似,但是两个公式之间并不是对称的!
更进一步地,我们可以通过这个式子构造 q-组合数的组合意义。
令 \(n=n+m\),我们有:
考虑 \(\dbinom{n+m}{m}\),可以表示平面直角坐标系的网格上从 \((0,0)\) 走到 \((n,m)\),每次只能向上或向右走的方案数。
回到 q-组合数,并考虑等式左边和右边两项的关系。在这个背景下,从 \((n-1,m)\) 走到 \((n,m)\) 会额外带来一个 \(q^m\) 的贡献。这相当于是算上了这一步走过的线段下方的方格的个数。
因此,对于路径 \(p:(0,0)\leadsto (n,m)\),我们设 \(\operatorname{ind}(p)\) 为 \(p\) 下方的方格个数,则有:
由这个组合含义我们可以进一步延展出:
-
考虑 \(p\) 上方的方格个数时完全对称,因此还是 \(\qbinom{n+m}{m}\)。
-
由于“\(p\) 下方的方格”凑起来就是一个 Ferrers' Diagram,所以一个包含 \(n\) 行,第一行有 \(m+1\) 个格子的 Ferrers' Diagram 按照包含格子的个数分到 \(q\) 的指数上再求和的结果就是 \(q^n\qbinom{n+m}{m}\)。
(我印象中 Ferrers' Diagram 貌似是不能有空行的)。
-
网格上的路径可以映射成 \(01\) 序列,每次向右走为 \(0\),每次向上走为 \(1\)。这样的话,\(\qbinom{n+m}{m}\) 自然就是有 \(n\) 个 \(0\)、\(m\) 个 \(1\) 的 \(01\) 序列按照逆序对个数分到 \(q\) 的指数上再求和的结果。
-
降位和,不会了。
上指标求和
基于帕斯卡公式,我们配一个因子,有:
现在,设 \(\newcommand{\ebinom}[2]{\left\langle\begin{matrix}#1\\#2\end{matrix}\right\rangle_q}\ebinom{n}{m}=q^{-nm}\qbinom{n}{m}\),则有:
所以:
由此我们可以给出:
Corollary.
\[\qbinom{n+m+1}{n+1}=\sum_{x=0}^mq^{(m-x)(n+1)}\qbinom{n+x}{n} \]当然这只是一个特例而已。
Proof.
事实是,我懒得写了。
范德蒙德卷积
众所周知:
我们给出一个类似的结论:
Theorem.
对于非负整数 \(r,s,m\),有:
\[\qbinom{r+s}{m}=\sum_{k}q^{k(s-m+k)}\qbinom{r}{k}\qbinom{s}{m-k} \]
Proof.
给一个组合解释。之前提到了 \(\qbinom{n+m}{m}\) 为长度为 \(n+m\)、包含 \(m\) 个 \(1\) 的 \(01\) 序列按照逆序对数分到 \(q\) 的指数上再求和的方案数。
则 RHS 的和式相当于枚举长度为 \(r\) 的中包含了多少个 \(1\),而 \(q^{k(s-m+k)}\) 就是多考虑了跨越前半部分和后半部分的逆序对的贡献。
两个“二项式定理“
与其说是二项式定理,不如说是特殊的多项式展开后的结果。
第一个“二项式定理“:
Theorem.
对于正整数 \(n\) 有:
\[\prod_{k=0}^{n-1}(1+q^kx)=\sum_{k=0}^nq^{\binom{k}{2}}\qbinom{n}{k}x^k \]
Proof.
严格的证明请自行求助于数学归纳法。这里只简单讨论一下它的含义。
LHS 的 \([x^k]\) 相当于是 \(\sum_{S\subseteq\{0,1,2,\dots,n-1\}}[|S|=k]q^{\sum_{x\in S}x}\)。由于我们要选 \(k\) 个互不相同的数,因此 \(S\) 中元素从小到大排序后,如果形成了序列 \(s_0,s_1,\dots,s_{k-1}\),则必然有 \(s_k\ge k\),因此:
\[[x^k]\prod_{k=0}^{n-1}(1+q^kx)=q^{\binom{k}{2}}\sum_{S\subseteq\{0,1,2,\dots,n-1\}}[|S|=k]q^{\sum_{j=0}^{k-1}(s_j-j)} \]而 \(s_j-j\) 关于 \(j\) 单调不降,我们可以将它和一个 \(01\) 序列的逆序数
强行建立关系——假如第 \(0\) 个 \(1\) 在序列一开头,则第 \(k\) 个 \(1\) 和第 \(k+1\) 个 \(1\) 之间的 \(0\) 的个数为 \((s_k-k)-(s_{k-1}-k+1)\)(认为 \(s_{-1}=-1\))。这样就可以统一到长度为 \(n\) 且包含 \(k\) 个 \(1\) 的 \(01\) 序列,所以:\[[x^k]\prod_{k=0}^{n-1}(1+q^kx)=q^{\binom{k}{2}}\qbinom{n}{k} \]
第一个“二项式定理”还是挺有用的,因为它直接指向了 01 背包。而由于 \(q^{\binom{k}{2}}\) 这样的项的存在,我们对于 \(q\) 截断到前 \(m+1\) 项时,背包中就至多只有 \(O(\sqrt m)\) 个有效的物品存在。
第二个“二项式定理”:
Theorem.
对于正整数 \(n\) 有:
\[\prod_{k=0}^{n-1}\frac{1}{1-q^kx}=\sum_{k\ge 0}\qbinom{n-1+k}{k}x^k \]
Proof.
仍然是简单的说明。LHS 为:
\[\prod_{k=0}^{n-1}\left(\sum_{j\ge 0}(q^kx)^j\right) \]对于每个 \(x^m\),我们将不同的 \(q^k\) 分开来看。也就是,其中某一项系数为:
\[\prod_{k=0}^{n-1}(q^{k})^{a_k} \]其中 \(\{a\}\) 满足 \(\sum_{k=0}^{n-1}a_k=m\)。对于一个 \(a_k\),我们将它想象成有 \(a_k\) 个长 \(k+1\) 宽 \(1\) 的矩形。按照长不升的顺序排列这 \(m\) 个矩形,我们就可以得到一张 Ferrers' Diagram。而此时的 \(\prod_{k=0}^{n-1}(q^k)^{a_k}\) 就是 Ferrers' Diagram 包含的格子数减去 \(m\)。进一步地,所有的 \(\{a\}\) 与有 \(m\) 行,第一行长度为 \(n\) 的 Ferrers' Diagram 构成双射。
以此此时我们可以直接计算出系数为 \(\qbinom{m+n-1}{m}\)。
第二个“二项式定理”也很有用,因为它的指向是完全背包。
这两个“二项式定理”还有一些值得说道的地方。考察一下 \(n\rightarrow +\infty\) 的时候,这两个“二项式定理”的行为:
第一个“二项式定理”的结果其实和 Ferrers' Diagram 关系很大:LHS 任意一项可以对应到一个没有相同长度的行的 Ferrers' Diagram,而右侧可以看作是将这个 Ferrers' Diagram “转置”之后的结果。原先有 \(k\) 行的 Ferrers' Diagram 转置过后又对应到了一个长度为 \(1\) 到 \(k\) 的行均出现过至少一次、行数不定的 Ferrers' Diagram,那么 RHS 的 \(q^{\binom{k}{2}}\) 可以看作是先选出这些必须出现的行,剩下长度的行再随便选。
第二个“二项式定理”的结果类似,也可以从 Ferrers' Diagram 的转置的角度来理解。由于 LHS 对于 Ferrers' Diagram 的限制不强,因此转置过后可以看作是行的长度只能在 \(1\) 到 \(k\) 的 Ferrers' Diagram。
这一部分的具体应用可以参考「AHOI2022」山河重整。
q-Lucas
顾名思义,这一部分来讨论一下 Lucas 定理在 q-模拟背景下的对应的内容。
由于到时候一定会出现 114514 个下取整除法,此处我们先约定 \(a/b=\lfloor\frac a b\rfloor\)。
首先,我们把 Lucas 定理拉出来仔细观察一下:
Theorem.
对于 \(n,m\ge 0\) 和质数 \(p\),有:
\[\dbinom{n}{m}\equiv \dbinom{n/p}{m/p}\dbinom{n\bmod p}{m\bmod p}\pmod p \]
Proof.
证明需要从以下性质入手:
\[\dbinom{p}{m}\bmod p=[m=0\lor m=p],0\le m\le p,p \text{ is prime.} \]那么:
\[\begin{aligned} \ [x^m](1+x)^n &=[x^m]\left((1+x)^p\right)^{n/p}(1+x)^{n\bmod p}\\ &=[x^m](1+x^p)^{n/p}(1+x)^{n\bmod p}\\ &=[x^{m/p}](1+x)^{n/p}[x^{m\bmod p}](1+x)^{n\bmod p} \end{aligned} \]于是可以得到 Lucas 定理。
因此,在模质数 \(p\) 的情况下,我们来模仿 Lucas 定理构建一个 q-Lucas。首先,我们希望找到一个 \(\qbinom{n}{m}\bmod p\) 的归纳关系;其次,为了得到 \(\qbinom{n}{m}\) 和类似于 Lucas 的结构,我们需要引入“二项式定理”。
接下来,根据 \(\qbinom{n}{m}\) 的结构,我们知道当 \(0<m<n\) 的时候,分子的 \(1-q^n\) 必然保留。我们令 \(q^n\equiv 1\pmod p\) 即可得到类似于组合数的性质。
因此我们引入 \(q\) 的阶,设 \(d=\operatorname{ord}_p(q)\)。则类似于 Lucas 定理,我们考察:
Lemma.
对于质数 \(p\) 和整数 \(q\),且 \(q\not\equiv 0\pmod p\),设 \(d=\operatorname{ord}_p(q)\),则有:
\[\qbinom{d}{m}\bmod p=[m=d\lor m=0],0\le m\le d \]
Proof.
当 \(m=0\) 或者 \(m=d\) 的时候,\(\qbinom{d}{m}\) 本身就为 \(1\)。
除此之外,我们考察 \(\qbinom{d}{m}\) 的内容:
\[\qbinom{d}{m}=\frac{\prod_{j=d-m+1}^d(1-q^j)}{\prod_{j=1}^m(1-q^j)} \]此时最上面的 \(1-q^d\) 一定会被保留,而 \(1-q^d\equiv 0\pmod p\),于是这个 \(\qbinom{d}{m}\bmod p=0\)。
此后,我们可以立即得出:
那么,接下来引入“二项式定理”:
于是,我们就得到了 q-Lucas:
Theorem.
对于 \(n,m\ge 0\),质数 \(p\) 和整数 \(q\),且 \(q\not\equiv 0\pmod p\)。设 \(d=\operatorname{ord}_p(q)\),则有:
\[\qbinom{n}{m}\equiv \binom{n/d}{m/d}\qbinom{n\bmod d}{m\bmod d}\pmod p \]
Proof.
做一点补充说明。对比系数可以直接得到的结果为:
\[q^{\binom{m}{2}}\qbinom{n}{m}\equiv (-1)^{[2|d](m/d)}\binom{n/d}{m/d}\cdot q^{\binom{m\bmod d}{2}}\qbinom{n\bmod d}{m\bmod d}\pmod p \]当 \(2\nmid d\) 的时候,我们有 \(\dbinom{m}{2}\equiv \dbinom{m\bmod d}{2}\pmod d\),因此等式成立。
当 \(2\mid d\) 的时候,此时 \(2\) 没有逆元,我们直接做差得到:
\[\displaystyle \dbinom{m}{2}-\dbinom{m\bmod d}{2}=\frac{d}{2}(2m-1)(m/d)+\frac{d^2}{2}(m/d)^2 \]\(\frac{d^2}{2}(m/d)^2\) 是 \(d\) 的倍数,而 \(\frac{d}{2}(2m-1)(m/d)\) 恰好会和 \((-1)^{m/d}\) 抵消,因此上式仍然成立。
回头再看一眼。q-Lucas 的根基在于 Lemma. 里的性质,而这个性质其实只需要 \(q^n=1\) 即可,也就是“幂次循环”。自然地,我们想到了复单位根。
因此,令 \(q=e^{\frac{2\pi c}{d}i}\),其中 \(d\) 为正整数,\(c\) 为 \([0,d)\) 中的一个整数,且 \(\gcd(c,d)=1\)。我们可以立即得到:
Theorem.
对于 \(n,m\ge 0\) 和单位复根 \(q=e^{\frac{2\pi c}{d}i}\):
\[\qbinom{n}{m}=\binom{n/d}{m/d}\qbinom{n\bmod d}{m\bmod d} \]此处 \(d\) 是正整数,\(c\) 是 \([0,d)\) 中的一个整数,且 \(\gcd(c,d)=1\)。
注意到,我们实际上代入了分圆多项式 \(\Phi_d(q)\) 的所有根。因此可以立即得到:
\[\qbinom{n}{m}=\dbinom{n/d}{m/d}\qbinom{n\bmod d}{m\bmod d}\pmod{\Phi_d(q)} \]对于所有的正整数 \(d\) 均成立。
什么是 q-模拟?
我的答案是,q-模拟一开始确实是人为引入了变元 \(q\),做了一个小小的“扰动”。而对于 \(q\) 的限制就是“定理、表达式在 \(q\rightarrow 1\) 的极限和原定理、表达式相同”。后续的结果会和原先的内容有密切的联系,上面几个例子中体现的是“\(q\) 的指数标记了组合对象的一些信息”。有点像群的除法,做了个分类。
与其纠结 \(q\) 模拟了什么,不如接受这样一个巧妙的构造,并看一下它能给出已有结果的哪些深入内容吧。