q-analog(q-模拟)初探

每次都因为睡觉搁置了写笔记的安排,这次一定不能咕。

好吧就是抄了一遍 PPT,q-Lucas 的证明之后抄飘飘的。

q-analog(即 q-模拟),是对于一个对象 u 构造一个关于 q 的表达式 f(q),使得:

limq1f(q)=u

这是一个比较 general 的定义。这里 q 可以是一个形式幂级数,也可以是一个比较具体的值,可以具体问题具体分析带入合适的 q。实际上 q 的意义就是对同一个对象附上不同的组合意义,得到一个生成函数或者是一个具体对象;而 q=1 的时候这个具体的对象刚好就是 u

好吧,比较抽象。我们先举出几个比较简单的对象的 q-analog。

  • 对于一个正整数 n,定义其 q-integeri=0n1qi=1qn1q,记做 [n]q

验证容易发现,在 q 趋近于 1 的时候,[n]q=n(可以直接洛)。

  • 对于一个正整数 n,定义其 q-fractional[n]q!=i=1n[i]q

这个展开的形式也比较简便,就不费这点心思写公式了。

  • 对于两个非负整数 n,m(n>m),定义其 q-binomial coefficient[nm]q=[n]q![m]q![nm]q!=[nnm]q

不知道有没有什么广义二项式系数的 q-模拟,既然是初探那就暂时不管吧!

  • 对于一个非负整数 n 以及一组和为 n 的非负整数 a1,a2,,ak,定义其 q-polynomial coefficient[na1,a2,,ak]q=[n]q![a1]q![a2]q![ak]q!

可以对照组合数理解。容易发现 q=1 的时候就是组合数,现在能否理解 q-模拟 想做的事情了?

如果看到下面没有 q 的下标自动补上就好了 ×

接下来研究一些定理。主要研究二项式系数。

定理 1:记 Sn 为所有 n 阶排列构成的集合,τ(p) 为排列 p 的逆序对数,有:

pSnqτ(p)=[n]q!

证明:

有一个结论是,记 ci 为排列中以 i 为第二个元素的逆序对个数(就是逆序对 (x,i),x<i 的个数),那么一个序列 c 和一个排列唯一对应,反之亦然(可以看这个题)。

继续分析 [n]q! 本身。容易发现 [i]q 的生成函数相当于在枚举 ci,对应每一个排列,定理得证。

可以写出一个代数证明,但是我懒了。

定理 1.5:记 Sna11a22,……,akk 构成的排列集合,τ(p) 为序列 p 的逆序对数,有:

pSnqτ(p)=[na1,a2,,ak]q

此定理 k=2 的特殊情况将在之后证明,k>2 的情况可以推广而来不再证明。

定理 2:(排列从 1 开始编号)记 τ(p)=iSpi,其中 Sp={ipi>pi+1}。记 Sna11a22,……,akk 构成的排列集合,有:

pSnqτ(p)=[na1,a2,,ak]q

容易发现形式和定理 1.5 的形式一模一样。这说明了降位和和逆序对的分布是相同的。这个给出一个合理的组合意义解释非常困难,可以看论文

定理 3:若 n1,则有 [nm]q=[n1m1]q+qm[n1m]q

有简单的代数证明,但是代数推导天地灭,这不优秀啊!

我们先假定这个是对的,带入 n=n+m,可以得到:

[n+mn]q=[n+m1m1]q+qm[n+m1m]q=qn[n+m1n]q+[n+m1n1]q

这个式子显然跟我们的定理等价。记网格图上从 (0,0) 只向上或向右到 (n,m) 的路径的集合为 S,路径 p 右下角(或左上角)的格子个数为 τ(p),容易发现 [n+mn]q=pSqτ(p)。这给出了一个递推式的形式,容易发现初值对应,定理得证。

然后是 q-Catalan。有 Cat(n)q=[2nn]q[n+1]q=[2nn]q[2nn+1]q

给它一个组合意义:记所有长度为 2n 的合法出入栈序列集合为 Sτ(p) 为序列 p 的降位和,则 Cat(n)q=pSqτ(p)

定理 4(q-二项式定理):

i=0n1(1+qiy)=i=0nqi(i1)2[ni]qyi

我们继续考虑一个组合意义。[yc]i=0n1(1+qiy) 相当于一个 n 列的直方图,第 i 列共有 i1 个格子,选 c 列出来。对于选出来的 c 列,先把选出来的第 i 列上面 i1 个格子削掉(共有 i(i1)2 个格子,容易发现不存在没有东西削的情况),然后剩下的所有列,上一列一定不比当前列高。这样的话就是算从 (0,0) 走到 (c,nc) 所有路径的权值,一条路径的权值定义为,设其右下角的格子个数为 cqc(总之就是直接沿用二项式系数的定义),那么显然就是 [ni]c

定理 5:

[n+mk]q=i=0kq(ni)(ki)[ni]q[mki]q

类似于范德蒙德卷积。

再给一个组合意义证明。[n+mk]q 可以用 n+m 个数里有 k1,然后用逆序对(实际上在这里取用的是顺序对)那套意义去理解。和式里面就是枚举前 n 个里面有 i1,算左右两边的逆序对,然后补上两块之间的逆序对。

定理 6:

[n+m+1n+1]q=i=0mqi[n+in]q

使用定理 3,重复展开即可证明。组合意义也是考虑走网格图,比较通用的证明方法。

定理 7(q-二项式定理-负指数形式):

i=0n111qix=i=0+[n+i1i]qxi

还是考虑 [xc]i=0n111qix。相当于 c 列,每列都不大于 n 的直方图,以格子大小为指数,也即从 (0,0)(i,n1) 所有路径的权值,一条路径的权值定义为,设其右下角的格子个数为 cqc(总之就是直接沿用二项式系数的定义)。想必不用我多说了吧。

定理 8(q-Lucas):有一个模分圆多项式的基本形式,CRT 之后可以得到新形式(其中 n/dn 除以 d 向下取整的值):

[nm]q=(nmoddmmodd)[n/dm/d]q

其中 q=e2ciπ/d,且 gcd(c,d)=1

证明不会。

要对于一个具体的 q 算 q-二项式系数的值的话,令 d=ord(q),有:

[nm]q=[n/dm/d]q(nmoddmmodd)

接下来研究 q-analog 的应用。首先要知道这些东西怎么算。

比如研究 [n]q! 的前 k 项(kn),先展开:[n]q!=(1q)(1q2)(1qn)(1q)n

法一:这个东西,显然可以使用多项式 exp 算,求导再求积(付公主的背包),时间复杂度 O(nlogn),延展性并不强。

法二:背包,显然最多只能选 O(k) 个数,最后再做个多项式卷积,时间复杂度 O(nn),复杂度取决于分母的计算复杂度。

法三:五边形数,显然这里有值的位置比较稀疏,仍然是多项式卷积,时间复杂度 O(nn)

法四:杨表。不是很会这个东西。

法五:采用 q-二项式定理对分子变形:

[n]q!=(1q)(1q2)(1qn)(1q)n=i=0n1(1qqi)=i=0n(1)iq(i+1)i2[ni]q

变形之后,如果算前 k 项,那么 的上指标就会缩减到 O(k) 级别。

然后考虑每一项的生成函数。注意到 [nm+1]q=[nm]q1qnm1qm+1(考虑 q-二项式系数 的定义)。这样的话就可以 O(k) 递推,总时间复杂度 O(kk)

这样算 [n]q!f(q) 也能 O(kk) 算了,延展性比较高。

通过分拆数这个工具引出 [nm]q 的另一个组合意义:

[nm]q=[tnm]11ti=1m11qit

仍然考虑网格图,走出来的路径其实也就是一个 Ferrers 图像。上面的很多东西也可以这么解释。有个不用 q-analog,但是用到了 Ferrers 图像相关性质的题,可以看山河重整 - Sol

对于 q 有具体取值的也可以做,具体考虑快速阶乘(复杂度 O(nlogn))的做法。

考虑一些有限域下的矩阵计数。有两个简单的小 intro:

Fqn(意思是 n 维的模 q 意义下的空间)的向量个数:显然是 qn

Fqn 上的 n×n 的矩阵个数:显然是 qn2

然后再考虑一些比较难的问题。

Fqn 中大小为 k 的线性无关向量组个数(顺序不同也认为不同):

第一个向量不能选零向量,方案数 qn1;第二个向量有两个不能选,方案数 qnq;第三个有四个不能选,方案数 qnq2,以此类推。

记这个问题的答案为 ((n)k)q。显然有:

((n)k)q=i=0k1(qnqi)=qk(k1)2i=nk+1n(qi1)=(q1)kqk(k1)2[n]q![nk]q!

Fqn 中的 k 维子空间的个数(如果选出的向量张成出同一个子空间算一样的):

先钦定一组大小为 k 的线性无关向量组当成这 k 维子空间的基,方案数 ((n)k)q;注意到这时每个子空间会被算 ((k)k)q 次,答案就是 ((n)k)q((k)k)q

恰巧有一个结论是:

[nk]q=((n)k)q((k)k)q

结论容易验证,考虑组合解释:

[nk]q 描述了 n 个盒子放 m 个球,方案数关于是否有球生成一个 01 序列逆序对的生成函数。

((n)k)q((k)k)q 描述的是 k 个行基向量消元后得到的 k×n 的上三角矩阵 F,算不同的消元后的矩阵(对应不同的空间)。考虑每一列,如果这一列上出现了一个新的向量,那么方案数为 1(消元过程已确定),否则方案数为已有向量的张成空间里任选一个的方案数,记前面有的 1 的个数为 p,方案数就是 qp

算了,能数的东西很多(比如可对角化矩阵计数之类的……),基本上都是一样的,用两个例题结束吧。

CF1603F October 18, 2017

问题等价于,给定 F2k 上一个向量 v,有多少个 F2k 上的大小为 n 的向量组不能线性表示 vk107,n109

这个题用组合数学的方法好像真的只评得上 2700,不是很懂。

用 q-analog 的方法考虑。

如果 v 是零向量就非常好办,答案就是 ((k)n)2,这个可以 O(k) 算。

如果不是,我们先枚举 r,然后生成所有的大小为 r 的不能线性表示 v 的线性无关向量组。第一个向量不能是 v 或者零向量,少了两种选择,第二个向量少了四种选择,类推可知方案数为 ((k)r+1)22k1

然后还有 nr 个向量可以随机插入,这 nr 个向量要被之前的向量线性表示,用生成函数的形式写出就是 [xnr]i=0r112ix。根据定理 7 可知这个就是 [nr]2

答案就是对所有的 r 求和,都可以用 O(k) 的时间算出来。

LOJ562 Tangjz 的背包

题意:记 f(v)=[xvym]i=1n(1+xiy),求 v=1p19190506pvf(v),其中 p 是使得 f(p)0 的最大整数。多组询问,T5×105n,m1012,对 998244353 取模。

C=19190506。浅推一波式子:

v=1pCpv[xvym]i=1n(1+xiy)=Cpv=1pCv[xvym]i=1n(1+xiy)=Cpv=1p[xvym]i=1n(1+(C1v)iy)=Cp[ym]i=1n(1+B1y)=Cp(m+1)(m+2)2[nm]C1

最后一步运用了定理 4。

现在问题是 p 是多少了……显然 p=i=nm+1ni,问题在于怎么算 n,m 很大的情况下的二项式系数,可以用 q-Lucas 解决。

posted @   SyadouHayami  阅读(1619)  评论(4编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现

My Castle Town.

点击右上角即可分享
微信分享提示