ArangoDBで最短パスの多くの亜種を見つける可能性はありますか? 私は 最初の道のように、多くの亜種を見つける必要がある - 距離を2 第2の経路距離3 などarangoDBでの複数パス検索
はありOOBはalgrorithmが含まれていますか? 検索結果に必須のノードを指定したいと思います。
ベクトル重みのサポートはありますか? 私は、体重は体重が優先順位の順に並んでいることを特徴としています。
ありがとうございます。
ArangoDBで最短パスの多くの亜種を見つける可能性はありますか? 私は 最初の道のように、多くの亜種を見つける必要がある - 距離を2 第2の経路距離3 などarangoDBでの複数パス検索
はありOOBはalgrorithmが含まれていますか? 検索結果に必須のノードを指定したいと思います。
ベクトル重みのサポートはありますか? 私は、体重は体重が優先順位の順に並んでいることを特徴としています。
ありがとうございます。
最短パスアルゴリズムは、最短パスを1つしか決定できません。これは完全グラフであれば、例えば
:
...その後C
からA
から最短パスクエリーはパスA -> B -> C
又はA -> D -> C
を返すことがあり、それはどちらの未定義'S(エッジを取っていませんここで重さを考慮する)。
あなたは最短経路長を決定するために、しかし効率的な最短経路アルゴリズムを使用することができます。
RETURN LENGTH(
FOR v IN OUTBOUND
SHORTEST_PATH "verts/A" TO "verts/C" edges
RETURN v
)
結果は、例えば、グラフの3である(開始頂点を含みます)。さて、エッジカウント/トラバーサルの深さを得るために1を引いてください。パターンマッチングトラバーサルを実行して、この長さのパスをすべて見つけることができます(最小深度と最大深度を増やして長さを長くする)。出発点は、再びA
で、v
(またはp.vertices[-1]
)の文書IDのフィルタ我々は唯一C
で終わるパスを取得することを保証します:
FOR v, e, p IN 2..2 OUTBOUND "verts/A" edges
FILTER v._id == "verts/C"
RETURN CONCAT_SEPARATOR(" -> ", p.vertices[*]._key)
[
"A -> B -> C",
"A -> D -> C"
]
3..3
のトラバース深さがA -> E -> F -> C
を返します、およびすべての3つのパス2..3
。
最短パス長を計算し、最短パス長(マイナス1)に基づいてパターンマッチングを行うには、minとmaxの深さを式にすることができないため、あらかじめ、数値リテラルまたはバインドパラメータのいずれかを指定してください)。
これらは3つの異なる質問で、別々に投稿する必要があります。 2と3を追加の説明とともに投稿してください。データベースクエリーに関して何を求めているのか、そして期待される結果がどのようなものかはわかりません。 – CoDEmanX