高速ツリー幅アルゴリズム


18

グラフのツリー幅を計算したいと思います。サブグラフ同型のVF2など、他のNPハードグラフの問題には、たとえばigraphで使用可能なコードを使用して、本当に優れたヒューリスティックがあります。グラフで試してみましたが、データに対して非常に高速に動作します。

同様の方法でツリー幅を計算するための高速なアルゴリズムはありますか?


1
fyiは最近、FOCSのGaspers / SzeiderによってSATの硬度に接続されました。そのチャット/議論で他の人から話を聞くことを望んでいます
-vzn

回答:


19

私の知る限りでは、最新技術とは

Hans L. Bodlaender、Fedor V. Fomin、Arie MCA Koster、Dieter Kratsch、およびDimitrios M. Thilikos(2012)、「ツリー幅の正確なアルゴリズム」、ACM Transactions on Algorithms 9(1):A12、doi:10.1145 / 2390176.2390188

そこで説明されている方法には、実際に高速化するためのヒューリスティックな最適化を実装したアルゴリズムが実装されています。O2n


2
ありがとうございました。上限および下限のヒューリスティックを与える参考文献2、8、および15は、実際にはその論文から最も有用である可能性があります。
フェリックス

10

私はICTAI 2011で、ツリー幅の高速並列分岐およびバインドアルゴリズムという論文を書きました。マルチコアでツリー幅を計算できます。私は多くのヒューリスティックを使用し、プログラムの改良に多くの時間を費やしました。

私は中国のランダムな学部生でしたが、良い会議には参加しませんでした。しかし、私の実験結果に基づいて、私のプログラムは非常に高速だと思います。Treewidth libで未解決の多くのベンチマークを解決しました。私のプログラムは、IJCAI 09でZhouとHansenが提案したアルゴリズムよりも40倍高速でした。

私はもうこのトピックに取り組んでいません。しかし、私の以前の仕事が役立つ場合は、http://www.callowbird.com/undergraduate-stuff.htmlから私のプログラム(srcおよびexe)をダウンロードして、試してみることができます。(それでも、少し大きいインスタンスでは非常に遅いです)


5

O2k


1
2OkOcknc

5

役に立つかもしれない木幅を計算するためのアルゴリズムに関する2つの調査はここにあります。最初のものには経験的な比較があり、Javaライブラリーとして実装されたその他のアルゴリズムがあります。

グラフの上限、下限、または正確なツリー幅を計算するアルゴリズムは多数あります。多くの上限および下限のヒューリスティックと2つの厳密なアルゴリズム(動的プログラミングと分岐とバインドのアルゴリズム)を実装しました。このレポートでは、異なる種類のアルゴリズムを比較し、一部のアルゴリズムが優先されることを示しています。

ツリー幅は、いくつかの興味深い理論的および実用的なアプリケーションのグラフパラメーターです。この調査では、特定のグラフのツリー幅を決定し、小さな幅のツリー分解を見つけるアルゴリズムの結果を確認します。問題の漸近的な計算の複雑さを確立する両方の理論的結果、ヒューリスティックス(実験の上限と下限の両方)、前処理、正確なアルゴリズム、および後処理の作業について説明します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.