最大フロー計算または他のアプリケーションのために、実際にリンクカットツリーは使用されていますか?


20

私がよく実装する多くの最大フローアルゴリズム、ダイニックのアルゴリズム、プッシュ再ラベルなどでは、動的ツリー(リンクカットツリーとも呼ばれます)を使用することで漸近的な時間コストを改善できます。

  • プッシュ再ラベルは、通常またはまたはますが、動的ツリーO V 3O V 2 O(V2E)O(V3)OVElogV2/EO(V2E)O(VElog(V2/E))
  • Dinicのアルゴリズムはで実行されますが、動的ツリーO V E log V O(V2E)O(VElog(V))

ただし、ほとんどのライブラリでのmax-flowアルゴリズムの実用的な実装では、このデータ構造を使用していないようです。ダイナミックツリーは、実際には最大フロー計算に使用されていますか?または、実際の問題のサイズに役立つにはオーバーヘッドが大きすぎますか?

リンクカットツリーが使用される他の問題ドメインはありますか?

この質問は、cstheoryで私が尋ねた質問に関連しています。最先端のMaximum Flowアルゴリズムは実用的ですか?


リンクカットツリーの概要/説明は「ネットワークフローなどのアプリケーションに役立つ」とのみ記載されています
-vzn

rezaが引用したタージャンサーベイから、基本的に線形時間アルゴリズムは、中程度の数の頂点/エッジに対して非常に良好/最適に機能し、その後、対数アルゴリズムが線形アルゴリズムよりも優れたしきい値/大きな頂点/エッジがあります。そのため、対数アクセスfnsは有用であり、非常に大きなグラフでは大幅に改善される可能性があります。
vzn

回答:


7

実際の実装をレビューする「Dynamic Trees in Practice」というタイトルの論文があります。

Link-Cutツリーを効率的に使用できる他のカテゴリは、データベースのインデックス作成です。これは、「Database Index Techniques」という本で見つけることができます。


これには多少の工夫が必要だと思います。ツリーは一般的にインデックスに役立ちますが、どのような条件下でツリーが変更されますか?
vzn

@vzn:B +ツリー、Rツリー、Hツリー、およびXツリーはいくつかの例です。
レザ

もちろん、しかし、これまでにDBインデックスでリンクカットツリーを使用しようとした人はいないと思われます。そのもっともらしいアプリが、それは彼らがDBのインデックス内で同じ操作に最適化されていることが明らかに思えるdoes notの。
vzn

5

最後に、この論文では、リンクカット(LC)ツリーが、標準のDimacsランダムグラフジェネレーターを使用したSleator / Tarjan max-flowアルゴリズムのrake-compress(RC)ツリーよりも優れていることを発見しました。

この論文は、動的ツリーの1つのアプリケーションとして、変更の伝播に焦点を当てています。たとえば、変更の伝播は、セル/式の依存関係に基づいて、一部のセルの変更についてExcelスプレッドシートセルを再計算する必要がある方法に似ています。著者はコードをオープンライブラリとしてリリースしました。

動的ツリーにおける変化伝播の実験的分析 Acar、Bellollch、Vittes

変更伝播は、アルゴリズムの出力を入力の変更に合わせて自動的に調整する手法です。変更伝播の背後にある考え方は、データと関数呼び出し間の依存関係を追跡することです。これにより、入力が変更された場合、その変更の影響を受ける関数を再実行して計算と出力を更新できます。変更の伝播により、コンパイラーは静的アルゴリズムを動的化できます。


ありがとうございました。動的なツリーを含むアルゴリズムのベンチマークを見るのは素晴らしいことです。
ロブラクラン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.