picnic planning证明

\(r=1\),边权记为 \(w(e)\)。删除顶点 \(r\) 后,图被分成 \(t\) 个连通块

\[C_1,C_2,\ldots,C_t. \]

下面证明算法正确:

一、可行性的判定

任取原图的一棵生成树 \(\mathcal T\)。每个连通块 \(C_i\) 都必须通过至少一条与顶点 \(r\) 相连的边接入生成树。

因此

\[\deg_{\mathcal T}(r)\ge t. \]

所以若 \(t>S\),任何生成树中顶点 \(r\) 的度数都超过 \(S\),问题无解。

下面只考虑 \(t\le S\) 的情况。

二、初始生成树是度数恰为 \(t\) 时的最优解

对每个连通块 \(C_i\)

  1. \(C_i\) 内部求一棵最小生成树 \(F_i\)
  2. 选择所有连接 \(r\)\(C_i\) 的边中权值最小的一条 \(e_i\)

\[\mathcal T_t=\bigcup_{i=1}^{t}F_i\ \cup\ {e_1,e_2,\ldots,e_t}. \]

它是生成树。因为每个 \(C_i\) 内部连通,并且通过一条边与 \(r\) 相连;其边数为

\[\sum_{i=1}^{t}(|C_i|-1)+t =(N-1)-t+t=N-1. \]

同时

\[\deg_{\mathcal T_t}(r)=t. \]

现在证明它是所有满足 \(\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\)

所以

\[w(\mathcal T) \ge \sum_{i=1}^{t}w(F_i)+\sum_{i=1}^{t}w(e_i) =w(\mathcal T_t). \]

\(\mathcal T_t\) 是度数恰为 \(t\) 时的最优生成树。

三、一次换边的含义(要看,下面的符号需要了解)

假设当前生成树为 \(\mathcal T_k\),且

\[\deg_{\mathcal T_k}(r)=k. \]

考虑一条尚未进入生成树的边

\[e=(r,x),\qquad w(e)=z. \]

\(e\) 加入生成树后,会形成唯一的环:

\[e+P_{\mathcal T_k}(r,x), \]

其中 \(P_{\mathcal T_k}(r,x)\) 是树中从 \(r\)\(x\) 的路径。

为了使 \(r\) 的度数从 \(k\) 增加到 \(k+1\),必须从这个环中删除一条不与 \(r\) 相连的边。固定 \(e\) 后,显然应删除其中权值最大的非 \(r\) 关联边,记为 \(f_e\)

定义这次换边能够减少的权值为

\[\Delta(e)=w(f_e)-w(e). \]

换边后的权值为

\[w(\mathcal T_k-f_e+e) =w(\mathcal T_k)-\Delta(e). \]

因此算法每次选择使 \(\Delta(e)\) 最大的边,正是在所有一次增加顶点 \(r\) 度数的换边中,选择权值下降最多的一次。

关键还需证明:这种局部最优换边会得到度数为 \(k+1\) 时的全局最优解。

四、用参数化边权证明贪心换边的正确性

给所有与 \(r\) 相连的边统一增加一个参数 \(\lambda\)。定义新边权

\[w_\lambda(e)= \begin{cases} w(e)+\lambda,&e\text{ 与 }r\text{ 相连},\\ w(e),&\text{否则}. \end{cases} \]

对任意生成树 \(\mathcal T\),有

\[w_\lambda(\mathcal T) =w(\mathcal T)+\lambda\deg_{\mathcal T}(r). \]

因此,如果某棵度数为 \(k\) 的树 \(\mathcal T_k\) 是新边权 \(w_\lambda\) 下的最小生成树,那么它一定是原边权下度数恰为 \(k\) 的最优生成树。这是因为对另一棵同样满足度数为 \(k\) 的树 \(\mathcal T\),有

\[w(\mathcal T_k)+\lambda k \le w(\mathcal T)+\lambda k, \]

消去 \(\lambda k\) 后得到

\[w(\mathcal T_k)\le w(\mathcal T). \]

初始情形

\(\lambda\) 足够大时,使用与 \(r\) 相连的边会受到很大的额外惩罚,所以最小生成树会首先使 $\deg(r) 尽可能小。

顶点 \(r\) 的最小可能度数为 \(t\),而前面已经证明 \(\mathcal T_t\) 是度数为 \(t\) 时权值最小的树,因此对于充分大的 \(\lambda\)\(\mathcal T_t\)\(w_\lambda\) 下的最小生成树。

降低参数 \(\lambda\)

假设当前树 \(\mathcal T_k\) 在参数值 \(\lambda_0\) 下是最小生成树。令

\[\delta_k=\max_{e=(r,x)\notin\mathcal T_k}\Delta(e). \]

下面证明在区间

\[\delta_k\le\lambda\le\lambda_0 \]

内,\(\mathcal T_k\) 还是最小生成树。

先证明:随着 \(\lambda\) 的减小,最小生成树的度数是非下降的。

设参数化目标为

\[\Phi_\lambda(T)=w(T)+\lambda\deg_T(r). \]

\(\lambda_1<\lambda_2\),分别取最优树 \(T_1,T_2\),由最优性有

\[\Phi_{\lambda_1}(T_1)\le \Phi_{\lambda_1}(T_2), \qquad \Phi_{\lambda_2}(T_2)\le \Phi_{\lambda_2}(T_1). \]

两式相加可以得到

\[(\lambda_2-\lambda_1) \bigl(\deg_{T_2}(r)-\deg_{T_1}(r)\bigr)\le 0, \]

因此

\[\deg_{T_2}(r)\le \deg_{T_1}(r). \]

证毕。

\(\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)\)

如果对所有

\[e\notin T,\qquad f\in C_T(e)\cap T \]

都有

\[c(e)\ge c(f), \tag{1} \]

那么 \(T\) 是全局最小生成树。反之亦然。于是,任取另一棵生成树 \(T'\),取一条

\[f\in T\setminus T'. \]

(如果)删除 \(T\) 中的 \(f\),顶点集被分为两个部分 \(A,B\)。因为 \(T'\) 是生成树,它必须至少有一条边 \(e\) 跨越\(A\)\(B\)

而且显然可以选到

\[e\in T'\setminus T. \]

由于 \(e\) 跨越 \(A,B\),所以在 \(T\) 中,\(e\) 两个端点之间的唯一路径必然经过 \(f\)。也就是说,

\[f\in C_T(e). \]

由条件 (1),

\[c(e)\ge c(f). \]

现在从 \(T'\) 中删除 \(e\),加入 \(f\)

\[T''=T'-e+f. \]

显然 \(T''\) 仍然是一棵生成树,并且

\[c(T'')=c(T')-c(e)+c(f)\le c(T'). \]

同时,\(T''\)\(T\) 的公共边比 \(T'\) 至少多一条。

不断重复这一过程,最终可以把 \(T'\) 变成 \(T\),并且每一步权值都不增加。

现在把上述过程应用到参数权值

\[c_\lambda(e)=w(e)+\lambda\chi(e), \]

其中

\[\chi(e)= \begin{cases} 1,&e\text{ 与顶点 }1\text{ 相连},\\ 0,&\text{否则}. \end{cases} \]

设当前树 \(T\)\(\lambda_0\) 下是 MST。于是对所有基本换边 \(T-f+e\),都有

\[c_{\lambda_0}(e)-c_{\lambda_0}(f)\ge 0. \tag{2} \]

\(\lambda\) 减小时,分三类看。

如果 \(e,f\) 同为根边或同为非根边,则

\[c_\lambda(e)-c_\lambda(f)=w(e)-w(f), \]

\(\lambda\) 无关,所以原来非负,以后仍然非负。

如果 \(e\) 是非根边、\(f\) 是根边,则

\[c_\lambda(e)-c_\lambda(f) =w(e)-w(f)-\lambda. \]

\(\lambda\) 减小时,这个差反而增大,所以也不会出现改善。

唯一可能变得有利的是:

\[e\text{ 是根边},\qquad f\text{ 是非根边}. \]

此时

\[c_\lambda(e)-c_\lambda(f) =w(e)-w(f)+\lambda. \]

定义

\[\lambda^*=\max_{\substack{ e\notin T,\ e\text{ 为根边}\\ f\in C_T(e),\ f\text{ 为非根边} }} \bigl(w(f)-w(e)\bigr). \]

只要

\[\lambda\ge \lambda^*, \]

对于所有这种交换都有

\[w(e)-w(f)+\lambda\ge 0. \]

结合前两类交换可知,在

\[\lambda^*\le\lambda\le\lambda_0 \]

内,任何一次基本换边都不能降低权值。

再使用之前那个过程,就得到全局结论:

\[\boxed{ T\text{ 在整个区间 } [\lambda^*,\lambda_0] \text{ 内始终是一棵 MST。} } \]

综上,证毕。于是根据最小生成树的环交换性质,\(\mathcal T_k\) 在这整个区间内仍然是最小生成树。

\[\lambda=\delta_k \]

时,取达到最大值的边 \(e_k\),有

\[w_{\delta_k}(e_k)=w_{\delta_k}(f_{e_k}). \]

所以进行换边

\[\mathcal T_{k+1} =\mathcal T_k-f_{e_k}+e_k \]

后,新树与旧树在 \(w_{\delta_k}\) 下权值相同。旧树是最小生成树,因此新树也是最小生成树。

同时

\[\deg_{\mathcal T_{k+1}}(r)=k+1. \]

根据参数边权的性质,\(\mathcal T_{k+1}\) 就是原边权下所有度数恰为 \(k+1\) 的生成树中的最优解。

由归纳法,算法依次得到的

\[\mathcal T_t,\mathcal T_{t+1},\ldots \]

分别是对应固定度数下的最优生成树

posted @ 2023-10-19 22:20  最爱丁珰  阅读(45)  评论(0)    收藏  举报