リンクカットツリーの初期化時間はどれくらいですか?


8

リンクカットツリーは、SleatorとTarjanによって発明されたデータ構造であり、時間におけるノードフォレストでのさまざまな操作とクエリをサポートし。(たとえば、オペレーションリンクはフォレスト内の2つのツリーを1つに結合し、オペレーションカットはフォレスト内のツリーを2つのツリーに分割します。)O log n nO(logn)

リンクカットツリーを使用することでいくつかのアプリケーションが知られています。ここでは特にノードの平面グラフが与えられるとノードがサブグラフである対応するバイナリツリーとその子が得られるグッドリッチのセパレーター分解に興味があります。ノードのサブグラフであるのセパレータで割っ。このような分解は時間で簡単に構築できます(セパレーターは時間で見つけることができるため、セパレーターはレベルの分離後にグラフをバランスよく分割するため、ツリーの葉のサイズはG G H H H O n log n O n O log n O 1 nGGHHHO(nlogn)O(n)O(logn)O(1))。Goodrichの主な貢献は、各レベルでセパレーターを見つけるために使用されるデータ構造を維持および再利用することにより、時間でそのような分解を構築できることです。O(n)

構築で使用されているデータ構造の1つは、確かにリンクカットツリーです。Goodrichによる論文の 7ページで、リンクカットツリーの初期化は時間で実行できると彼は主張しました。そこに引用されているすべての論文を調べていますが、操作linkを使用してリンクカットツリーを作成すると、合計で時間がかかるようです。O(n)O(nlogn)

何か誤解していますか?リンクカットツリーの初期化は時間ますか?O(n)

回答:


6

次の解決策を提供してくれた国立台湾大学の先生であるHsueh-I Luに感謝します。

答えはかなり単純です。データ構造の初期化では、サポートするクエリと操作によって構造を構築する必要はありません。もちろん、リンク操作でツリーを構築する場合のように、構築中にクエリを実行することはできません。しかし、このセパレーター分解アプリケーションでは、それは必要ありません。

つまり、セパレータ分解への適用において、ツリーL(Tの構造と値を計算する代わりに、入力グラフG上のスパニングツリーTのリンクカットツリーL(T)を構築する必要がある場合)リンク操作により、ツリーTの重いパスの分解を直接計算し、各パスに対応するバイナリツリー構造を構築し、パスの分解に従ってバイナリツリーを接着します。すべてのステップは線形時間で実行できます。

L(T)のノードの必要な値ごとに、バイナリツリー構造に値を割り当ててツリーを接着するときに更新するのではなく、各値を線形時間でTから計算できるため、事前計算された値を割り当てます最終リンクカットツリーL(T)のノードに直接。割り当てる必要があるのは定数タイプの値のみであり、これも線形時間で行うことができます。


0

「データ構造とネットワークアルゴリズム」の第5.1章。あなたが引用した論文の43は、それが答えを持つかもしれないようです:

http://books.google.com/books?id=JiC7mIqg-X4C&lpg=PP1&ots=8frbjj8vL0&dq=data%20structures%20and%20network%20algorithms&pg=PA59#v=onepage&q&f=false

...この問題の説明では、「m」を使用して操作の数を示し、「n」を使用して頂点の数(maketree操作)を示します。この問題を解決する1つの方法は、各頂点にその親とそのコストを格納することです。この表現では、各maketree、link、またはcut操作にはO(1)時間かかり、各findroot、findcost、またはaddcost操作には入力頂点の深さ(O(n)...)に比例して時間がかかります...

プレビューでは、さらにいくつかの連続したページを利用できます。


この章は、リンクカットされたツリーペーパー自体によく似ています。citeseerx.ist.psu.edu/viewdoc/…の
Hsien-Chih Chang張學之

OOログ

私はこの主張を裏付ける他の情報を見つけることができなかったので、それらはどちらかであるに違いないと思う この「素朴な」構成を参照する(おそらく誤って)、b。新しい1ノードツリーを単純に初期化する「make_tree」操作、またはc。2つを融合します。そうでなければ、追加の証拠を除いて、私はあなたが正しいと思う傾向があります。
s8soj3o289 2010年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.