5

ベイジアンネットワークでの信念伝播のためのジャンクションツリーアルゴリズムの実装をいじっています。ジャンクション ツリーを形成できるように、グラフを三角測量するのに少し苦労しています。

最適な三角形分割を見つけることが NP 完全であることは理解していますが、比較的単純なベイジアン ネットワークに対して「十分な」三角形分割をもたらす汎用アルゴリズムを教えていただけますか?

これは学習課題 (趣味であり、宿題ではありません) であるため、無向グラフが与えられた場合にアルゴリズムが三角グラフになる限り、空間/時間の複雑さはあまり気にしません。最終的には、何らかの近似を試みる前に、正確な推論アルゴリズムがどのように機能するかを理解しようとしています。

私は NetworkX を使用して Python をいじっていますが、典型的なグラフ トラバーサルの用語を使用したそのようなアルゴリズムの疑似コードの記述は価値があります。

ありがとう!

4

1 に答える 1

3

Xi が削除される可能性のある変数 (ノード) である場合、

  • S(i) は、この変数を削除することによって作成されるクリークのサイズになります
  • C(i) は、Xi とその隣接ノードによって与えられるサブグラフのクリークのサイズの合計になります。

ヒューリスティック:

いずれの場合も、最小の S(i)/C(i) で削除される可能性のある変数のセットの中から変数 Xi を選択します。

参考:グラフの三角測量のための発見的アルゴリズム

于 2010-10-07T00:55:19.990 に答える