欲張りアルゴリズムとバック トラッキング アルゴリズムの両方を使用して、バック トレース アルゴリズムを実装しました。バック トラッキング アルゴリズムは次のとおりです。
MIS(G= (V,E): a graph): largest set of independent vertices
1:if|V|= 0
then return .
3:end if
if | V|= 1
then return V
end if
pick u ∈ V
Gout←G−{u}{remove u from V and E }
Gn ← G−{ u}−N(u){N(u) are the neighbors of u}
Sout ←MIS(Gout)
Sin←MIS(Gin)∪{u}
return maxsize(Sout,Sin){return Sin if there’s a tie — there’s a reason for this.
}
貪欲なアルゴリズムは、次数が最小のノードを繰り返し選択し、MIS に配置してから、そのノードとその隣接ノードを G から削除します。
エッジが存在する確率が 0.5 であるさまざまなグラフ サイズでアルゴリズムを実行した後、経験的に、バック トラッキング アルゴリズムは貪欲アルゴリズムよりも小さい最大独立集合を常に検出することがわかりました。これは期待されていますか?