無向グラフが与えられたとき、最大位数の完全部分グラフを求める問題 最大クリーク問題 無向グラフが与えられたとき、最大位数の完全部分グラフを求める問題
最大クリーク問題とは? 無向グラフG=(V,E)が与えられたとき、ノード(点)の部分集合C(⊆V)は、Cによって導かれた部分グラフが完全なときクリークと呼ばれる(完全グラフとは、すべてのノードの間にアークがあるグラフである)。クリークに含まれるノードの数|C|が最大になるクリークを求めよ。
アルゴリズム 評価値(S)=Sに含まれるアークの数 1)適当なノードの部分集合Sからはじめる。 2)以下の操作を時間が尽きるまで繰り返す。 a)Sによって導かれたグラフが完全ならば、Sに含まれないノードiで評価値(S∪{i})が最大のものをSに加える。このとき、追加したノードはしばらく削除しないように設定する。 b)Sによって導かれたグラフが完全でないならば、Sに含まれるノードiで評価値(S-{i})が最大のものをSから除く。このとき、削除したノードはしばらく追加しないように設定する。
2 2 2 2
3 1 3 3 4 1 3 しばらく削除しない
2 1 1 2 1 1
3 4 1 2 4 1
3 2 2 2