Site cover image

Site icon imageSen(Qian)’s Memo

This website is Donglin Qian (Torin Sen)’s memo, especially about machine learning papers and competitive programming.

(講義ノート)乱択アルゴリズム第6回

前回は📄Arrow icon of a page link(講義ノート)乱択アルゴリズム第5回

グラフの枝数の推定

巨大すぎるグラフのは枝の数を推定することすら難しい。これをV|V|がわかっている状態で枝の数E|E|を推定したい。

ただし、道具として以下の質問に答えられる、絶対に正しい機械=オラクルがある。以下で言うランダムは、一様分布に従ってサンプリングという意味。

  • ランダムな頂点を教えてくれる。
  • 指定の頂点の次数を教えてくれる。
  • 指定の頂点のランダムな隣接頂点を教えてくれる。

平均次数をdˉ=vdv/n\bar{d} = \sum_v d_v / nと計算できるが、これは全部計算するともちろん2E/V2 |E| / |V|となる。このうまいこと平均次数を使いたい。

しかし、このまま仮定がなくd1,d_1, \cdotsがランダムならば何もできない。

例えば、次数が正であるので、分散をまず見てみる。XiX_iは次数を表す確率変数。

V[X]=E[X2]E[X]2=vdv2ndˉ2V[X] = \mathbb{E}[X^2] - \mathbb{E}[X] ^ 2 = \frac{\sum_v d_v^2}{n} - \bar{d}^2

何回サンプルすればいいのか、というのを考えたい。そこでE|E|のオーダーを落としたうえで推定できないと困る。

チェビシェフの不等式Pr[XE[X]kσ]1k2Pr[|X - \mathbb{E}[X]| \geq k \sigma] \leq \frac{1}{k^2}の別の形である以下の式?を使うと、

Image in a image block

右辺はさらにV[X]/E[X]2V[X]/\mathbb{E}[X]^2以下とkkを外した形にできる。これを代入して計算すると、1Evdv2d2\frac{1}{|E|} \frac{\sum_v d_v^2}{d^2}となるが、これはΩ(E)\Omega(|E|)なので、よくない。

悪さをしているのは外れ値で、分散が大きいとどうにもならない。何とか推定する頂点の分散を小さくしたい…!

じゃあ分散を大きくするような外れ値はそもそも推定しなければいい。気持ちとしては、次数が大きすぎる頂点の次数を推定せず、小さいものをちゃんと推定する。外れ値を取り除くと言える。

まず、did_iを降順にソートする。この補題は、次数が多いkk個の頂点の次数の和は、次数が低いものの総和と何かで抑えられるというもの

kk個の次数の多い頂点から出ている辺は、自分の中でクリークを作るのをのぞくとkk個以外の頂点へつながるし、それはi>kdi\sum _{i > k} d_iで評価できる。なので、右辺にはクリークを作る場合と考えたkC2{}_kC_2を入れれば上界となる。

kϵ[n],ikdii>kdi+kC2\forall k \in \epsilon [n], \sum_{i \leq k} d_i \leq \sum _{i > k} d_i + {}_kC_2

これを使うことで、以下のようにできる。

dˉ=ikdiE+i>kdiE1Ei>kdidˉ2ni>kdi+1nkC2\bar{d} = \frac{\sum_{i \leq k} d_i}{|E|} + \frac{\sum_{i > k} d_i}{|E|} \\ \frac{1}{|E|} \sum_{i > k} d_i \leq \bar{d} \leq \frac{2}{n} \sum_{i > k}d_i + \frac{1}{n} {}_kC_2

ここで、k=ϵndˉk = \sqrt{\epsilon n \bar{d}}と選ぶと、エラーϵdˉ\epsilon \bar{d}となるらしい。

ここで、Y=jtXjY = \sum_{j \leq t} X_jの解析を考える。

アルゴリズム

for i from 1 to t = O(\sqrt{n} / epsilon^2): 
	uを頂点集合Vからランダムにサンプリング。