与えられたグラフG=(V,E)に含まれる最大クリークを求めよという問題はKarp's 21 Complete Problemの一つであり, おそらく最も有名なNP困難な問題の一つとして知られています. 本記事ではこの問題の平均時困難性について考えます. すなわち, 与えられたグラフがErdos-RenyiランダムグラフG(n,1/2)のときの最大クリーク(を見つける問題)について紹介し, 関連問題として埋め込みクリーク問題を紹介します.
ランダムグラフ上の最大クリーク問題
Erdős--RényiグラフG(n,1/2)を考えます. このグラフはn個の頂点からなり, 各頂点のペアは独立に確率1/2で辺を持ちます. 言い換えれば, n頂点の頂点ラベル付きグラフの中から一様ランダムに選ばれたグラフがG(n,1/2)です. このように, 入力がランダムに生成された時に問題が効率的に解けるかどうかを議論する枠組みを平均時計算量といいます.
最大クリーク問題に戻りましょう. Erdős--RényiグラフG(n,1/2)は高確率でおよそサイズ2\log_2 nのクリークを持つことが示せます. ここでは厳密な証明はしませんが, なぜ2\log_2 nという値が出るかについて, k-クリークの個数の期待値を使って簡単に説明します. グラフG(n,1/2)に含まれるk-クリークの個数をX_kとします. X_k>0ならば最大クリークのサイズはk以上であり, X_k=0ならばk未満となります. 頂点部分集合S\subseteq[n]に対し, SがクリークであるかどうかのindicatorをX_Sとします. すなわちSがG(n,1/2)内でクリークになっているならばX_S=1, そうでなければX_S=0です. 固定したSに対してX_S=1となる確率は(1/2)^{\binom{|S|}{2}}です. さて, X_k = \sum_{S\subseteq[n],|S|=k} X_S と書けます. 期待値の線形性より, X_kの期待値は
\begin{align*} \mathbb{E}[X_k] &= \sum_{S\subseteq[n],|S|=k} \Pr[X_S=1] \\ &= \binom{n}{k}\cdot 2^{-\binom{k}{2}} \\ &\approx \frac{n^k}{k!} 2^{-k^2/2} \\ &\approx 2^{-k\log_2 n - k^2/2} \\ &\approx 2^{-k(\log_2 n - k/2)} \end{align*}
となります. 途中で突然k!が消えたのは, k!=2^{(1-o(1))\cdot k\log k}は2^{-\binom{k}{2}}に比べて無視できるほど小さいからです. k\gg \log_2 nならば指数部が負となりX_kの期待値は非常に0に近い値となります. k\ll \log_2 nならば期待値は非常に大きい値となるので, G(n,1/2)はk-クリークを含むだろうことがわかります. 前半の議論(非存在性)はMarkovの不等式, 後半の議論(存在性)はChebyshevの不等式を使うと厳密な議論にできます. 詳しく知りたい方はこちらの記事を参照してください.
すなわち, 入力がG(n,1/2)だと最大クリークのサイズはおよそ2\log_2 nであることがわかります. では, この2\log_2 n-クリークを見つけられるでしょうか?
成功確率の枠組み
そもそも「ランダムグラフ上で問題を解く」とはどういうことなのでしょうか?
最悪時計算量の枠組みでは, 「全ての入力に対して正しい答えを出力する」効率的なアルゴリズムの構成が焦点になっていました. 一方で平均時計算量では「全ての入力に対して」という部分を「多くの入力に対して」に緩和した枠組みを考えます. 本当はerrorless/error-proneの二つの概念があるのですが, ここではerror-proneの枠組みを考えます.
\begin{align*} \Pr_{G \sim G(n,1/2)} [ A(G) \text{ outputs a maximum clique in }G]\ge \gamma. \end{align*}
直感的に言えば成功確率とはアルゴリズムAが解く(固定サイズの)入力の割合を意味します. 平均時計算量の理論では, 効率的(例えば多項式時間)なアルゴリズムの中で最大の成功確率\gammaをもつものが研究の対象となります.
入力によって解けるか解けないかが決まるので, 乱択アルゴリズムのように 「繰り返して成功確率を増幅させる」ことはできない. |
例えば, 成功確率\gamma=1のアルゴリズムは最悪時の意味において最大クリーク問題を解くことを意味します. これはNP困難なので, \gamma=1を満たす多項式時間アルゴリズムは存在しないと広く信じられています. 従って\gamma<1の範囲で考えます. この記事では確率1-o(1)を「高確率」と呼ぶことにします(注1).
上の定義では誤った答えを出力しうるものの常に多項式時間で終了するアルゴリズムを考えていました. このようにアルゴリズムの「誤りうる」という性質をerror-proneと言います. 一方で, 常に正しい答えを出力するが入力によっては指数時間かかりうるという性質をerrorlessといいます. 乱択アルゴリズムの文脈で例えるとラスヴェガス法か, モンテカルロ法かという話です.
最悪時と平均時のギャップ
さて, G(n,1/2)上での最大クリーク問題に話を戻しましょう. 証明はしませんが, G(n,1/2)は確率1-n^{-\Omega(\log n)}で最大クリークのサイズが高々2.01\log_2 nであることが証明できます. 従って, サイズ2.01\log_2 n以下の頂点部分集合S \subseteq [n] を全て列挙し, クリークをなしたSの中で最大のものを出力すると, n^{O(\log n)}時間で成功確率1-n^{-\Omega(\log n)}でG(n,1/2)上で最大クリークを解けます.
最悪時の世界では最大クリーク問題はETH(強指数時間仮説)の下では2^{\Omega(n)}時間かかると予想されていますが, 平均時の世界では単純なbrute-forceを考えればn^{O(\log n)}時間で高確率で解くことができます.
貪欲法
最大クリーク問題に対する最も単純なアプローチが貪欲法です. 何でも良いので極大クリークを一つ選び, 出力するというアルゴリズムです. 例えばクリークに追加できる頂点のうち, インデックスが一番若い頂点を選んで追加するというルールを考えてみましょう.
すなわち, 貪欲法は"ほぼ2近似"アルゴリズムであるといえます. 最悪時の世界では, 任意の小さな定数c>0に対して最大クリークを多項式時間でn^{1-c}近似するのはNP困難であることが知られているので, この定理もまた最悪時と平均時の世界のギャップを意味します.
証明(の概要).
貪欲法のt回目の反復で得られる頂点部分集合をS_tとします. すなわち, S_0=\emptysetであり, S_{t+1}はS_t\cup \{u\}がクリークになるような頂点uのうち最もインデックスが若いものとします (例えば一番最初に追加される頂点は必然的に最もインデックスの若いv_1になります). S_tの要素数はtなので, 貪欲法が終了したときのステップ数tの上下界を求めればよいことになります.
この「若い頂点を優先する」貪欲法は, 頂点をv_1,\dots,v_nの順に見ていき初めて追加できる頂点を見つけたらそれを追加するというように実装することができます. この実装では, 例えば時刻tで頂点v_iが追加されたとすると, その反復までにアルゴリズムは以降の頂点v_{i+1},\dots,v_nを見ていないことになります (もちろんこれは実装依存ですが, v_{i+1},\dots,v_nを見ないように実装したものと同じ出力を得るので, 見ていないということを仮定できます). すなわち, この反復までの挙動は誘導部分グラフG[\{v_1,\dots,v_i\}]にのみ依存するのであって, v_{i+1},\dots,v_nに接続する辺の情報とは独立です. ですので, 頂点v_{i+1}を見たとき, その時初めて辺\{v_{i+1},v_j\} (j=1,\dots,n\}) に関する入力の情報をサンプルする (つまり, 入力を生成→アルゴリズムの解析, ではなく, アルゴリズムの反復に応じて入力を徐々に生成していく) という確率過程によってアルゴリズムの振る舞いを解析ができます.
時刻tにおける反復においてS_tの要素数はtであり, S_tの全ての頂点と隣接している頂点が新たにS_{t+1}に加わるわけですが, 固定した頂点v_jが追加される確率は(1/2)^tです. 従って, 任意の定数c>0に対しt\ge (1+c)\log_2 nならば, v_j \in [n]に関するunion boundより一つも頂点が追加されないので, t \le (1+c)\log_2 nを得ます. 逆に, t<(1-c)\log_2 nならばこの確率はn^{-1+c}となり, 追加できる頂点の個数の期待値はおよそn^cで非常に大きいので, そのような頂点は高確率で存在することになります.v_jはS_tの全ての頂点と隣接していればクリークに追加できる. |
衝撃的なことに, 本質的に貪欲法より良い多項式時間アルゴリズムはいまだに知られていません (それどころか存在しないと予想されています). 具体的には, 以下の主張が正しいかどうかは非常に重要な未解決問題です.
ある定数\varepsilon>0と多項式時間アルゴリズムが存在して, G(n,1/2)上で(1+\varepsilon)\log_2 n-クリークを確率2/3で見つける.
埋め込みクリーク問題
Erdős--RényiグラフG(n,1/2)上の最大クリーク問題の変種として, k-クリークが埋め込まれたランダムグラフからk-クリークを復元する問題を考えます. 具体的には, 入力として次の操作によって得られるランダムグラフG(n,k,1/2)が与えられます:
- Erdős–Rényiグラフ G(n,1/2)を生成する, ランダムにk個の頂点v_1,\dots,v_kを選び, C=\{v_1,\dots,v_k\}とする.
- 各1\leq i<j\leq kに対して辺\{v_i,v_j\}を追加してCをクリークにする (元々\{v_i,v_j\}が辺をなす場合は追加しない).
\begin{align*} \Pr_{G \sim G(n,k,1/2)} [ A(G,k) \text{ outputs the planted $k$-clique $C$ in }G]\ge \gamma. \end{align*}
情報理論と計算量理論のギャップ
\begin{align*} \Pr[\exists v\not\in C,\deg(v) > n/2 + \sqrt{n\log n}] \le n\cdot \exp(-2\log n) \le n^{-1} \end{align*}
Appendix. 埋め込みクリークの一意性
\begin{align*} \mathbb{E} = \sum_{C'\in \binom{V}{k},C'\neq C} \Pr[C'\text{ is a $k$-clique}] \end{align*}
\begin{align*} \mathbb{E}[X] &= \sum_{t=0}^{k-1} \binom{k}{t}\binom{n-k}{k-t}\cdot 2^{-\binom{k}{2} + \binom{t}{2}} \\ &\le \sum_{t=0}^{k-1} \left(kn 2^{-k/2}\right)^{k-t} \\ &\le kn 2^{-k/2} \cdot \sum_{t=0}^\infty (1/2)^t \\ &\le 2kn 2^{-k/2} \end{align*}
を得ます.