最大クリーク問題つづき
グラフのDegeneracyをkとすると前処理後、おおまかで最大クリークが求まるな。
Degeneracyのページにしたがって、最大出次数を最小化するように、無向グラフを順序付け、辺を向き付けし、有向グラフに変換する。これは多項式時間でできる。
最大出次数をとする。
頂点が順序付けされたので、を始点とするクリーク集合というのが扱えるようになった。
頂点とその出力辺からなる隣接集合から誘導される部分グラフにを始点とするクリーク集合がすべて含まれる。
こののを除く頂点の組み合わせをすべて試せば、vを含むクリークの最大サイズがわかる。
は最小化されていて、n頂点すべてについて行うので、大まかでもとまる。
もうすこしアルゴリズムとして分解することにする。
頂点の冪集合のうち、特にサイズがのものをと書く。
をサイズkの頂点集合がクリークであればkを、そうでなければ-1を返すものとする。これは誘導部分グラフを作成し、頂点数と辺数から決めることができ多項式時間である。
をある頂点の出力辺から作成される隣接集合とすると、最大クリークをもとめるは下記のような形になる。
上記の式は下限、上限から挟み撃ちにしている。
となるときは、明らかにを始点とする最大クリークであり、次の頂点に移ればよい。最も内側のmax式が-1の時は、下でクリークが見つからないわけなので、そこまでに見つかった最大クリークサイズを返して、やはり次の頂点に移る。*1
判定式のほうはkを求めるクリークサイズとするとの小さいほうを使用する。これをとするとおおまか計算量はになる。
もちろんであれば解はない。
最悪のケースはのときで、例えばが50個あるようなグラフの補グラフだと思う。サイズ50のクリークが個あって、98正則グラフなので。正確に半分ではないけどイメージは伝わると思う。これは補グラフが連結ではないことが頂点数、辺数からわかるので状況に合わせて必要な処理を組み込むことで平均的な時間はもっと高速化できる。
おそらくこのアルゴリズムはZPPである。
まとめ
自分の理解ではおそらくNP困難問題である最大クリーク問題がPであり、NP完全問題であるk-クリーク問題がFPTになった。
もし違う観点があるとすれば、最大クリーク問題がのFPTで、k-クリーク問題がのFPTという感じ。
最大次数やk-core数なんてデータの入力長に依存しないのでPだと思っている。が、アルゴリズムで設定された幅とみれば、それは指数時間なのかもしれない。
その他
従来のFTPの議論では最大クリークや最大独立集合にFPTがないといわれていたが、次数から引くというとのが盲点だったのかなと思った。
ただ無向グラフでを含むクリークの最大を全部数えるでも、おそらくここに行きつくので最大次数は最小化できないという意味で有向グラフに変換するというが転換だったなのかなと思う。
(以下、全部 たぶん)
P≠NP予想は否定したとおもう。
#PもPである。P=NPであったので多項式階層はすべて潰れた
そしてP=ZPPである。P=ZPPからZPP≠EXPTIMEになる。
P=NPなのでETH, SETHも否定した。
参考 : NP困難 - Wikipedia
参考: #P - Wikipedia
参考: P≠NP予想 - Wikipedia
参考: 多項式階層 - Wikipedia
参考 : Fixed Parameter Algorithms Open lectures for PhD students in computer science
参考: ZPP - Wikipedia
*1:ただ、なんとなく中央まで行くのではなくて、3分の1進めたところで下限のほうのクリークの集合から2つ選んで最大クリークを探すほうが良い気がする。