最大カット問題
概要
最大カット問題 (MAX-CUT)は、あるグラフのノードを二つのグループに分ける場合に、エッジを切る数(エッジに重みがある場合は切るエッジの重みの総和)が最大となる分け方を求めるという問題です。 グラフに関する典型的な最適化問題で画像処理や通信網・交通網などのネットワーク計画などに応用されます。
上図のグラフの場合、Aの場合がカット数=5となり最大となります。 Bの場合はカット数=2で最小であり、これを求める最小カット問題 (MIN-CUT)も存在します。
定式化
グラフにおいて、各エッジに重みがあるとします。このとき、
を最大にするを求めるのが最大カット問題です。
アニーリングマシンで解くためにこれをイジングモデルの形式で定式化します。
まず、分割したときにノードがどちらの部分集合に属するかを表す変数を定義します。
まず、分割したときにノードがどちらの部分集合に属するかを表す変数を定義します。
このとき、カット値(切るエッジの重みの総和)は以下の式で表すことができます。
一般にアニーリングマシンはエネルギー関数の最小値を探索するため、最大化問題はを掛けて最小化問題にすることで解くことができます。したがって、アニーリングマシンに入力するイジングモデルのエネルギー関数は以下のようになります。
シミュレーション
ここでは最大カット問題をアニーリングで解くシミュレーションを体験できます。
問題データ
シミュレーションのサンプルとして、最適解が自明である2-正則グラフを用います。
すべてのノードの次数(ノードに接続するエッジの数)が等しいグラフです。 ノードの次数がの正則グラフを 「-正則グラフ」と呼びます。
2-正則グラフの場合、隣接するノードが異なるグループに属するように分割したときカット数が最大となるという特徴があり、 最大カット数は でノード数と等しくなります。
2-正則グラフの場合、隣接するノードが異なるグループに属するように分割したときカット数が最大となるという特徴があり、 最大カット数は でノード数と等しくなります。
実行
ノード数とステップ数を可変として実行してみます。グラフ上の赤い直線が最適解(=ノード数)となります。
ノード数
ステップ数