Such physical matters were nice, yet, to him, intelligence and passion born of living, the ability to move and be moved by subtleties of the mind and spirit, were what really counted.

# 图的连通分量

问题:给定一个无向图G=(V,E)G=(V,E),试求他的连通分量个数。若输入形式是邻接矩阵,那么能做到多好的复杂度?

我们考虑记nun_u 为顶点uu 所在连通分量中点的个数。那么对于任意一个连通分量AA,都有:

uA1nu=uA1A=1\sum_{u\in A}\frac{1}{n_u}=\sum_{u\in A}\frac{1}{|A|}=1

那么对于整个图,有:

uV1nu=AVuA1nu=AV1=c\sum_{u\in V}\frac{1}{n_u}=\sum_{A\subseteq V}\sum_{u\in A}\frac{1}{n_u}=\sum_{A\subseteq V}1=c

其中,cc 就是连通分量的个数。

这看起来彷佛并没有简化问题,但是实际上我们有更有效的方式去估计1nu\frac{1}{n_u}。令:

nu^=min(nu,2ε)c^=uV1nu^\begin{aligned} &\widehat{n_u}=\min(n_u,\frac{2}{\varepsilon})\\ &\widehat{c}=\sum_{u\in V}\frac{1}{\widehat{n_u}} \end{aligned}

很显然,求nu^\widehat{n_u} 时,并不需要像求nun_u 一样最差可能把整个图遍历一遍。而最多遍历2ε\frac{2}{\varepsilon} 个点。所以求nu^\widehat{n_u} 的时间复杂度为O(dε)O(\frac{d}{\varepsilon}),其中dd 表示图中点最大的度数。

下面我们证明,nu^\widehat{n_u}nun_u 的一个很好的估计。

对于每个uVu\in V,我们有1nu^1nuε2\left | \frac{1}{\widehat{n_u}}-\frac{1}{n_u}\right |\leq\frac{\varepsilon}{2}。因此也就有c^cεn2|\hat{c}-c|\leq\frac{\varepsilon n}{2}

证明:

  • nu<2εn_u<\frac{2}{\varepsilon},则nu^=nu\widehat{n_u}=n_u,误差为 0。

  • 否则,就有:

    0<1nuε2=1nu^0<\frac{1}{n_u}\leq\frac{\varepsilon}{2}=\frac{1}{\widehat{n_u}}

    1nu\frac{1}{n_u}1nu^\frac{1}{\widehat{n_u}} 都在(0,ε2](0,\frac{\varepsilon}{2}] 中,误差也不会超过这个上限。\square.


对此我们仍不满意,我们不想遍历uVu\in V 去求解uV1nu^\sum_{u\in V}\frac{1}{\widehat{n_u}}。我们选择独立地、均匀随机地从VV 中选出rr 个顶点u1,...,uru_1,...,u_r,然后我们输出:

c~=n(1ri=1r1nui^)\tilde{c}=n\cdot\left (\frac{1}{r}\sum_{i=1}^r\frac{1}{\widehat{n_{u_i}}}\right )

作为uu 的估计。

这样做为什么对呢?我们需要用到 Chernoff Bound

Theorem(Chernoff Bound):令δ[0,1]\delta\in[0,1]。若X1,..,XrX_1,..,X_r[0,1][0,1] 上的独立同分布的随机变量,令E[X1]=...=E[Xr]=p\mathbb{E}[X_1]=...=\mathbb{E}[X_r]=pS=1ri=1rXiS=\frac{1}{r}\sum_{i=1}^rX_i,那么:

Pr[Spδp]eΩ(rpδ2)\text{Pr}[|S-p|\geq\delta p]\leq e^{-\Omega(rp\delta^2)}

上述定理说明的是,随着E[Xi]=p\mathbb{E}[X_i]=p 的缩小,随着误差范围δ\delta 的增大,以及随着采样次数的增加,平均值偏离期望超过允许误差的概率会指数级缩减。

于是我们令X1,...,XrX_1,...,X_r 是随机取一个点uu 后,对应1nu^\frac{1}{\widehat{n_{u}}}。那么有:

p=E[Xi]=uV1n1nu^=c^np=\mathbb{E}[X_i]=\sum_{u\in V}\frac{1}{n}\cdot\frac{1}{\widehat{n_u}}=\frac{\widehat{c}}{n}

δ=ε2\delta=\frac{\varepsilon}{2}S=1ri=1r1nui^S=\frac{1}{r}\sum_{i=1}^r\frac{1}{\widehat{n_{u_i}}}c~=nS\tilde{c}=n\cdot S。因为ε21nu^1\frac{\varepsilon}{2}\leq\frac{1}{\widehat{n_u}}\leq 1,所以:

εn2c^nε2c^n=01\frac{\varepsilon n}{2}\leq\widehat{c}\leq n\Rightarrow \frac{\varepsilon}{2}\leq\frac{\widehat{c}}{n}=0\leq 1

所以我们可以推导c~\tilde{c}c^\widehat{c} 的误差。令r=bε3r=\frac{b}{\varepsilon^3} 是我们采样的个数,bb 是一个常数:

Pr[c~c^εc^2]=Pr[c~nc^nεc^2n]=Pr[c~nc^nδp]exp(Ω(bε3pδ2))=exp(Ω(bε3c^n(ε2)2))exp(Ω(bε3ε2(ε2)2))=exp(Ω(b8))\begin{aligned} \text{Pr}\left [ |\tilde{c}-\widehat{c}|\geq \frac{\varepsilon\widehat{c}}{2}\right ] &=\text{Pr}\left [ \left |\frac{\tilde{c}}{n}-\frac{\widehat{c}}{n}\right |\geq \frac{\varepsilon\widehat{c}}{2n}\right ]\\ &=\text{Pr}\left [ \left |\frac{\tilde{c}}{n}-\frac{\widehat{c}}{n}\right |\geq \delta p\right ]\\ &\leq \text{exp}\left ( -\Omega\left(\frac{b}{\varepsilon^3}p\delta^2\right)\right )\\ &=\text{exp}\left(-\Omega\left(\frac{b}{\varepsilon^3}\cdot\frac{\widehat{c}}{n}\cdot\left(\frac{\varepsilon}{2}\right)^2\right)\right)\\ &\leq\text{exp}\left(-\Omega\left(\frac{b}{\varepsilon^3}\cdot\frac{\varepsilon}{2}\cdot\left(\frac{\varepsilon}{2}\right)^2\right)\right)\\ &=\text{exp}\left(-\Omega\left(\frac{b}{8}\right)\right) \end{aligned}

所以我们如果设置bb 足够大,我们可以得到一个常数概率成果(譬如 0.99)使得:

c~cc~c^+c^cεc^2+εn2εn\begin{aligned} |\tilde{c}-c|&\leq|\tilde{c}-\hat{c}|+|\hat{c}-c|\\ &\leq\frac{\varepsilon\hat{c}}{2}+\frac{\varepsilon n}{2}\\ &\leq \varepsilon n \end{aligned}

结合上述说明,上述采样、估计算法给出一了一个εn\varepsilon n-approximation 图的连通分量数。所以时间复杂度为O(rdε)=O(bdε4)O(r\cdot\frac{d}{\varepsilon})=O(\frac{bd}{\varepsilon^4})

因此我们得到结论:

G=(V,E)G=(V,E) 是一个图,它的顶点中最大的度数为dd。令ε,β(0,1)\varepsilon,\beta\in(0,1) 是参数。令C(G)C(G) 表示GG 的连通分量个数,那么存在一个随机算法可以以1β1-\beta 的概率输出一个C^(G)\widehat{C}(G) 满足:

C(G)εVC^(G)C(G)+εVC(G)-\varepsilon|V|\leq\widehat{C}(G)\leq C(G)+\varepsilon|V|

若输入是邻接矩阵,那么算法的时间复杂度为O(ε4dlog(1/β))O(\varepsilon^{-4}d\log(1/\beta))

# 估计红球比例

1

2

3