問題は、最小の重みと最大の深さが6になる可能性のあるすべてのパスを見つける必要があることです(5つの頂点が中央にある可能性があります)。2 つの頂点の間には、異なる重みを持つより多くの関係が存在する可能性があります。
たとえば、パス:
weight(ABEF) = 2+3+1 = 6
または2+2+1 = 5
、ノード B と E の間で異なる関係の重みを選択した場合。
他の道路についても同様です。関係が異なるため、同じノード間で重みが異なる場合があります。
データベースは巨大で、深さ 6 ですべての可能性を計算するのは非常に時間がかかります :/
2 つのノード間のすべての関係の重みを 1 回チェックし、同じ検索で最大の重みを持つものをチェックせず、同じ最小の重みを持つ関係がある場合は両方を取得するにはどうすればよいですか?
これまでのところ、私は持っています:
START n=node(158371), m=node(183090)
MATCH p=n-[r*..4]-m
WITH p, length(p) as len,r
RETURN reduce(res=0, x in r: res + x.weight) as totalscore, len
ORDER BY totalscore desc;
しかし、深さ6で検索してすべての可能性を見つけると、データベースが壊れます。reduce 関数は文字列を収集するように機能しますが、重みをカウントする必要があります。( 2+3+1=6 not 2+3+1=231
)
Ps グラフィック イメージが表示されない場合は、ここにあります: http://postimg.org/image/bf9rfdtf7/