Neo4j:已知起始节点和多个终端节点之间的最短路径

时间:2018-02-05 16:25:58

标签: graph neo4j cypher dijkstra neo4j-apoc

我有一个包含~10000个节点的图表,我试图找到已知起始节点和未知终端节点之间的最长路径,但是已知类型的读取器。

当我有1000个节点时,这在4秒内计算得很好,但现在需要很长时间,大概是因为可能的终端节点列表很多。

我想知道是否有更好的算法来做到这一点,我唯一可能的想法是为p2添加一些过滤以缩短列表的大小但是这并不理想,因为我想匹配很多边缘例。

MATCH (p1:Book{id: '0532013000'})-[r*1..5]-(p2:Reader) 
CALL apoc.algo.dijkstraWithDefaultWeight(
  p1, p2, 'REL_ONE|REL_TWO|REL_THREE|REL_FOUR', 'mean', 1) YIELD path, weight
RETURN path, weight
ORDER by weight DESC
LIMIT 5

0 个答案:

没有答案