计算2个节点之间的所有关系
Compute all the relationships between 2 nodes
我正在尝试计算 2 个节点之间的所有关系:
对我来说,shortestpath、allshortestpaths 和 apoc.algo.dijkstra 工作得很好。但是这些不会获取 2 个节点之间的所有关系。
这是我的查询,运行速度非常快:
MATCH (s:Stop)--(st:Stoptime), (e:Stop)--(et:Stoptime)
WHERE s.name IN [ 'Schlump', 'U Schlump']
AND e.name IN ['Hauptbahnhof Süd', 'HBF/Steintorwall' , 'Hamburg Hbf']
AND st.arrival_time < et.departure_time
MATCH p = allshortestpaths((st)-[r:PRECEDES*]->(et))
RETURN p
但是当我删除所有最短路径并查看所有关系时,它需要很长时间。
我尝试将查询分解为多个查询,如下所示,但这也花费了很多时间。
MATCH (s:Stop)--(st:Stoptime), (e:Stop)--(et:Stoptime)
MATCH p1 = (st)-[r1*..4]-(st2:Stoptime),
p2 = (st2:Stoptime)-[r2*..4]-(st3:Stoptime),
p3 = (st4:Stoptime)-[r3*..4]-(st5:Stoptime),
p4 = (st5:Stoptime)-[r4*..4]-(et:Stoptime)
WHERE s.name IN [ 'Schlump', 'U Schlump']
AND e.name IN ['Hauptbahnhof Süd', 'HBF/Steintorwall' , 'Hamburg Hbf']
AND all(x1 in nodes(p1) WHERE (x1:Stoptime))
AND all(x2 in nodes(p2) WHERE (x2:Stoptime))
AND all(x3 in nodes(p3) WHERE (x3:Stoptime))
AND all(x4 in nodes(p4) WHERE (x4:Stoptime))
RETURN r1, r2, r3, r4
我该怎么办?
我怎样才能找到某些节点之间的所有关系?
两个节点之间return所有路径是否可行,取决于图结构
如果你有圆形结构或密集图,两个节点之间会有非常多的路径。请参阅此问题以获得更多见解:Find all paths between two graph nodes
我认为 public 运输系统的图表会非常密集。因此,return由于图论(不是因为未优化的查询),两个站点之间的所有路径都不起作用。
您必须弄清楚为什么您需要所有路径,以及您是否可以以不同的方式或使用某些约束(例如最大长度)来制定该查询。此外,如果您确实需要所有路径,您的图形结构可能不适合回答您的问题。
我正在尝试计算 2 个节点之间的所有关系:
对我来说,shortestpath、allshortestpaths 和 apoc.algo.dijkstra 工作得很好。但是这些不会获取 2 个节点之间的所有关系。
这是我的查询,运行速度非常快:
MATCH (s:Stop)--(st:Stoptime), (e:Stop)--(et:Stoptime)
WHERE s.name IN [ 'Schlump', 'U Schlump']
AND e.name IN ['Hauptbahnhof Süd', 'HBF/Steintorwall' , 'Hamburg Hbf']
AND st.arrival_time < et.departure_time
MATCH p = allshortestpaths((st)-[r:PRECEDES*]->(et))
RETURN p
但是当我删除所有最短路径并查看所有关系时,它需要很长时间。
我尝试将查询分解为多个查询,如下所示,但这也花费了很多时间。
MATCH (s:Stop)--(st:Stoptime), (e:Stop)--(et:Stoptime)
MATCH p1 = (st)-[r1*..4]-(st2:Stoptime),
p2 = (st2:Stoptime)-[r2*..4]-(st3:Stoptime),
p3 = (st4:Stoptime)-[r3*..4]-(st5:Stoptime),
p4 = (st5:Stoptime)-[r4*..4]-(et:Stoptime)
WHERE s.name IN [ 'Schlump', 'U Schlump']
AND e.name IN ['Hauptbahnhof Süd', 'HBF/Steintorwall' , 'Hamburg Hbf']
AND all(x1 in nodes(p1) WHERE (x1:Stoptime))
AND all(x2 in nodes(p2) WHERE (x2:Stoptime))
AND all(x3 in nodes(p3) WHERE (x3:Stoptime))
AND all(x4 in nodes(p4) WHERE (x4:Stoptime))
RETURN r1, r2, r3, r4
我该怎么办? 我怎样才能找到某些节点之间的所有关系?
两个节点之间return所有路径是否可行,取决于图结构
如果你有圆形结构或密集图,两个节点之间会有非常多的路径。请参阅此问题以获得更多见解:Find all paths between two graph nodes
我认为 public 运输系统的图表会非常密集。因此,return由于图论(不是因为未优化的查询),两个站点之间的所有路径都不起作用。
您必须弄清楚为什么您需要所有路径,以及您是否可以以不同的方式或使用某些约束(例如最大长度)来制定该查询。此外,如果您确实需要所有路径,您的图形结构可能不适合回答您的问题。