paper_5 第二节 近似算法
A 预备知识
联系
这一节给了出后面问题定义的模板。
原论文的 MinSCDS 是:
在节点状态未知的情况下,通过 probe 构造包含 root $r$ 的 CDS,目标是最小化 probing cost。
后续可以扩展成:
在节点状态未知的情况下,通过 probe 构造包含 root $r$ 的 2-connected CDS,目标是最小化 probing cost,同时保证一定容错性。
要注意的研究切口
原论文的探测目标是找普通 CDS,最终要求:
$$
N[C]=A_\varphi
$$
或者至少支配 root 所在 active 连通分量,并且:
$$
G[C]\text{ connected}
$$
但是容错版要求更强:
$$
G[C]\text{ 2-connected}
$$
这会导致一个新问题:
原算法每轮只在 2-hop 范围内贪心扩展,是否足以构造 2-connected CDS?
大概率不够。
因为 2 连通需要消除割点,需要考虑叶块、增强路径、备份连接。
这就是可以在后面提出改进算法的地方。
1 | Preliminaries 中首先定义了普通 CDS 的基本符号。N_G(v) 表示节点 v 在原图 G 中的开邻居,N_G[v] 表示闭邻居; |
符号
| 符号 | 含义 |
|---|---|
| $N_G(v)$ | 原图中 $v$ 的开邻居 |
| $N_G[v]$ | 原图中 $v$ 的闭邻居 |
| $N_G[C]$ | 集合 $C$ 的闭邻域 |
| $N_G^k[C]$ | 距离 $C$ 至多 $k$ 跳的节点集合 |
| $\phi$ | partial realization,当前已知状态 |
| $\varphi$ | full realization,全部真实状态 |
| $A_\phi$ | 当前已知 active 节点集合 |
| $p(v)$ | 节点 $v$ active 的概率 |
| $v\succ u$ | 探测 $v$ 揭示了 $u$ 的状态 |
| $r$ | 已知 active 的根节点 |
| probing cost | 主动探测的代价 |
| $H_\varphi$ | G[$A_\varphi$] 中含有根节点 $r$ 的连同分量 |
后面做容错算法,也可以沿用这个结构:
- 当前已知 active 集合:$A_\phi$
- 当前骨干集合:$C_\phi$
- 当前是否 2-connected:判断 $G[C_\phi]$
- 候选增强路径:在删除 inactive 后的当前图中找
- 探测策略:根据概率和容错收益选择下一步 probe
B 自适应算法
算法概括
从根节点 r 开始,围绕当前已知 active 的黑色节点,在 2 跳范围内不断选择“最值得探测”的节点,直到当前 active 连通分量已经被支配并连通。
1.四种节点状态
| 颜色 / 状态 | 含义 |
|---|---|
| 白色 white | 状态未知,还没有被揭示 |
| 黑色 black | 已经被主动 probe,且确定 active |
| 灰色 gray | 没有被主动 probe,但被某个 active 节点揭示为 active |
| removed | 已知 inactive,直接从当前图中删除 |
注意:黑色和灰色都是 active,但作用不同。
黑色节点:
已经被 probe,属于最终输出集合 $S$,可以看作当前 CDS 骨干节点。
灰色节点:
已经知道 active,但还没有被 probe,暂时不是骨干节点;后续如果被选中 probe,就会变黑。
这和你之前看 Wan CDS 里的 BLACK / GRAY 有点像,但这里的含义和随机探测绑定得更强。
2. 集合 $S$
文中说:$S$ 记录已经被探测过的节点。
但是从算法目标看,最终输出的 $S$ 实际上对应算法构造出的 CDS 骨干节点集合。
注意细节:如果某个节点被探测后发现 inactive,它会被从 $V$ 中移除,不会作为有效骨干节点。实际实现时,可以把:
probed_set:所有被 probe 的节点;black_set:被 probe 且 active 的节点;removed_set:已知 inactive 的节点;
分开维护。
3. $A_S$
原文说:
$$A_S$$是 $S$ 中的黑色节点,也就是已经探测并确认 active 的节点集合。
可以理解为:
$$
A_S = {v\in S: v \text{ is black}}
$$
算法每轮只在:
$$
N^2(A_S)\setminus S
$$
里选候选节点。
也就是:
距离当前黑色骨干节点至多 2 跳,且还没有被探测过的节点。
4. $NWS(v)$:白色邻域收益
$$
NWS(v)
$$
表示 $N[v]$ 里面白色节点的数量。
也就是:
如果探测 $v$,它可能揭示多少未知节点的信息。
为什么是 $N[v]$?
因为 full feedback model 下,如果 $v$ active,那么 $N[v]$ 中所有节点状态都会被揭示。
所以 $NWS(v)$ 越大,说明探测 $v$ 可能带来的信息收益越大。
5. $NCS(v)$:连接黑色分量收益
$$
NCS(v)
$$
表示与节点 $v$ 相邻的黑色连通分量数量。
比如当前黑色节点诱导出的图有多个连通分量:
1 | 黑色分量1 黑色分量2 |
如果节点 $v$ 和两个黑色分量都相邻,那么:
$$
NCS(v)=2
$$
探测 $v$ 并让它变黑后,它可能把两个黑色分量连接起来。
所以 $NCS(v)$ 衡量的是:
探测 $v$ 对连通性的贡献。
6. $NWS(v)+NCS(v)>1$ why?
算法循环条件是:
$$
\exists v\in N^2(A_S)\setminus S
$$
使得:
$$
NWS(v)+NCS(v)>1
$$
等价于:
$$
NWS(v)+NCS(v)-1>0
$$
这说明探测 $v$ 还有正收益。
为什么要减 1?
可以把:
$$
NWS(v)+NCS(v)-1
$$
理解为探测节点 $v$ 的“有效收益”。
因为探测一个节点本身要付出代价 1,所以收益里面要扣掉一个基本成本。
粗略理解:
- $NWS(v)$:能揭示多少未知节点;
- $NCS(v)$:能连接多少黑色分量;
- $-1$:扣掉自身探测成本或避免重复计数。
所以当它大于 0 时,说明探测还有意义。
7. 实时权重 $w_S(v)$
算法选择:
$$
v’=\arg\min w_S(v)
$$
也就是选择实时权重 最小的节点。
由于 $w_S(v)$ 是“收益”的倒数,所以:
权重越小,代表收益越大,越值得探测。
情况一:$v$ 是灰色节点
灰色节点已经知道是 active。
所以探测它不会失败。
它的权重是:
$$
w_S(v)=\frac{1}{NWS(v)+NCS(v)-1}
$$
这里没有概率 $p(v)$,因为它已经确定 active 了。
如果灰色节点能揭示很多白色节点,或者能连接多个黑色分量,那么分母大,权重小,优先级高。
情况二:$v$ 是白色节点
白色节点状态未知。
它的权重是:
$$
w_S(v)=\frac{1}{1-p(v)+p(v)(NWS(v)-1)}
$$
这里引入了节点 active 概率 $p(v)$。
为什么?
因为探测白色节点有两种结果:
如果 $v$ inactive
概率:
$$
1-p(v)
$$
探测后只能知道 $v$ 自己 inactive,相当于只排除一个未知节点。
如果 $v$ active
概率:
$$
p(v)
$$
那么它会揭示 $N[v]$ 中更多白色节点。
所以分母:
$$
1-p(v)+p(v)(NWS(v)-1)
$$
可以理解成某种“期望收益”。
活跃概率越高、白色邻居越多,分母越大,权重越小,越值得探测。
8. Lemma 1
Lemma 1 证明:
$$
w_S(v)\leq 1
$$
也就是说,只要一个节点的实时权重有定义,它的权重不会超过 1。
这个引理本身不是算法思想的重点,但它在后续近似比分析里会用到。
证明分三种情况:
情况 1:$v$ 是灰色
因为 $w_S(v)$ 有定义,所以:
$$
NWS(v)+NCS(v)-1>0
$$
所以分母至少是 1,于是:
$$
w_S(v)\leq 1
$$
情况 2:$v$ 是白色,且 $NWS(v)\geq 2$
此时:
$$
1-p(v)+p(v)(NWS(v)-1)
\geq
1-p(v)+p(v)
=1
$$
所以:
$$
w_S(v)\leq 1
$$
情况 3:$v$ 是白色,且 $NWS(v)=1$
这种情况其实不可能发生在 $w_S(v)$ 有定义的前提下。
因为白色节点没有黑色邻居,所以:
$$
NCS(v)=0
$$
于是:
$$
NWS(v)+NCS(v)=1
$$
与:
$$
NWS(v)+NCS(v)\geq 2
$$
矛盾。
所以该情况排除。
概括
Algorithm 1 从已知 active 的根节点出发,在当前黑色节点 2 跳范围内,根据节点能够揭示未知节点和连接黑色分量的能力,结合节点活跃概率,贪心选择实时权重最小的节点进行探测,直到没有节点能够带来正收益为止。
对容错的启发
原算法的收益主要来自两部分:
$$
NWS(v)
$$
表示信息揭示收益;
$$
NCS(v)
$$
表示普通连通性收益。
但是如果做容错版,比如 2-connected CDS,那么只考虑 $NCS(v)$ 可能不够。
因为普通连通只需要把黑色分量连起来,而 2 连通还要消除割点、连接叶块、增加备用路径。
所以后面可以引入新的收益项,例如:
$$
NBS(v)
$$
可以理解为 Node Biconnectivity Score,表示节点 $v$ 对减少割点或合并叶块的贡献。
或者路径版本:
$$
Score(P)=
\frac{
\text{FaultToleranceGain}(P)\cdot Pr(P)
}{
\text{ExpectedProbeCost}(P)
}
$$
其中:
$$
Pr(P)=\prod_{v\in P}p(v)
$$
也就是说,可以把原论文的:
$$
NWS(v)+NCS(v)-1
$$
扩展为:
$$
NWS(v)+NCS(v)+FTS(v)-1
$$
其中 $FTS(v)$ 表示容错增强收益。
当然这只是初步想法,后面要慢慢设计得合理。
3 项
第一:
$$
NWS(v)
$$
表示信息收益,也就是能揭示多少白色未知节点。
第二:
$$
NCS(v)
$$
表示连通收益,也就是能连接多少黑色连通分量。
第三:
$$
w_S(v)
$$
是实时权重,算法每轮选权重最小的节点,本质上是选“单位探测代价下最有价值”的节点。
后面做容错算法时,可以沿着这个思路:
对于容错 CDS,除了信息收益和普通连通收益之外,还应该增加什么“容错收益”?