Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
neo4j最短路径算法_Neo4j_Shortest Path - Fatal编程技术网

neo4j最短路径算法

neo4j最短路径算法,neo4j,shortest-path,Neo4j,Shortest Path,我对neo4j中的最短路径算法有一个问题 如果我有一个包含10^6个节点的图,并且每个节点都有1000个关系,则搜索最短路径最多4个级别时,必须搜索1000*1000*1000=10^12个高于总节点数的节点。原因是某些节点在搜索过程中重复。我的问题是,在neo4j最短路径算法中,此搜索需要花费10^6个节点或10^12个节点的时间。换句话说,它是否会将已搜索的节点标记为不再搜索它们 谢谢我不相信会用那种修剪。在Cypher中,遍历的默认唯一性是RELATIONSHIP_PATH:在每个路径中,

我对neo4j中的最短路径算法有一个问题

如果我有一个包含10^6个节点的图,并且每个节点都有1000个关系,则搜索最短路径最多4个级别时,必须搜索1000*1000*1000=10^12个高于总节点数的节点。原因是某些节点在搜索过程中重复。我的问题是,在neo4j最短路径算法中,此搜索需要花费10^6个节点或10^12个节点的时间。换句话说,它是否会将已搜索的节点标记为不再搜索它们


谢谢

我不相信会用那种修剪。在Cypher中,遍历的默认唯一性是RELATIONSHIP_PATH:在每个路径中,关系必须是唯一的,不能重用

您可以尝试在中使用最短路径proc,或者改用其中一个

使用APOC路径扩展器,您可以自己将唯一性设置为NODE_GLOBAL(这会阻止在所有扩展过程中多次处理相同的节点),或者使用已在后台执行此操作的程序之一(
subgraphNodes()
subgraphhall()
,或
spanningTree()

APOC目前面临的问题是,您当前无法提供扩展的结束节点(您必须扩展到具有特定定义标签的节点,并使用WHERE子句过滤结果),并且扩展只能朝一个方向(从开始节点向外)而不是双向(例如从cypher的shortestPath()),因此,从另一个方向扩展不会带来任何效率提升

我目前在APOC上有一个PR,可以提供已知的扩展终端节点,因此应该可以在下一个APOC版本中发布(在下周左右)