タグ付けされた質問 「tree」

ツリーは特別なタイプのグラフであり、ツリーに類似したエッジの階層セットのみを許可します。数学的には、それは実際には樹枝状です。ツリーには、ルートノードと子ノードがあります。正式には、非循環接続グラフとして記述されます。

6
ツリーのセットのデータ構造。
トライにより、要素のリストを効率的に保存できます。接頭辞は共有されるため、スペース効率が高くなります。 木を効率的に保管するための同様の方法を探しています。特定のツリーがいくつかの格納されたツリーのサブツリーであるかどうか、または特定のツリーのサブツリーである格納されたツリーが存在するかどうかを知って、メンバーシップをチェックして要素を追加できるようにしたいと思います。 私は通常、高さが50未満の約500の不平衡バイナリツリーを格納します。 編集 私のアプリケーションは、ある種のメモを使用したある種のモデルチェッカーです。私が持っている状態を想像と以下の式:F = φとG = (φ ∨ ψ )とφは、複雑な部分式であることを、私が最初かどうかを知りたいと想像fが成り立つ秒。私はϕが成立するかどうかを確認し、長いプロセスの後、それが事実であることを確認します。ここで、gがsに成立するかどうかを知りたい。私は事実を覚えたいfが保持していることに注意してくださいにグラム⇒ Fsssf=ϕf=ϕf = \phig=(ϕ∨ψ)g=(ϕ∨ψ)g = (\phi \vee \psi)ϕϕ\phifffsssϕϕ\phigggsssfffg⇒fg⇒fg \Rightarrow f私は導き出すことができ中のほぼ瞬時に。 逆に、gがtに保持されないことを証明した場合、fはtにほぼ瞬時に保持されないことを伝えたいと思います。gggsssgggtttfffttt 私たちは式に部分的秩序を構築し、持つことができます IFF グラム⇒ F。状態sごとに、2組の式を保存します。L (s )は保持する最大の数式を格納し、l (s )は保持しない最小の数式を格納します。今状態所与Sおよび式Gの場合、私が見ることができる∃ F ∈ L (S )、F ⇒ G、又は場合∃ F ∈ L (S )g≥fg≥fg \geq fg⇒fg⇒fg \Rightarrow fsssL(s)L(s)L(s)l(s)l(s)l(s)sssggg∃f∈L(s),f⇒g∃f∈L(s),f⇒g\exists f \in L(s), f …

1
多項式サイズのルートツリーの「短い」パス数の下限
してみましょう根付いバイナリツリーも。Tのルートから葉までのすべてのパスの長さはnです。Tのすべてのノードには常に左と右の子ノードがありますが、それらが同じである可能性があります(したがって、常に2 nパスが可能です)。TのサイズはO (p o l y (n ))によって制限されます。異なる子ノードを持つノードは、分岐ノードと呼ばれます。TTTTTTんnnTTT2ん2n2^nTTTO (p o l y(n ))O(poly(n))O(poly(n)) 1つの共有分岐ノードがあり、1つのパスが左の子ノードに行き、もう1つのパスが右の子ノードに行く場合、2つのパスは異なると言います。はO (log n )分岐ノードを持つパスが少なくとも1つあることは明らかです。そうしないと、Tのノードが多すぎます。TTTO (ログn )O(log⁡n)O(\log n)TTT ツリーにω (log n )の分岐ノードがあることがわかっている場合、分岐ノードを含むパスの数に下限はありますか?O(logn)O(log⁡n)O(\log n)ω(logn)ω(log⁡n)\omega(\log n)

2
関数型辞書のデータ構造を選択するにはどうすればよいですか?
次のデータ構造について少し読みました。 バグウェルの理想的なハッシュトライ Larsonの動的ハッシュテーブル 赤黒木 パトリシアの木 ...そして他にもたくさんの人がいると思います。私はそれぞれが何に適しているのか、あるいはなぜ私が他のものを選ぶのかについてはほとんど見たことがありません。したがって、これらの行に沿っていくつかの質問があります: 知っておくべき重要な関数型辞書のデータ構造は何ですか? これらのアプローチの長所と短所は何ですか? より命令的なデータ構造を使用するのはいつ意味がありますか? 2と3の番号がより重要です。:-)

2
木のコレクションを検索するための効率的なアルゴリズム
大きな木のデータセットがあり、ツリーレット(接続されたサブグラフ)を指定して検索したいのですが。クエリは、データセット内のツリーレットのすべての出現を返す必要があります。 そうするための効率的なアルゴリズムはありますか? 接尾辞配列のようなものを考えていましたが、ツリーの単純な文字列としてのエンコード(ノードの固定のトラバース順序による)は機能しません。検索ツリーレットは任意の形状にすることができるためです。 更新: 私が期待する典型的なインスタンスに関するいくつかの詳細: データセットは、それぞれが約20〜30のノードで構成される、少なくとも数万の木で構成されます。ツリーはバイナリではありませんが、ノードあたりの一般的な子の数は少なくなります(通常は4または5以下ですが、場合によっては約30に達することもあります)。ラベルの数は数万になります。 NLPアプリケーションではこれが必要です。各ツリーは文の依存解析であり、各ノードは単語の出現を表し、各ノードは辞書の単語にラベルを付けます(装飾が施されています)。

2
マップのツリーに最適なデータ構造は何ですか。
私はデータ構造を探しています。これは基本的にマップのツリーです。各ノードのマップには、親ノードのマップ内のエレメントだけでなく、いくつかの新しいエレメントが含まれています。ここでのマップとは、STLのマップやPythonのdictのような、キーと値を含むプログラミングマップを意味します。 たとえば、ルートノードがあるとします。 root = {'car':1, 'boat':2} と2つの子、それぞれが親マップに要素を追加 child1 = {'car':1, 'boat':2, 'jet':35} child2 = {'car':1, 'boat':2, 'scooter':-5} これを可能な限りスペース効率の良いものにしたいのです。つまり、結果のマップの完全なコピーを各ノードに保存したくありませんが、理想的にはルックアップはO(log N)であり、Nはツリー全体ではなく、ノードの要素。 私はおそらくこれに使用できるスマートなハッシュ関数があると考えていましたが、何も思いつきませんでした。 単純なアプローチでは、新しく追加されたエントリを各ノードのマップに格納し、何も見つからない場合はツリーを上に移動します。木の深さに依存するので、私はこれが好きではありません。

1
「ツリーグラフ」の最小次数
グラフ与えられた場合、ツリーグラフを頂点がの全域木であるグラフとして定義します。1つのエッジを置き換えることによって一方から他方を取得できる場合、2つのツリーの間にエッジがあります。つまり、ような2つのエッジが存在する場合エッジがあります。GGGT(G)T(G)T(G)GGG(T1,T2)(T1,T2)(T_1, T_2)x,y∈Gx,y∈Gx, y \in GT1−x=T2−yT1−x=T2−yT_1 - x = T_2 - y 私の質問はこれです:最小次数を持つ頂点の次数に重要な下限または上限がありますか?T(G)T(G)T(G) 注:質問(最後の行)を少し編集して、あいまいにならないようにしました。

2
リンクカットツリーの初期化時間はどれくらいですか?
リンクカットツリーは、SleatorとTarjanによって発明されたデータ構造であり、時間におけるノードフォレストでのさまざまな操作とクエリをサポートし。(たとえば、オペレーションリンクはフォレスト内の2つのツリーを1つに結合し、オペレーションカットはフォレスト内のツリーを2つのツリーに分割します。)O (log n )んnnO (ログn )O(log⁡n)O(\log n) リンクカットツリーを使用することでいくつかのアプリケーションが知られています。ここでは特にノードの平面グラフが与えられるとノードがサブグラフである対応するバイナリツリーとその子が得られるグッドリッチのセパレーター分解に興味があります。ノードのサブグラフであるのセパレータで割っ。このような分解は時間で簡単に構築できます(セパレーターは時間で見つけることができるため、セパレーターはレベルの分離後にグラフをバランスよく分割するため、ツリーの葉のサイズはG G H H H O (n log n )O (n )O (log n )O (1 )んnnGGGGGGHHHHHHHHHO (n ログn )O(nlog⁡n)O(n \log n)O (n )O(n)O(n)O (ログn )O(log⁡n)O(\log n)O (1 )O(1)O(1))。Goodrichの主な貢献は、各レベルでセパレーターを見つけるために使用されるデータ構造を維持および再利用することにより、時間でそのような分解を構築できることです。O (n )O(n)O(n) 構築で使用されているデータ構造の1つは、確かにリンクカットツリーです。Goodrichによる論文の 7ページで、リンクカットツリーの初期化は時間で実行できると彼は主張しました。そこに引用されているすべての論文を調べていますが、操作linkを使用してリンクカットツリーを作成すると、合計で時間がかかるようです。O (n )O(n)O(n)O (n ログn )O(nlog⁡n)O(n \log n) 何か誤解していますか?リンクカットツリーの初期化は時間ますか?O (n )O(n)O(n)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.