問題タブ [adjacency-list]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2683 参照

php - PHP / MySQL:隣接リストモデルで単一のパスを取得します

深さを制限せずに、ノードのIDに基づいて隣接リストモデルの単一のパスを取得する効果的な方法はありますか?「バナナ」という名前のノードのIDを持っている場合のように、次のパスを取得できます。食品>果物>バナナ

不可能であれば大きな問題ではありませんが、whileループなどで結合を実行できるかどうかを考えました。親が0になるまで。

0 投票する
1 に答える
749 参照

c - 隣接リストの辺の長さ

隣接リストの実装でエッジの長さを配置するのに最適な場所はどこですか? このサイトを参考にしています。私が考えているのは、それをエッジノードに入れて、ある頂点から別の頂点までの長さを見つけるために、頂点ノードの1つに行き、その接続エッジを見つけて、関連するメンバーにアクセスすることです。(リンク先のパート5:「実装するデータ型」参照)

これは私には聞こえますが、多くのサイトを調べましたが、これが機能することを確認しているサイトはありません. また、隣接する行列に長さを実装する方がはるかに簡単であるとどこかで読んだことを覚えていますが、隣接リストに長さを実装することが可能かどうか、または単に難しいかどうかは言いませんでした。

0 投票する
1 に答える
7022 参照

php - 隣接リスト対入れ子集合モデル

最適なツリー ソリューションを見つけるために、Adjacency List と Nested Set Model を調べています。

これまで、ネストされたセット モデルの主な利点の 1 つは、1 つの SQL クエリといくつかのコードを使用して完全なツリーを取得できることだと考えていました。ただし、ノードの更新/挿入は複雑で、ツリー全体が簡単に破損する可能性があります。

その後、次の 2 つの投稿に出くわしました。

単一のクエリで再帰カテゴリ?

http://www.sitepoint.com/forums/showthread.php?t=570360

次のコードにより、1 つの SQL クエリで Adjacency List を使用できるようになります。Adjacency List は更新が簡単で、ツリー全体が破損する可能性が低いように思えます。

このコードについてどう思いますか?

ツリー構造を反映する多次元配列を生成する

ノードがネストされた順序なしリストを準備する

0 投票する
2 に答える
583 参照

sql - 隣接リストから選択し、下から上に並べます

次のテーブル構造があるとします。

子が最初に (下から) 返されるような方法でクエリを実行することは可能でしょうか。

addRole目標は、子を追加する前にロールを追加する必要があるZend_Acl のメソッドにこれらをロードすることです。

私の現在の方法は、2 つのクエリを必要とする準最適 (そしておそらく間違っている) です。1 つはすべてのリーフ ノード (親が NULL の場合) を取得するためのもので、もう 1 つは親 (DESC) によって順序付けられた親を持つものを取得するためのものです。

どんな助けでも大歓迎です。

0 投票する
2 に答える
584 参照

mysql - 隣接リストモデルまたは入れ子集合モデル。階層データを保存するためにどのデータモデルを使用する必要がありますか?

WebアプリがTwitterから取得したメッセージをローカルデータベースに保存する必要があります。メッセージを保存する目的は、これらのメッセージを階層順に表示する必要があることです。つまり、アプリケーションを介してユーザーが入力した特定のメッセージ(つまり、ステータスの更新)は、他のユーザーの子ノードです(親メッセージのサブリストアイテムとして表示する必要があります)。 )。隣接リストモデルまたは入れ子集合モデルのどちらを使用する必要がありますか?4種類のメッセージを管理する必要があります。各カテゴリのメッセージには2つの子ノードがあります。ここでもう1つ質問があります。どちらの場合も、入力が手動で制御されていることがわかります。つまり、隣接モデルまたは右、左の親ノードへの参照がネストされたリストに表示されます。私のアプリは、次のようにTwitterからメッセージデータをフェッチします。

したがって、マニュアルはなく、いつでも任意の数のメッセージを利用できます。どうすればそこからのメッセージ間で親子関係を作ることができますか。現在、ユーザーは4種類のメッセージに対応するさまざまなウィンドウにメッセージを入力します。私のアプリはキーワードを追加し、それらをフェッチして差分ウィンドウに表示します。これらのメッセージはすべて、現時点では親メッセージです。次に、別の子としてデータベースに保存できるメッセージをユーザーに入力させる方法を説明します。

0 投票する
4 に答える
5820 参照

php - 隣接リスト表示用の再帰的な PHP 関数

私は次のようなDBを持っています:

そのため、親をリストするツリー構造をキャプチャしようとしています。私は他のオプション (入れ子になったセットだと思いますか?) を認識していますが、今のところこれに固執するつもりです。私は今、DB からデータを取得して、PHP のネストされた配列構造に入れようとしています。私はこのような機能を持っています:

だから、連想配列のネストされたツリーのようなものを作りたいと思っていますが、それを行う方法がわかりません。渡した配列に何も書き込まれていないようで、再帰で自分自身を見失っています。次のような結果になるこの最後のこぶを乗り越えるのを手伝ってくれる人はいますか?

また、出力の特定の形式にはあまり関心がありません。これは JSON に変換されますが、クライアント側のハンドラーの作成についてはまだ扱っていないため、正確な構造については心配する必要はありません。

ありがとう!

0 投票する
2 に答える
479 参照

sql - 隣接モデルにコピー

隣接モデルのノードをコピーする SQL ストアド プロシージャ (Sql Server 2008 - T-SQL) を作成する必要があります。

テーブルには、Id と ParentId (FK から Id) の 2 つの列があると見なすことができます。コピーとは、すべての部下もコピーする必要があることを意味します。

WITH を使用するのは良いスタートだと思いますが、Cursors を使用せずにこのコピーを実行できるかどうかに興味があります。

0 投票する
1 に答える
2070 参照

python - SQLAlchemy ORM で熱心な読み込みのために再帰の深さを動的に調整するにはどうすればよいですか?

テーブル A がテーブル B を参照し、テーブル B がテーブル A の別のレコードを参照するという 2 つのテーブルの階層セットアップがありますが、指定された再帰の深さまでしかありません。

これは、SQLAlchemy と宣言型を使用してうまく機能しています。また、テーブル リレーションのlazyおよびプロパティを使用した熱心な読み込みをうまく使用しています。join_depthこれは、SQLAlchemy のドキュメントのとおりです。

ただし、この配置ではjoin_depth、プログラムのロード時に ' ' で再帰の深さが固定されます... しかし、使用しているデータを使用すると、毎回使用する必要がある再帰の深さがわかります。 クエリごとに使用される再帰の深さを変更するにはどうすればよいですか?

ベース ORM オブジェクトのマスター プロパティをいじることを検討しjoin_depthましたが、危険なマルチスレッドの scoped_session アプリケーションを使用しているため、これは機能しません (パラメーターが非常に難しいという事実は言うまでもありません)。実行時に SQLAlchemy 内で見つけてください!)。

クエリでの使用も検討しましたjoinedloadが、それで深さを変える方法がわかりません。

一部のデータベースではCTEWITH RECURSIVE経由で ' ' SQL 構文を使用できることも認識していますが、これは素晴らしいことですが、一部の DB ではまだサポートされていないため (少なくとも SQLAlchemy もサポートしていないため)、当面は避けたいと思います。現時点ではなく、多くの方言のカスタマイズがないわけではありません)。

0 投票する
2 に答える
1571 参照

ruby - RubyでBFSを使用してマップを保存し、グラフを生成する方法

ですから、これはCSでMSCを取得している人にとっては古典的な質問だと思います。

N要素があり、距離もあります。次の距離の要素が3つあるとします。対称なので

マトリックスのように見えます:

私の質問は次のようになります:

  • これを効率的に保存するにはどうすればよいですか(どのデータ構造)
  • 距離の合計が最小であるリンクリストを取得するための最も効率的な方法は何ですか

この場合、最良は

その他の場合:

これにはBFSが適しているのではないかという印象を受けました。アマゾンの本でさえ、英語のドキュメントへのリンクは良いです...

0 投票する
1 に答える
2028 参照

java - ネストされたデータをHibernateで保存するための効率的な方法を探しています

私は、java/hibernateでネストされたデータを表す効率的な方法を見つけようとしています。私の最初の解決策は、自己参照結合を使用した親子リストでしたが、SQLでレポートを作成する場合、この手法には明らかな落とし穴があります。ネストされたセットとマテリアライズされたパスを調べていましたが、SQLを介したクエリにも効率的な、休止状態にネイティブなネストされたデータを表す方法があることを期待していました。