Estimate Size of Transitive Closure

PCP的那個坑先繼續咕一段時間,今天給大家介紹一下最近學到的一個很有意思的問題。 本文的idea來自Ilya Razenshteyn, 基於Cohen 94。

一個有向圖G=(V,E)。我們把能夠從點v到達的點的集合叫做點v的傳遞閉包,記作R_v。現在我們想知道這個圖G每個點的傳遞閉包的大小。對於這個問題的確定性演算法,最好的已知複雜度是mathcal O(min(|V||E|), |V|^{2.38}))

然而如果我們允許隨機和近似的話,我們能夠做到近乎線性:通過mathcal Oleft(frac{mlog^2 n}{epsilon^2}
ight)的時間複雜度,對於每個點vin V,我們可以得到R_v的近似R_v使得(1-epsilon)R_v <R_v < (1+epsilon)R_v

演算法

首先我們對每一個點v, 我們隨機從指數分佈給它賦值X_v, 使得X_vsim	ext{Exp}(1), 並且反轉原圖所有邊的方向。然後,對於所有的X_v, 我們從小到大的取出,從點v開始進行BFS,對於被BFS到的點u,我們標記Y_u = X_v,然後刪除所有訪問過的點。直到所有點都被訪問過恰好一次。

我們可以證明,mathbb E[Y_v] = 1/|R_v|

我們每次都是在選出最小的X_v然後標記v在反向圖裡面能到達的所有點,所以Y_v的定義等價於Y_v=min_{uin R_v} X_u.

指數分佈的最小值

定理1: 如果我們有n個指數分佈的隨機變數X_1sim 	ext{Exp}(lambda_1), X_2sim 	ext{Exp}(lambda_2), ldots,X_nsim 	ext{Exp}(lambda_n),那麼min{X_1,X_2,ldots, X_n} sim 	ext{Exp}(lambda_1+lambda_2+ldots+lambda_n)

證明: 我們考慮指數分佈的cdf的補集:我們知道如果Xsim 	ext{Exp}(lambda),那麼Pr[X > t] = exp(lambda t)我們計算最小值的cdf的補集egin{align*} Pr(min{X_1,ldots, X_n} > t) &= Pr(X_1 > t, X_2 > t, ldots, X_n > t) \ &= prod_{i=1}^n exp(-lambda_i t) \ &=expleft(sum_{i=1}^n lambda_i t<br />
ight) end{align*}

所以min{X_1,X_2,ldots, X_n} sim 	ext{Exp}(lambda_1+lambda_2+ldots+lambda_n)

這個告訴我們了mathbb E[Y_v] = mathbb E[min_{uin R_v} X_u] = mathbb E[	ext{Exp(|R_v|)}] = 1/|R_v|.

我們知道了1/Y_v是對|R_v|一個很好的估計(Estimator),那麼我們需要多少個Y_v的樣本,才能很好的估計出|R_v|呢?

Median Trick

事實上,我們只需要Oleft(frac{log 1/delta}{epsilon^2}
ight)個樣本就有很高的概率(1-delta)得到1pmepsilon的估計。

證明:

首先假設我們我們有kY_v的樣本,標記為Z_1,Z_2,ldots, Z_k,然後我們取他們的平均值ar Z = mu = sum Z_i/k。很顯然,此處mathbb E[ar Z] = 1/|R_v|。 為了使用切比雪夫不等式,我們計算它的方差:

egin{align*} 	ext{Var}(ar{Z}) &= 	ext{Var}left(sum_{i=1}^k frac{Z_i}{k}
ight) \ &=frac{1}{k^2}	ext{Var}(sum_{i=1}^k Z_i) \ &=frac{1}{k^2} cdot k cdot frac{1}{{|R_v|}^2} \ &=frac{1}{k{|R_v|}^2}\ &=frac{mu^2}{k} end{align*}

同時,我們注意到,當epsilon < 0.1的時候,如果得到了1/|R_v|誤差在0.5epsilon的估計,那麼|R_v|的誤差範圍在epsilon內。

切比學夫不等式告訴我們,

egin{align*} Pr[|{ar{Z} -mu}| leq 0.5epsilon mu] &geq 1-frac{mu^2}{0.25k epsilon^2 mu^2} \ &=1-frac{1}{0.25kepsilon^2} end{align*}

我們讓k= frac{4}{epsilon^2}, 我們有大於0.9的概率得到一個1pm epsilon的估計。顯然這個是不夠高的 (考慮到我們後面需要使用union bound),為了得到更高的概率,我們使用median trick來繼續提高成功的概率。

假設我們把上面的過程獨立地重複ell次,把這ell次的結果標做R_1,ldots, R_ell。我們觀察到:如果有一半以上的結果滿足條件,那麼這些數的中位數也滿足條件。

我們定義H_i := ??[{R_i in ((1-epsilon){|R_v|}, (1+epsilon){|R_v|})}].

因為Pr[H_i] geq 0.9,所以mathbb E[sum_{i=1}^ell H_i] = ellcdot sum_{i=1}^ell mathbb E[H_i] geq 0.9l.

然後我們使用Hoeffding不等式:Prleft[sum_{i=1}^ell H_i leq frac{ell}{2}
ight] leq Prleft[sum_{i=1}^ell H_i - mathbb Eleft[sum_{i=1}^ell H_i 
ight] > frac{ell}{4}<br />
ight]leq e^{-ell/8}.

要讓e^{-ell/8} leq delta, 我們只需要讓ell = mathcal O(log 1/delta)。所以我們一共需要ell cdot k=mathcal Oleft(frac{log 1/delta}{epsilon^2}
ight)個樣本。

總結

根據布爾不等式(Union bound), 我們每次都成功的概率大於ncdot delta, 要讓這個概率大於0.9的話,那麼delta leq 1/n,所以我們把原圖複製O(log(1/delta)/epsilon^2)次,然後獨立的運行最開始的演算法,我們就有很高的概率得到原圖的1pmepsilon估計。 總的運行時間是:mathcal Oleft(frac{1}{epsilon^2} cdot mlog^2 n 
ight).


推薦閱讀:
查看原文 >>
相關文章