Kn,m=nm−1mn−1 矩阵树定理的证明过程。
只需基础行列式变换,计算量超级超级小,这么巧妙的证明真的不看看吗 OvO
注意到操作次数
=n+m−1,每次选择行 / 列。不难追忆到“
重塑矩阵”使用图论转化。
将行、列看作点,操作
(x,y,R) 则连边
x→y+n,操作
(x,y,C) 则连边
y+n→x。
手玩一下不难发现,操作集合与
有标号外向树满足其二分图染色后各
n,m 个点的方案
双射。
证明:任何合法操作都可以生成这样的树。任意这样的树也可以从叶子开始依次还原回操作序列。故两者双射。
考虑计数。
定根
n+m 种,现在问题为:求完全二分图
Kn,m 的有标号生成树个数。
矩阵树经典问题,答案为
nm−1mn−1。
证明:
根据矩阵树定理:
L(G)=D(G)−A(G),
G 的生成树方案数为:
detL(G)(1,2,…,i−1,i+1,…n1,2,…,i−1,i+1,…n)
取
i=n,设其为
L′(G),我们对
L′(G) 进行行列式变换:
L′=[mIn−J(m−1)×n−Jn×(m−1)nIm−1]
其中
In 是
n 行
n 列的单位矩阵,
Jn×m 是
n×m 的全
1 矩阵。
对
L′ 进行行变换:将前
n 行的
m1 倍加到后
m−1 行。
[mIn0−Jn×(m−1)B]
其中
B=nIm−1−mnJm−1。
由于这是上三角矩阵,根据行列式定义:
detA=p∑(−1)π(p)i=1∏nAi,pi
我们惊喜地发现,前
n 行
n 列一定有
pi=i,否则为
0。于是可以提出
mn,只需要计算
detB。
det(B)=nm−1⋅det(Im−1−m1Jm−1)
det 里面的矩阵长这样(是
(n−1)×(n−1) 的):
1−m1−m1⋮−m1−m11−m1⋮−m1⋯⋯⋱⋯−m1−m1⋮1−m1
行变换,将
2∼n−1 行加到第
1 行。
m1−m1⋮−m1m11−m1⋮−m1⋯⋯⋱⋯m1−m1⋮1−m1
行变换,将第
1 行加到第
2∼n−1 行。
m10⋮0m11⋮0⋯⋯⋱⋯m10⋮1
好了,这又是一个上三角矩阵,它的行列式即为
m1。
合起来,
Ans=m1×nm−1×mn=nm−1×nn−1。证毕。