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

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

20
木のNP困難な問題
一般的なグラフでNP困難であることが知られているいくつかの最適化問題は、入力グラフがツリーの場合、多項式時間(線形時間でも)で簡単に解決できます。例には、最小頂点カバー、最大独立セット、サブグラフ同型が含まれます。ツリー上でNPハードのままであるいくつかの自然な最適化問題に名前を付けます。

4
KDツリーでOctreeを使用するのはなぜですか?
科学コンピューティングの経験があり、BSP(バイナリ空間分割)アプリケーションにkdツリーを広く使用しています。最近、3Dユークリッド空間を分割するための同様のデータ構造であるoctreeにかなり精通しましたが、収集したものから一定の間隔で機能するものです。 少しの独立性調査では、ほとんどのデータセットでkdツリーのパフォーマンスが一般的に優れていることが示されているようです(構築とクエリが高速です)。私の質問は、空間的/時間的パフォーマンスまたはその他の点でoctreeの利点は何ですか?また、どの状況で最も適していますか(3Dグラフィックスプログラミングを聞いたことがありますか)?両方のタイプの利点と問題の要約は、私が最も高く評価するでしょう。 さらに、Rツリーデータ構造の使用法とその利点について詳しく説明できれば、それもありがたいです。Rツリー(octreeよりも)は、k最近傍検索または範囲検索のkdツリーとまったく同じように適用されるようです。

1
大きさの木の平均身長で正規木言語はあるの
本TATAのように、通常のツリー言語を定義します:これは、非決定論的有限ツリーオートマトン(第1章)で受け入れられるツリーのセット、または同様に、通常のツリー文法(第2章)で生成されるツリーのセットです。どちらの形式も、よく知られている文字列の類似物とよく似ています。 大きさの木の平均身長で正規木言語はあるのでもないΘ (nは)もΘ (√nnnΘ (n )Θ(n)\Theta(n)?Θ (n−−√)Θ(n)\Theta(\sqrt{n}) 明らかに、ツリーの高さがそのサイズで線形であるようなツリー言語があります。そして本の中で分析組み合わせ論サイズの二分木という例が示され平均身長持つ2 √nnn。上記の本の命題VII.16(p.537)を正しく理解すれば、平均高さがΘ( √2個のπn−−−√2πn2\sqrt{ \pi n}、つまり、ツリー言語がいくつかの追加条件を満たしている単純な種類のツリーでもあるもの。Θ (n−−√)Θ(n)\Theta(\sqrt{n}) だから、平均的な高さが異なる通常のツリー言語があるのか​​、それとも通常のツリー言語の真の二分法があるのか​​と思っていました。 注:この質問はComputer Scienceで以前に質問されましたが、3か月以上回答されていません。質問が古すぎて移行できないため、また質問にまだ関心があるため、ここに再投稿したいと思います。元の投稿へのリンクはこちらです。


1
2つの多項式(木で表される)間の距離を見つける
遺伝子プログラミングに携わっている同僚から次の質問がありました。私は最初に貪欲なアプローチに基づいてそれを解決しようとしましたが、考え直して、欲張りアルゴリズムの反例を見つけました。だから、ここで言及する価値があると思いました。 式ツリーで表される2つの多項式を考えます。たとえば、バツ3− 2 x + 1x3−2x+1x^3-2x+1およびバツ2+ 4x2+4x^2 + 4を以下に示します。 ルール: 各ノードは、変数名(x 、y、z、…x,y,z,…x, y, z, \ldots)、数値、または操作(+、-、×)のいずれかです。 ツリーの順序トラバーサルは、有効な多項式になるはずです。 操作ノードにはインディグリー2があります。他のノードにはインディグリー0があります。すべてのノードにはアウトディグリー1があります(アウトディグリーが0であるルートを除く)。 ツリーのノードNで、次のように基本操作を定義します。 バツxx××\times 基本的な操作では、Nの上に式ツリーを構築できます(以下の例を参照)。 タイプ1の基本操作のコストは1です。タイプ2のコストは、新しく構築された式ツリーの{+、-、×}操作の数に等しくなります。 タイプ2の例:ノードNの上に構築された式ツリーは2つの操作(-と×)を使用するため、次の基本操作のコストは2です。 T1とT2を多項式を表す2つの式ツリーとします。T1とT2の距離を次のように定義します。T1をT2に変換するための基本操作の最小コスト。変換されたツリーがT2と同じ構造を持つ必要はないことに注意してください。T2と同じ多項式を計算するだけです。(例についてはコメントを参照してください。) 問題: T1とT2が与えられた場合、それらの距離を計算するアルゴリズムを提示します。 例1: T1とT2を、この投稿の冒頭で示した2つのツリーとします。右のツリーを左のツリーに変換するには、×の上にコスト3のツリーを構築し、4を1に変更します(合計コストは4です)。 バツ4x4x^4バツ4+ 4 x3+ 6 x2+ 4 x + 1x4+4x3+6x2+4x+1x^4+4x^3+6x^2+4x+1バツxx(x + 1 )4(x+1)4(x+1)^4バツxx4 x34x34x^36 x26x26x^24x4x4x

2
成長する無向グラフのバランスの取れたスパニングツリーを維持する
グラフに新しいノード/エッジを追加する際に、グラフの比較的バランスの取れたスパニングツリーを維持する方法を探しています。 単一のノード、「ルート」として開始する無向グラフがあります。 各ステップで、新しいノードとグラフに接続するエッジ、または2つの古いノードを接続する新しいエッジのいずれかをグラフに追加します。グラフを成長させると、スパニングツリーが維持されます。ほとんどの場合、これは、新しいノードとエッジを追加するときに、新しいノードを接続先の古いノードの子に設定することを意味します。 新しいノードを追加する順序を制御することはできません。そのため、上記のツリー構築アルゴリズムは明らかに、不均衡なスパニングツリーにつながる可能性があります。 再ツリー化で行われる作業量を最小限に抑えながら、スパニングツリーを「比較的バランスの取れた」状態に保つオンラインヒューリスティックを知っている人はいますか?ツリー構造を完全に制御できます。私が制御できないのは、グラフの接続性、または新しいノードが追加される順序です。 「balanced」、「spanning」、「tree」などの用語に対するGoogleの標準的な応答は、どちらも当てはまらないバイナリツリーとBツリーのように見えることに注意してください。グラフノードには任意の数の隣接ノードを含めることができるため、ツリーノードには2つのバイナリツリーのような2つではなく、任意の数の子を含めることができます。Bツリーは、隣接リストを変更することでバランスを維持しますが、グラフの接続を変更することはできません。

5
計算可能な数が有理数か整数かをテストすることはできますか?
計算可能な数が有理数か整数かをアルゴリズムでテストすることはできますか?言い換えれば、それは道具計算数字は機能を提供するために、そのライブラリは可能でしょうisIntegerかisRational? 私はそれが不可能であると推測し、これは何らかの形で2つの数値が等しいかどうかをテストすることができないという事実に関連していると推測していますが、それを証明する方法はわかりません。 編集:計算数はxxxの関数で与えられるfx(ϵ)fx(ϵ)f_x(\epsilon)の合理的な近似値を返すことができxxx高精度でϵϵ\epsilon:|x−fx(ϵ)|≤ϵ|x−fx(ϵ)|≤ϵ|x - f_x(\epsilon)| \leq \epsilonいずれについても、ϵ>0ϵ>0\epsilon > 0。このような関数を考えると、それがあれば、テストすることが可能であるx∈Qx∈Qx \in \mathrm{Q}またはx∈Zx∈Zx \in \mathrm{Z}?
18 computability  computing-over-reals  lambda-calculus  graph-theory  co.combinatorics  cc.complexity-theory  reference-request  graph-theory  proofs  np-complete  cc.complexity-theory  machine-learning  boolean-functions  combinatory-logic  boolean-formulas  reference-request  approximation-algorithms  optimization  cc.complexity-theory  co.combinatorics  permutations  cc.complexity-theory  cc.complexity-theory  ai.artificial-intel  p-vs-np  relativization  co.combinatorics  permutations  ds.algorithms  algebra  automata-theory  dfa  lo.logic  temporal-logic  linear-temporal-logic  circuit-complexity  lower-bounds  permanent  arithmetic-circuits  determinant  dc.parallel-comp  asymptotics  ds.algorithms  graph-theory  planar-graphs  physics  max-flow  max-flow-min-cut  fl.formal-languages  automata-theory  finite-model-theory  dfa  language-design  soft-question  machine-learning  linear-algebra  db.databases  arithmetic-circuits  ds.algorithms  machine-learning  ds.data-structures  tree  soft-question  security  project-topic  approximation-algorithms  linear-programming  primal-dual  reference-request  graph-theory  graph-algorithms  cr.crypto-security  quantum-computing  gr.group-theory  graph-theory  time-complexity  lower-bounds  matrices  sorting  asymptotics  approximation-algorithms  linear-algebra  matrices  max-cut  graph-theory  graph-algorithms  time-complexity  circuit-complexity  regular-language  graph-algorithms  approximation-algorithms  set-cover  clique  graph-theory  graph-algorithms  approximation-algorithms  clustering  partition-problem  time-complexity  turing-machines  term-rewriting-systems  cc.complexity-theory  time-complexity  nondeterminism 

3
2つのバイナリ検索ツリーのマージ
任意のサイズと範囲の2つのバイナリ検索ツリーをマージするアルゴリズムを探しています。これを実装するための明確な方法は、範囲が他のツリーの任意の外部ノードに収まるサブツリー全体を見つけることです。しかし、このタイプのアルゴリズムのための時間を実行している最悪の場合は、の順になるようだと、それぞれの木の大きさです。O(n+m)nm ただし、これはで行うことができると言われていますO(h)。ここhで、高さの大きいツリーの高さです。そして、私はこれがどのように可能かについて完全に迷っています。最初に木を回転させて実験してみましたが、木を背骨に回転させることはすでにO(h)です。

1
リストに順番を維持
注文のメンテナンスの問題(または「リスト内の注文の維持」)は、操作をサポートすることです。 singleton:1つのアイテムでリストを作成し、そのポインターを返します insertAfter:アイテムへのポインターを指定すると、そのアイテムの後に新しいアイテムを挿入し、新しいアイテムへのポインターを返します delete:アイテムへのポインタを指定すると、リストから削除します minPointer:同じリスト内のアイテムへの2つのポインターを指定すると、リストの先頭に近い方を返します 私は、償却時間ですべての操作を実行するこの問題に対する3つの解決策を知っています。それらはすべて乗算を使用します。O (1 )O(1)O(1) Athanasios K. Tsakalidis:一般化リンクリストでの順序の維持 Dietz、P.、D. Sleator、リスト内の順序を維持するための2つのアルゴリズム Michael A. Bender、Richard Cole、Erik D. Demaine、Martin Farach-Colton、およびJack Zito、「リスト内の順序を維持するための2つの簡略化されたアルゴリズム」 A C 0にない算術演算を使用せずに、償却時間のリストで順序を維持できますか?O (1 )O(1)O(1)A C0AC0AC^0

3
Bob's Sale(製品の合計を最小化するための制約付きペアの並べ替え)
私は少し前にStack Overflowでこの質問をしました:問題:Bob's sale。誰かが質問をここに投稿することも提案しました。 誰かがすでにこの問題に関連する質問をしています- 特定のカーディナリティの最小重みサブフォレスト -しかし、私が理解している限り、それは私の問題に役立ちません。StackOverflowで最も評価の高い回答もご覧ください。 StackOverflowの質問の逐語的なコピーを次に示します。おそらく、このサイトには不適切に定式化されているので(ちなみに、ここで質問するだけでは教育を受けられないと感じます)、自由に編集してください。 注:これは、SWFファイル内のレコードの順序に関する実際の問題を抽象的に言い換えたものです。ソリューションは、オープンソースアプリケーションの改善に役立ちます。 ボブは店を持ち、販売をしたいと考えています。彼の店には多くの製品があり、在庫がある各製品の単位の特定の整数量を持っています。彼はまた、多くの棚に取り付けられた価格ラベル(製品の数と同じ数)を持ち、価格はすでに印刷されています。彼はどの製品にも価格ラベルを付けることができます(その製品の在庫全体に対する1つのアイテムの単価)。ただし、一部の製品には追加の制限があります。 すべてのBobの製品の総コストが可能な限り低くなるように、価格ラベルを配置する方法を見つける必要があります。総コストは、各製品に割り当てられた価格ラベルにその製品の在庫数を掛けた合計です。 与えられた: N –製品と価格ラベルの数 S I、0≤ I <N -インデックスを有する製品の在庫の数量I(整数) PのJ、0≤ J <N -インデックス付き価格ラベル上の価格J(整数) K –追加の制約ペアの数 K、BはK、0≤ K <K -追加の制約のために、製品インデックス どの製品インデックスもBに1回しか表示されません。したがって、この隣接リストによって形成されるグラフは、実際には有向木のセットです。 プログラムは以下を見つける必要があります。 M I、0≤ I <N -価格ラベルインデックス製品インデックスからマッピング(P M iは、製品の価格であるI) 条件を満たすには: P M A K ≤P M BがK、0≤ためのK <K Σ(S I ×P M …

2
ジッパーとは何ですか?また、それはツリーのような構造とどのように関連していますか?
私はLYAHの章を読んでいましたが、それは私にはあまり意味がありませんでした。ジッパーはツリーのような構造を任意にトラバースできることを理解していますが、それについて明確にする必要があります。また、ジッパーは任意のデータ構造に一般化できますか?


4
赤と黒の木の部分範囲
ライブラリのバグを修正しようとしていたとき、私は赤と黒の木のサブレンジを見つけることに成功せずに論文を検索しました。私はジッパーと 不変データ構造の削除アルゴリズムで使用される通常の追加操作に似た何かを使用するソリューションを検討していますが、私は見つけることができなかったより良いアプローチ、または最小の複雑さの境界さえあるのだろうかとまだ疑問に思っていますそのような操作で? 明確にするために、赤と黒のツリーと2つの境界が与えられた場合、それらの境界内に属する最初のツリーのすべての要素を含む新しい赤と黒のツリーを生成するアルゴリズムについて説明します。 もちろん、複雑さの上限は、1つのツリーをトラバースし、要素を追加して他のツリーを構築する複雑さです。

1
特定のカーディナリティの最小重みサブフォレスト
この質問の動機は、stackoverflowでの質問です。 あなたが根付いツリー与えられていると仮定(つまり、そこに根であるとノードが子供など持っている)の上にn個のノード(ラベル1を、2 、... 、N)。TTTnnn1,2,…,n1,2,…,n1, 2, \dots, n 各頂点は、負でない整数の重みw iが関連付けられています。iiiwiwiw_i また、あなたは整数与えられている、そのような、1つの≤ K ≤ N。kkk1≤k≤n1≤k≤n1 \le k \le n 重みノードの集合のSは、⊆ { 1 、2 、... 、N }のノードの重みの合計である:Σ S ∈ S W S。W(S)W(S)W(S)S⊆{1,2,…,n}S⊆{1,2,…,n}S \subseteq \{1,2,\dots, n\}∑s∈Sws∑s∈Sws\sum_{s \in S} w_s 入力、w iおよびkが与えられた場合、TTTwiwiw_ikkk タスクは、S が正確にk個のノードを持つように、Tの最小重みサブフォレスト* を見つけることです(つまり| S | = > k)。SSSTTTSSSkkk|S|=>k|S|=>k|S| = > k つまり、Tのサブフォレストに対して、| S …

2
長方形の全域木の数の正確な式
このブログでは、コンピュータを使用して「ねじれた小さな迷路」を生成し、それらを列挙する方法について説明しています。列挙はUSTを取得するためにウィルソンのアルゴリズムを使用して行うことができますが、そこにいくつあるかの式を覚えていません。 http://strangelyconsistent.org/blog/youre-in-a-space-of-twisty-little-mazes-all-alike 原則として、マトリックスツリーの定理は、グラフのスパニングツリーの数はグラフのラプラシアンマトリックスの行列式に等しいと述べています。ましょうグラフであり、および隣接行列であり、度行列で、次にの固有値を持つ次いで、:G = (E、V)G=(E、V)G= (E,V)ああADDDΔ = D − AΔ=D−あ\Delta = D - Aλλ\lambda k (G )= 1んΠk = 1n − 1λkk(G)=1んΠk=1ん−1λk k(G) = \frac{1}{n} \prod_{k=1}^{n-1} \lambda_k 以下の場合には矩形の両方と固有値は、私が見つけることができません特に簡単な形をとるべきです。 m × nメートル×んm \times nああA 四角形の全域木の数の正確な式(および漸近)は何ですか?m × nメートル×んm \times n これは、動作中のウィルソンのアルゴリズムのかなりの例です。

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