在 Weighted First-Order Model Counting (WFOMC) 的题目中经常用到图论多项式,所以学了一些东西,整理一下。
色多项式(Chromatic Polynomial)
这应该算是最简单的一种图论多项式了。
我们用 G=(V,E) 表示一个无向图,其中 ∣V∣=n。然后我们用 D=(V,E) 表示一个有向图。
我们可以定义各种各样的色多项式:
- χG(x) 表示无向图 G 的色多项式,当 x 为正整数时,它表示用 x 种颜色给点染色、使得任意一条边的两点颜色不同的方案数;
- χˉD(x) 表示有向图 D 的非严格色多项式,当 x 为正整数时,它表示用 x 种颜色给点染色、使得若有边 u→v 则 color(u)≤color(v) 的方案数;
- χD(x) 表示有向图 D 的严格色多项式,当 x 为正整数时,它表示用 x 种颜色给点染色、使得若有边 u→v 则 color(u)<color(v) 的方案数。
以下这几个不算是多项式,但也是很有用的概念:
- χG∗(x) 表示 G 的精确染色方案数(英文喜欢称为 surjective 满射),当 x 为正整数时,它表示恰好用 x 种颜色给点染色(即颜色 1,⋯,x 每种至少被用一次)、使得任意一条边的两点颜色不同的方案数;
- χˉD∗(x) 表示有向图 D 的精确非严格染色方案数,当 x 为正整数时,它表示恰好用 x 种颜色给点染色、使得若有边 u→v 则 color(u)≤color(v) 的方案数;
- χD∗(x) 表示有向图 D 的精确严格染色方案数,当 x 为正整数时,它表示恰好用 x 种颜色给点染色、使得若有边 u→v 则 color(u)<color(v) 的方案数。
为什么精确的这几个不是多项式呢?因为 x>n 时它们的值都为 0,这定义不出有限度数的多项式。那一开始的三个为什么是有限度数的呢?因为显然有:
Lemma 1. (精确染色方案数和色多项式的关系)
χ(x)=i=1∑n(ix)χ∗(i)=i=1∑ni!x(x−1)⋯(x−i+1)χ∗(i).(1)
这个就可以用来说明色多项式都是关于 x 的 n 次多项式,并且 n 次项的系数是 n!χ∗(n)。
色多项式的美妙之处在于它在负数点处的取值。负数点值的意义并不显然,但是能表示重要的组合意义。举两个例子。
有向图色多项式的负数点
Lemma 2. 记 acyc(D) 表示 D 缩环之后得到的 DAG,记 ∣V(acyc(D))∣ 表示 acyc(D) 的点数。对于任意 x∈R,
χD(x)χˉD(x)={(−1)nχˉD(−x),0,D is acyclic,otherwise,=(−1)∣V(acyc(D))∣χacyc(D)(−x).
也就是说,如果 D 是个 DAG,那么负数点的意义就是把严格转化为非严格、把非严格转化为严格;而如果 D 是有环的,那么从非严格转化为严格的过程会缩环,从严格转化为非严格的过程会过滤掉有环图。
证明至少有两种。以下我们只需证明 D 为 DAG 时的情况就好了。
来自 [AB20],从几何来理解。
把颜色序列 color(1),⋯color(n) 理解为 n 维空间的一个点。当只允许 color(i)∈{0,1} 时,记所有可行点组成的多面体为 Π,如果允许 color(i)∈{0,1,⋯,x},则该多面体变成 xΠ(即边界的每个点每一维坐标乘上 x)。
我们可以发现 χD(x) 表示 (x+1)Π 的内部整点(不含边界)数量(注意这只在 D 为 DAG 时成立),而 χˉD(x) 表示 (x−1)Π 的整点数量。记 EΠ 表示 Π 的 Ehrhart's Polynomial(即 EΠ(x) 表示 xΠ 的整点数量)。关于 Ehrhart's Polynomial 有一个性质是:
EΠ(−x)=(−1)n(xΠ 的内部整点数).
因此
χD(x)=(−1)nEΠ(−x−1)=(−1)nχˉD(−x).
来自 [Sta70],纯组合意义证明。所以几乎被我不看论文自己脑补出来了
我们先给 D 的节点重新标号,使得如果有边 u→v 那么 u<v。我们知道这样的标号方法肯定存在,而且不影响 χD(x) 和 χˉD(x),因为它们与点标号无关。这样做是为了方便下面使用拓扑序。
下面介绍一种非严格染色方案到拓扑序的映射:每次在入度为 0 的点里找颜色最小的,如果有多个点就选标号最小的点,执行 n 次就得到了一个拓扑序。
那么对于一个拓扑序 t1,⋯,tn,它包含的非严格染色方案如下:
∀i>1,{color(ti−1)≤color(ti),color(ti−1)<color(ti),ti−1<ti,ti−1>ti.
同理,定义一种严格染色方案到拓扑序的映射:每次在入度为 0 的点里找颜色最小的,如果有多个点就选标号最大的点,执行 n 次就得到了一个拓扑序。那么对于一个拓扑序 t1,⋯,tn,它包含的严格染色方案如下:
∀i>1,{color(ti−1)<color(ti),color(ti−1)≤color(ti),ti−1<ti,ti−1>ti.
记 ws 表示有 s 对相邻元素满足 ti−1<ti 的拓扑序数量,则有
χD(x)χˉD(x)=s=0∑n−1ws(nx+s),=s=0∑n−1ws(nx−s+n−1).
因此有
χˉD(−x)=(−1)nχD(x).
无向图色多项式的负数点
关键就是要发现 χG(x) 等价于先给 G 无环定向然后给点染色使得如果有边从 u 到 v 那么 u 的颜色小于 v 的颜色的方案数,即
χG(x)=D 是 G 的无环定向 ∑χD(x).
比较容易理解,因为无向图每一种染色方案都唯一对应一种无环定向方案,枚举每一种无环定向然后严格染色就可以得到所有原来的染色方案。
所以负数点的意义,结合 Lemma 2 就是
χG(−x)=D 是 G 的无环定向 ∑χˉD(x).(2)
应用——无向图的无环定向(Acyclic Orientation)
记 aG 表示给定一个 n 个点的无向图 G,给每条边定向使得该图无环的方案数。
Lemma 3. aG=(−1)nχG(−1).
证明多种多样,甚至有用拟阵来证的(wiki 给的文章就是),还有胡说八道的(比如 [EG21])……
就给上面的 (2) 式代入 x=1 就好了,对于任何有向图都有 χˉD(1)=1,于是得出结论。
来自 [Sta73],不想证明直接引用的话就引用这篇。
思路本质上跟证明 1 差不多,只不过他没有用到有向图色多项式,而是定义了一个 χˉG(x) 表示先给 G 无环定向然后给点染色使得如果有边从 u 到 v 那么 u 的颜色小于等于 v 的颜色的方案数,然后再用结构归纳法证了一个关系:
χˉG(x)=(−1)nχG(−x).
最后令 x=1,χˉG(x) 的意义就变成了无环定向数,于是就得出了 Lemma 3。
这个结构归纳证明是挺美妙的,只不过现在懂了无向图色多项式和有向图色多项式的关系之后,就会觉得这个只是在兜圈子了。
参考 [EG21] 自己脑补的组合意义证明。
[EG21] 的 8.3、8.4 节讲的就是 acyclic orientation,给了一个长长的生成函数证明,但很可惜是错的,它提出的“等价类”的概念并不 well-defined。
不过它最后的式子 (8.26) 倒是很有启发意义——通过染色方案数的容斥来得到定向方案数。
回顾 Lemma 1,如果代入 x=−1,会得到
χG(−1)=i=1∑n(−1)iχG∗(i).
所以 Lemma 3 就变成了
aG=i=1∑n(−1)n+iχG∗(i).(3)
这东西看着就很容斥。因为一种精确染色方案可以唯一确定一个定向方案(比如规定边的方向是从小颜色连向大颜色),所以我们证明,每一种定向方案所对应的(精确严格)染色方案中,只有一种能留下来。
Recall 上面 Lemma 2 那儿用到的其中一种有向图染色方案到拓扑序的映射:不妨设 D 是个有标号图(没标号随便标一个即可),每次在入度为 0 的点里选一个颜色最小的,如果有多个点就选择标号最小的。执行 n 次,这就得到了一个拓扑序。
在一个定向方案的所有(精确严格)染色方案中,我们保留拓扑序字典序最大的那个,这个染色方案是唯一的,且要使用所有 n 种颜色(即在 (3) 式右边系数是 1)。其余的精确染色方案必能两两对应,且正负相消。假设 σ∗ 是拓扑序最大的染色方案,σ1 是某个拓扑序非最大的染色方案,它们的拓扑序分别为:
topo(σ∗)=⋯,topo(σ1)=⋯,i,⋯,⋯j,⋯,i,⋯
其中 j 所在的位置是 topo(σ∗) 与 topo(σ1) 从左往右第一个不同的位置。
如果 σi1 在 σ1 里是唯一的,则构造 σ2 如下:先令 σ2:=σ1,然后把排在 i 后面的所有点的颜色减 1,再给 σi2 减 1 并将 i 移到恰当的位置。如果 σi1 不唯一,则构造 σ2 如下:先令 σ2:=σ1,然后把颜色大于 σi2 的点的颜色都加 1,再给 σi2 加 1 并将 i 移到恰当的位置。
可以发现,σ2 经过这套变换也会变成 σ1,并且一个精确染色经过变换后仍然是最多使用 n 种颜色的精确染色,所以所有非字典序最大的染色方案是两两对应的。并且,σ1 和 σ2 的颜色数正好差 1,所以它们正负相消。
因此 (3) 式右边每一个定向方案只有一个系数为 1 的精确染色被保留,所以得到 aG。
Tutte 多项式(Tutte Polynomial)
记 TG(x,y) 表示 G 的 Tutte 多项式,它的其中一种定义是这样的:
TG(x,y)=A⊆E∑(x−1)cc(A)−cc(E)(y−1)cc(A)+∣A∣−n,
其中 cc(A) 表示图 (V,A) 的连通块数。这里要求 00=1。
Tutte 多项式堪称无向图的万金油,它实在有太多的意义(多数抄自 wiki,少数抄自网上课件):
- TG(2,1) 表示 G 有多少子图是森林;
- 因为 x−1=1 所以 (x−1)cc(A)−cc(E) 这一项就没了,而 y−1=0 就要求子图必须满足 cc(A)+∣A∣−n=0,所以是森林。
- TG(1,1) 表示 G 有多少子图是生成森林(即连通块的数量与原图一致),当 G 连通时表示 G 的生成树数量;
- 同理,相比森林,多要求了一个 cc(A)=cc(E)。
- TG(1,2) 表示 G 的生成子图数量;
- 只要求 cc(A)=cc(E)。
- ……
负数点的意义也很神奇:
- (−1)n−cc(E)xcc(E)TG(1−x,0) 是 G 的色多项式 χG(x);
- 证明就是左边边展开之后会变成 ∑A⊆Excc(A)(−1)∣A∣,它就是容斥得出染色方案数。
- TG(2,0) 表示 G 的无环定向方案数;
- TG(0,2) 表示 G 的强连通定向方案数;
- TG(1,0) 表示 G 的无环定向且只有一个起点的方案数(无论起点是谁),如果 G 不连通则是各个连通块的方案数乘起来;
- TG(0,0) 判断 G 是否有边;
- TG(−1,0) 判断 G 是否是二分图;
- TG(0,−1) 判断 G 是否是欧拉图(存在欧拉回路);
- ……
复平面点的意义也很神奇,但我不会(
所以显然“任意给定一个无向图,求其 Tutte 多项式”或者“任意给定一个无向图和一个平面点 (x,y),求其 Tutte 多项式在 (x,y) 处的值”这样的问题都是 ♯P-hard 甚至是 complete 的。
B-Polynomial
这个是 [AB20] 提出的 Tutte 多项式在有向图上的扩展:
BD(q,y,z)=f:V→[q]∑y∣f>∣z∣f<∣,
其中 f 枚举的是一种点染色方案,f>={(x,y)∣(x,y)∈E∧f(x)<f(y)},f<={(x,y)∣(x,y)∈E∧f(x)>f(y)}。(我沿用了作者的箭头符号,是有点奇怪的)
一些意义:
- [y∣E∣]BD(q,y,1) 是 D 的严格色多项式 χD(q);
- BD(q,1,0) 是 D 的非严格色多项式 χˉD(q);
- ……
Reference
- [AB20] Jordan Awan and Olivier Bernardi. Tutte polynomials for directed graphs. In Journal of Combinatorial Theory, Series B 2020.
- [Sta70] Richard P. Stanley. A chromatic-like polynomial for ordered sets. In Proc. 2nd Chapel Hill Conf. on Combinatorial Mathematics and Its Applications 1970.
- [Sta73] Richard P. Stanley. Acyclic Orientations of Graphs. In Discrete Mathematics 1973.
- [EG21] Ömer Eğecioğlu, and Adriano M. Garsia. Lessons in Enumerative Combinatorics 2021.