我仍然在学习Neo4j的诀窍,并试图确定它是否是我需要解决的问题的正确工具。我的目标是计算从一个节点到特定节点组中每个节点的距离。到目前为止,我正在尝试这样的东西:
START n = node:node_auto_index(name="Animals")
MATCH ppl:person
WITH n, ppl
MATCH p = shortestPath(n-[*]-ppl)
RETURN length(p), ppl
(我是在一个“朋友的朋友”上做这件事的,我首先用:person标记了所有的人。)
问题是:这个查询将在一次遍历中完成,还是Neo4j必须遍历ppl
我有几个Python脚本,它们计算各种网络度量。
给定一个图(G),第一个脚本计算每个节点到所有其他节点的平均最短路径,并将其存储在Nx1矩阵(L)中。 Python库中使用了贾克斯特拉算法的一个实现,用于:
for i in range(num_nodes):
for j in range(num_nodes):
dj_path_matrix[i,j] = nx.dijkstra_path_length(G, i, j)
L = np.sum(dj_path_matrix, axis=0)/(num_nodes - 1)
给定相同的图(G),第二个脚本使用库中Bra
对于任意节点,我需要绘制一个从该节点到根的子树(包括所有可能的路径)。
例如,如果我有这个树(编辑过的):
a
|
-----
| | |
b c d
| |
---
|
e
|
f
并且选择了e节点,我需要绘制:
a
|
---
| |
b c
| |
---
|
e
start n=node({nodeId}) optional match n-[r:DEPENDS*]->p return n,r,p
虽然它可以工作,但取决于搜索节点的深度,它非常非常慢(超过10秒)。
如何有效地实现这一点?
我正在尝试使用Neo4j中的ShortestPath函数。
该路由将通过具有LinkLength值的不同节点。对于两个节点之间的最短LinkLength,"reduce“部分中的值应该最小化。
问: Neo4j可以找到一条路径作为最短路径解决方案。令人惊讶的是,Neo4j说reduce函数的值是空的。错误是什么?
MATCH p = (n1:Node)-[:Connects*]->(n2:Node)
WHERE n1.myid = 'M32 J3' AND n2.myid = 'M32 J1'
RETURN p AS shortestPath,
r