analysis

为什么 Algorithm 1 的探测次数,在期望意义下不会比最优策略差太多?

“收费 charging method”是作者用来证明近似比的一种数学分析技巧。

先导:

费用不是现实中的钱,也不是 probing cost 本身,而是一种“记账工具”。作者把算法每次 probe 节点的代价,按照规则记到一些被揭示的节点身上,最后通过统计每个节点最多被记几次,来证明总探测代价有上界。


定理 5 到底想证明什么?

定理 5 要证明:
$$
E[|S|]\leq
\left(
\frac{1}{\delta}(H(\Delta-1)+1)+1
\right)|O|
$$

这里:

  • $S$:Algorithm 1 探测过的节点集合;
  • $|S|$:算法的 probing cost;
  • $O$:最优策略探测过的节点集合;
  • $|O|$:最优策略的 probing cost;
  • $\delta$:节点最小 active 概率;
  • $\Delta$:图最大度。

所以定理 5 的意思是:

本文算法的期望探测次数,不会超过最优策略探测次数的
$$
\frac{1}{\delta}(H(\Delta-1)+1)+1
$$
倍。
这就是它的近似比证明。


为什么要“收费”?

因为直接比较很难。

算法每次选择节点,是根据当前状态动态决定的。
最优策略 (O) 也是一个策略,不是一个固定 CDS 集合。
所以不能像普通 CDS 那样简单比较(CDS 的大小,其大小是变化的!!!):
$$
|S| \quad \text{和} \quad |OPT|
$$

换一种思路:

算法每 probe 一个节点,就产生 1 个单位代价。
不直接算这个代价,而是把这个代价“分摊”给一些节点。
如果能证明每个相关节点被分摊的总费用不大,那么算法总代价也不大。

这个就是 charging method。

实际上,每个节点收到的分摊 charge 是发出分摊节点的实时权重 !


这里的“费用”到底是?

易混点:

第一,真实代价

真实代价是 probing cost,算法每主动探测一个节点,代价是 1。

所以算法总真实代价是:$|S|$


第二,charge / 费用

charge 是证明时人为定义的“账”。

每次算法选择节点 ($v_i$),会把一个数值:$w_{S_{i-1}}(v_i)$ 记到若干个节点身上。

这个 $w_{S_{i-1}}(v_i)$ 就是实时权重

所以可以这样理解:

每次 probe 节点 ($v_i$),它会向若干个节点收取一笔费用,每个被收费节点收到的费用大小都是 $w_{S_{i-1}}(v_i)$。

注意:

这只是证明里的虚拟费用,不是真的算法操作。

算法运行时并不会真的 charge。
charge 只是作者分析近似比的工具。


为什么费用大小用实时权重 $w_S(v)$

实时权重是“单位收益代价”的意思。 -> 即 总代价 ÷ 总收益 = 单位收益需要付出的代价

即,$ w_s(v) = \frac{1}{总收益}$

而总收益 = 信息收益 + 连通收益 = $NWS(v) + NCS(v)-1$

前面已知:

  • 权重越小,说明这个节点越值得探测;
  • 权重大致是“收益的倒数”。

例如灰色节点:

$$
w_S(v)=\frac{1}{NWS(v)+NCS(v)-1}
$$

如果它能带来很多收益,分母大,权重小。

现在让它给:

$$
NWS(v)+NCS(v)-1
$$

节点收费,每个节点收费:

$$
w_S(v)
$$

那么总 charge 是:

$$
(NWS(v)+NCS(v)-1)\cdot w_S(v)
$$

代入:

$$w_S(v)=\frac{1}{NWS(v)+NCS(v)-1}$$

得到:

$$
总 charge=1
$$

刚好对应一次 probe 的真实代价 1 !!


charging 的核心设计

希望做到:

算法每探测一次,真实代价是 1;
通过 charge,把这 1 个单位代价分摊给一些被揭示或被合并的节点。

所以设计了:

$$E[ch(v_i)] = \frac{1}{w(v_i)}$$

希望 收费节点数量的期望 = 权重的倒数 , 为了凑出 数量 * charge = 1
即 $\frac{1}{权重} * 权重 = 1 $

每个被 charge 的节点收到的费用是:

$$w(v_i)$$

于是本轮期望总收费是:

$$E[ch(v_i)]\cdot w(v_i)=1$$

这样就把“每次 probe 的代价 1”转化成了“若干节点收到的 charge”。


为什么要维护不变式?

不变式:

$$\text{每个黑色连通分量中,恰好有一个黑色节点没有被收费。}
$$

是为了处理 灰色节点连接多个黑色分量 的情况。

想:

Algorithm 1 的一个重要任务是保证黑色节点最后连通。
灰色节点如果邻接多个黑色分量,那么探测它之后,它变黑,可以把这些分量合并。

例如有 3 个黑色连通分量:

1
2
3
黑色分量 C1      黑色分量 C2      黑色分量 C3
\ | /
灰色节点 u

如果 probe 灰色节点 (u),它变黑,就会把三个黑色分量合并成一个大分量。

作者希望 charge 过程中始终保持:

每个黑色分量里只保留一个“没被收费”的黑色节点。

why?因为后面统计总 charge 时,每个黑色节点最好只被 charge 一次,不会乱套。


为什么灰色节点收费时,要 charge ($NC_S-1$) 个黑色分量?

整个不变式最关键。

假设灰色节点 (u) 邻接 3 个黑色分量:

$$NCS(u)=3$$

根据不变式,合并前每个黑色分量中各有一个未收费黑色节点:

1
2
3
C1 有 1 个未收费黑点
C2 有 1 个未收费黑点
C3 有 1 个未收费黑点

probe (u) 后,这 3 个分量合并成 1 个大分量。

如果什么都不做,那么大分量里会有 3 个未收费黑点。

但不变式要求:

1
每个黑色分量恰好 1 个未收费黑点

所以合并后只能留下 1 个

就对其中:

$$NCS(u)-1=2$$

个分量里的未收费黑点进行 charge,留下1 个不 charge。

这样合并后大分量里仍然只有 1 个未收费黑点。

这就是为什么第三种收费情况里面是:

$$NC_S(v_i)-1$$

而不是:

$$NC_S(v_i)$$


三种收费情况?


情况 I:($v_i$) 是白色且 active

这时 ($v_i$) 原本未知,探测后发现它 active。

于是:

  • ($v_i$) 变黑;
  • 它成为一个新的黑色分量;
  • 它揭示邻域中的白色节点状态。

论文规定:

($v_i$) 自己不收费,(N($v_i$)) 中的白色节点收费。

为什么 ($v_i$) 自己不收费?

因为它变成了一个新的黑色分量。为了满足不变式:

$$\text{每个黑色分量要有一个未收费黑点}$$

所以这个新黑色分量中的 ($v_i$) 就作为那个“未收费黑点”。

所以它不能被收费

那谁收费?

它邻域中被揭示的白色节点收费。

收费数量是:

$$NWS(v_i)-1$$

因为 ($NW_S(v_i)$) 是 (N[$v_i$]) 中白色节点数量,包含 ($v_i$) 自己。
但 ($v_i$) 自己不收费,所以剩:

$$NW_S(v_i)-1$$

个节点收费。


情况 II:($v_i$) 是白色且 inactive

这时 ($v_i$) 原本未知,探测后发现 inactive。

它不会变黑,也不会形成黑色分量, 只是被移除。

直接让它自己收费。

收费数量是:

$$1$$

很好理解:

探测它花了 1 次代价,但它没有带来邻域揭示,只揭示了自己 inactive,所以费用记到它自己身上。


情况 III:($v_i$) 是灰色节点

灰色节点已经知道 active,只是还没被主动 probe。

probe 它以后:

  • 它变黑;
  • 它揭示邻域中的白色节点;
  • 它可能把多个黑色分量合并。

所以它有两类收益:

第一类:揭示白色节点

它邻域中有:

$$NWS(v_i)$$

个白色节点。

这些白色节点被揭示,因此收费。

第二类:合并黑色分量

它邻接:

$$NC_S(v_i)$$

个黑色分量。

probe 它后,这些分量被合并成一个大分量。

为了保持不变式,只对其中:

$$NC_S(v_i)-1$$

个黑色分量里的未收费黑点收费。

留下一个未收费黑点,作为合并后大分量的未收费黑点。

所以灰色节点总共收费的节点数是:

$$NWS(v_i)+NCS(v_i)-1$$

这和灰色权重完全对应:

$$w_S(v_i)=
\frac{1}
{NWS(v_i)+NCS(v_i)-1}$$


用一个例子看灰色节点收费

假设灰色节点 (u) 周围是这样:

1
2
3
4
5
6
白色节点 a       黑色分量 C1
\ /
\ /
灰色 u
/ \
黑色分量 C2 黑色分量 C3

假设:

$$NW_S(u)=1$$

因为它邻域里有 1 个白色节点 (a)。

$$NC_S(u)=3$$

因为它邻接 3 个黑色分量。

那么:

$$NWS(u)+NCS(u)-1=1+3-1=3$$

所以:

$$w_S(u)=\frac{1}{3}$$

probe (u) 这一轮,真实代价是 1。

charging ?

  • 白色节点 (a) 收费 ($\frac{1}{3}$);
  • 从 3 个黑色分量中选 2 个分量,各找一个未收费黑点收费 ($\frac{1}{3}$);
  • 还有 1 个黑色分量的未收费黑点保留,不收费。

总共 3 个节点被收费:

$$3\times \frac{1}{3}=1$$

刚好等于这一轮 probe 的真实代价 1。

这就是 charging 的妙处。


白色节点 active 情况为什么是期望?

对白色节点,情况有随机性。

如果 probe 白色节点 (v):

以概率 (1-p(v)),它 inactive

收费节点数:

$$1$$

因为只给自己收费。

以概率 (p(v)),它 active

收费节点数:

$$NWS(v)-1$$

因为自己变黑且不收费,其他白色邻居收费。

所以收费节点数的期望是:

$$(1-p(v))\cdot 1+p(v)\cdot(NWS(v)-1)$$

也就是:

$$1-p(v)+p(v)(NWS(v)-1)$$

而白色节点权重定义刚好是:

$$w_S(v)=
\frac{1}
{1-p(v)+p(v)(NWS(v)-1)}$$

所以:

$$E[ch(v)]=\frac{1}{w_S(v)}$$

这就是公式 (9) 对白色节点成立的原因。


公式 (9)

公式 (9):

$$E[ch(v_i)\mid \Gamma]=\frac{1}{w_{S_{i-1}}(v_i)}$$

这里:

  • $ch(v_i)$:本轮有多少个节点被收费;
  • $w_{S_{i-1}}(v_i)$:本轮每个被收费节点收到的费用;
  • $\Gamma$:给定本轮之前的状态以及本轮选择了 ($v_i$)。

意思是:

本轮被收费节点数量的期望,等于权重的倒数。

于是本轮期望总收费是:

$$E[ch(v_i)]\cdot w(v_i)$$

$$
=\frac{1}{w(v_i)}\cdot w(v_i)
$$
$$=1$$

这就对应了一次 probe 的代价。

所以 charging 方法就是把:

$$\text{每次 probe 的代价 }1$$

变成:

$$\text{若干节点收到的费用总和}$$


为什么说每个节点基本只被 charge 一次?

设计规则就是为了保证:

  • 白色节点被揭示后,变灰或者移除,以后不再以白色身份被 charge;
  • 灰色节点第一次被揭示变灰时被 charge,以后不再被 charge;
  • 白色 active 节点自己变黑时不 charge,之后如果它所在黑色分量被合并,它可能被 charge 一次;
  • 被 charge 过的黑色节点不会再次被 charge;
  • 通过不变式保证每个黑色分量始终只保留一个未收费黑点。

所以最终效果是:

除了最后剩下的一个黑色节点外,相关区域里的节点基本都会被恰好 charge 一次。

这就方便后面统计总 charge。


##为什么要和最优策略 (O) 联系?

作者已经把算法的探测代价转化成了节点 charge。

接下来要做的是:

证明这些被 charge 的节点,可以被最优策略 (O) 的邻域覆盖,并且每个 (v\in O) 对应的 charge 总量不会太大。

因为 (O) 是最优策略探测的节点集合。

如果能证明:

$$\text{算法总 charge}
\leq
\left(
\frac{1}{\delta}(H(\Delta-1)+1)+1
\right)|O|$$

那就得到定理 5。

后面调和数:

$$H(\Delta-1)$$

就是从“一个最优节点 (v) 的邻域中,多个节点按揭示顺序被 charge,权重最多形成 ($1+\frac12+\frac13+\cdots$)”这种分析里来的。


串起来

整个定理 5 的来龙去脉是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
目标:
证明 Algorithm 1 的期望 probe 次数 ≤ 某个倍数 × 最优策略 probe 次数

难点:
算法是自适应的,不能直接比较 S 和 O

办法:
用 charging method 做记账

核心设计:
每次 probe 节点 v_i,真实代价为 1
把这个代价分摊给若干被揭示/被合并的节点

每个被收费节点收到 w(v_i)

为什么这样合理:
因为本轮被收费节点数量的期望 = 1 / w(v_i)
所以本轮期望总收费 = 1

为什么要不变式:
为了保证黑色分量合并时,每个黑色节点不会被重复收费
并保持每个黑色分量恰好一个未收费黑点

最终作用:
将算法总 probe cost 转化为所有节点收到的 charge 总和
再用最优策略 O 的邻域和调和数去上界总 charge

这样理解

第一,charge 是证明里的虚拟费用,不是算法真实操作。

第二,真实代价是每 probe 一个节点花费 1,作者把这个 1 分摊给被揭示的节点。

第三,每个节点收到的费用大小就是实时权重 (w_S(v))。

第四,维护不变式是为了处理黑色分量合并,避免黑色节点被重复收费,并保证最后可以统计总 charge。


直观理解

可以把 charging method 看成这样:

Algorithm 1 每次选择一个节点,是因为它能揭示白色节点或连接黑色分量。
那么这次 probe 的成本,就由这些“受益对象”来分摊。
如果一个节点收益大,它能分摊给更多对象,所以每个对象承担的费用 (w) 就小。
最后每个对象最多承担一次费用,于是总费用可控。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Theorem 5 的证明主要由 charging method、Claim 1 和 Claim 2 组成。
其中 charging method 的作用是将 Algorithm 1 每次 probe 节点产生的单位代价,
分摊到被揭示状态的节点或被合并的黑色连通分量中的节点上,
从而便于估计算法的总 probing cost。

在算法中,初始时除 root r 外,其余节点状态未知,可看作白色。
root r 被假设为 active,因此首先被 probe 并染成黑色。
之后,节点颜色随探测过程动态变化:白色表示状态未知,黑色表示被主动 probe 且 active,
灰色表示被黑色节点揭示为 active 但尚未主动 probe,inactive 节点则从当前图中移除。


charging method 分为三种情况。

第一种情况,若主动 probe 的节点 v 是白色且 active,则 v 加入 S 并变成黑色。
由于白色节点不可能邻接黑色节点,因此此时 v 不连接已有黑色连通分量,只形成一个新的黑色连通分量。
为了维护不变式“每个黑色连通分量中恰好有一个黑色节点未被 charge”,v 自身不被 charge;
而由 v 揭示出来的白色邻居收到 charge,charge 大小为 w_S(v)。这些白色邻居如果 active,
则变成灰色;如果 inactive,则被移除。灰色节点第一次变灰时被 charge,之后不会再次被 charge。

第二种情况,若主动 probe 的节点 v 是白色且 inactive,则它不能成为骨干节点,
也不能揭示邻居状态。因此只有 v 自身收到 charge,charge 大小为 w_S(v),随后 v 被移除。

第三种情况,若主动 probe 的节点 v 是灰色,则 v 已知 active,probe 后变成黑色,并可能连接多个已有黑色连通分量。
由于 v 在第一次变灰时已经被 charge 过,因此它本身不会作为未 charge 黑色节点保留下来。
假设 v 邻接 NCS(v) 个黑色连通分量,probe v 后这些分量会合并成一个大黑色分量。
为了维护不变式,需要从其中 NCS(v)-1 个黑色分量中各选择一个未 charge 的黑色节点进行 charge,
只留下一个黑色分量中的未 charge 黑色节点。这样合并后的大黑色分量仍然恰好有一个未 charge 黑色节点。


因此,charging method 的设计目的不是算法运行本身,而是为了理论分析:
每次 probe 的单位代价可以被分摊出去,同时通过不变式避免节点被重复 charge。
随后 Claim 1 进一步证明 Algorithm 1 的期望 probe 次数等于所有节点收到的期望 charge 总和;
Claim 2 则对最优策略 O 中每个节点闭邻域内的 charge 进行上界估计,最终得到 Theorem 5 的期望近似比。