picnic planning证明
设 \(r=1\),边权记为 \(w(e)\)。删除顶点 \(r\) 后,图被分成 \(t\) 个连通块
下面证明算法正确:
一、可行性的判定
任取原图的一棵生成树 \(\mathcal T\)。每个连通块 \(C_i\) 都必须通过至少一条与顶点 \(r\) 相连的边接入生成树。
因此
所以若 \(t>S\),任何生成树中顶点 \(r\) 的度数都超过 \(S\),问题无解。
下面只考虑 \(t\le S\) 的情况。
二、初始生成树是度数恰为 \(t\) 时的最优解
对每个连通块 \(C_i\):
- 在 \(C_i\) 内部求一棵最小生成树 \(F_i\);
- 选择所有连接 \(r\) 与 \(C_i\) 的边中权值最小的一条 \(e_i\)。
令
它是生成树。因为每个 \(C_i\) 内部连通,并且通过一条边与 \(r\) 相连;其边数为
同时
现在证明它是所有满足 \(\deg(r)=t\) 的生成树中权值最小的。
任取一棵满足 \(\deg_{\mathcal T}(r)=t\) 的生成树。每个 \(C_i\) 至少需要一条边连接到 \(r\),总共又只有 \(t\) 条与 \(r\) 相连的树边,因此每个 \(C_i\) 恰好使用一条这样的边。
于是:
- \(\mathcal T\) 在 \(C_i\) 内部必须是一棵生成树,其权值不小于 \(F_i\);
- \(C_i\) 与 \(r\) 相连的边权不小于 \(e_i\)。
所以
故 \(\mathcal T_t\) 是度数恰为 \(t\) 时的最优生成树。
三、一次换边的含义(要看,下面的符号需要了解)
假设当前生成树为 \(\mathcal T_k\),且
考虑一条尚未进入生成树的边
把 \(e\) 加入生成树后,会形成唯一的环:
其中 \(P_{\mathcal T_k}(r,x)\) 是树中从 \(r\) 到 \(x\) 的路径。
为了使 \(r\) 的度数从 \(k\) 增加到 \(k+1\),必须从这个环中删除一条不与 \(r\) 相连的边。固定 \(e\) 后,显然应删除其中权值最大的非 \(r\) 关联边,记为 \(f_e\)。
定义这次换边能够减少的权值为
换边后的权值为
因此算法每次选择使 \(\Delta(e)\) 最大的边,正是在所有一次增加顶点 \(r\) 度数的换边中,选择权值下降最多的一次。
关键还需证明:这种局部最优换边会得到度数为 \(k+1\) 时的全局最优解。
四、用参数化边权证明贪心换边的正确性
给所有与 \(r\) 相连的边统一增加一个参数 \(\lambda\)。定义新边权
对任意生成树 \(\mathcal T\),有
因此,如果某棵度数为 \(k\) 的树 \(\mathcal T_k\) 是新边权 \(w_\lambda\) 下的最小生成树,那么它一定是原边权下度数恰为 \(k\) 的最优生成树。这是因为对另一棵同样满足度数为 \(k\) 的树 \(\mathcal T\),有
消去 \(\lambda k\) 后得到
初始情形
当 \(\lambda\) 足够大时,使用与 \(r\) 相连的边会受到很大的额外惩罚,所以最小生成树会首先使 $\deg(r) 尽可能小。
顶点 \(r\) 的最小可能度数为 \(t\),而前面已经证明 \(\mathcal T_t\) 是度数为 \(t\) 时权值最小的树,因此对于充分大的 \(\lambda\),\(\mathcal T_t\) 是 \(w_\lambda\) 下的最小生成树。
降低参数 \(\lambda\)
假设当前树 \(\mathcal T_k\) 在参数值 \(\lambda_0\) 下是最小生成树。令
下面证明在区间
内,\(\mathcal T_k\) 还是最小生成树。
先证明:随着 \(\lambda\) 的减小,最小生成树的度数是非下降的。
设参数化目标为
若 \(\lambda_1<\lambda_2\),分别取最优树 \(T_1,T_2\),由最优性有
两式相加可以得到
因此
证毕。
当\(\lambda<\lambda_0\)的时候,考虑两种可能的情况:度数不变和度数增大。
对于度数不变的情况,\(\lambda\)的变化不会影响生成树的排序。也就是说,如果在\(\lambda\)的时候,\(\mathcal T\)是MST,那么在\(\lambda_0\)的时候,\(\mathcal T\)也应该是MST,但是现在\(\mathcal T_k\)才是
对于度数增加的情况,比较复杂。
首先,设边权为任意固定的 \(c(e)\),\(T\) 是一棵生成树。对于每条非树边 \(e\notin T\),将其加入 \(T\) 后形成唯一环 \(C_T(e)\)。
如果对所有
都有
那么 \(T\) 是全局最小生成树。反之亦然。于是,任取另一棵生成树 \(T'\),取一条
(如果)删除 \(T\) 中的 \(f\),顶点集被分为两个部分 \(A,B\)。因为 \(T'\) 是生成树,它必须至少有一条边 \(e\) 跨越\(A\)和\(B\)。
而且显然可以选到
由于 \(e\) 跨越 \(A,B\),所以在 \(T\) 中,\(e\) 两个端点之间的唯一路径必然经过 \(f\)。也就是说,
由条件 (1),
现在从 \(T'\) 中删除 \(e\),加入 \(f\):
显然 \(T''\) 仍然是一棵生成树,并且
同时,\(T''\) 与 \(T\) 的公共边比 \(T'\) 至少多一条。
不断重复这一过程,最终可以把 \(T'\) 变成 \(T\),并且每一步权值都不增加。
现在把上述过程应用到参数权值
其中
设当前树 \(T\) 在 \(\lambda_0\) 下是 MST。于是对所有基本换边 \(T-f+e\),都有
当 \(\lambda\) 减小时,分三类看。
如果 \(e,f\) 同为根边或同为非根边,则
与 \(\lambda\) 无关,所以原来非负,以后仍然非负。
如果 \(e\) 是非根边、\(f\) 是根边,则
当 \(\lambda\) 减小时,这个差反而增大,所以也不会出现改善。
唯一可能变得有利的是:
此时
定义
只要
对于所有这种交换都有
结合前两类交换可知,在
内,任何一次基本换边都不能降低权值。
再使用之前那个过程,就得到全局结论:
综上,证毕。于是根据最小生成树的环交换性质,\(\mathcal T_k\) 在这整个区间内仍然是最小生成树。
当
时,取达到最大值的边 \(e_k\),有
所以进行换边
后,新树与旧树在 \(w_{\delta_k}\) 下权值相同。旧树是最小生成树,因此新树也是最小生成树。
同时
根据参数边权的性质,\(\mathcal T_{k+1}\) 就是原边权下所有度数恰为 \(k+1\) 的生成树中的最优解。
由归纳法,算法依次得到的
分别是对应固定度数下的最优生成树

浙公网安备 33010602011771号