Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/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
Path 具有代价性质的Neo4j k-最短路径_Path_Neo4j - Fatal编程技术网

Path 具有代价性质的Neo4j k-最短路径

Path 具有代价性质的Neo4j k-最短路径,path,neo4j,Path,Neo4j,我们正在使用Neo4J 2.0嵌入式;我们有一个约100万个节点和5000万个关系的图;我们必须找到N个最短路径,但有一个众所周知的成本属性,我们发现在neo4j的GraphAlgo类中没有这样的方法,我们想使用Chyper,但是当运行这个查询时 START startNode = node(269604), endNode = node(269605) MATCH path=(startNode)-[:CAR_MAIN_NODES_RELATION*]->(endNode) RETURN

我们正在使用Neo4J 2.0嵌入式;我们有一个约100万个节点和5000万个关系的图;我们必须找到N个最短路径,但有一个众所周知的成本属性,我们发现在neo4j的GraphAlgo类中没有这样的方法,我们想使用Chyper,但是当运行这个查询时

START startNode = node(269604), endNode = node(269605)
MATCH path=(startNode)-[:CAR_MAIN_NODES_RELATION*]->(endNode)
RETURN path AS shortestPath, reduce(cost=0, rel in relationships(path) | cost + rel.edgeLength) AS totalCost
ORDER BY totalCost ASC
LIMIT 3
10分钟后,我们还没有任何结果

有人找到解决这个问题的办法了吗?我们如何实现这样的功能


任何建议都是非常宝贵的。。。谢谢Antonio

GraphAlgoFactory
中提供了两种算法(Dijkstra,a*)。你查过了吗?是的我们查过了。。但是Dijkstra和a*中有一个限制器,它将在返回所有成本最低的路径(如果有多个)后停止迭代器。。。因此总是返回一条路径,除非有两条或多条路径具有相同的成本。相反,我们希望找到具有不同成本的前3条备选路径。也许可以在match子句中指定路径深度,例如
[:CAR\u MAIN\u NODES\u RELATION*.6]
?这将大大减少查询时间。也许你也可以看看
所有最短路径(startNode)-[:CAR\u MAIN\u NODES\u RELATION*]->(endNode))
?是的,如果我在match子句中指定路径深度,这样[:CAR\u MAIN\u NODES\u RELATION*1..5],这将大大减少查询时间,但我正在实现一个路由算法,然后我不知道我需要穿过多少节点和边来计算两个位置之间的路线。我也尝试了所有最短路径(startNode)-[:CAR\u MAIN\u NODES\u RELATION*]->(endNode)),但我有一个奇怪的行为:对于非常接近的点,计算一个或多个路由,但是对于两个非常遥远的位置,没有计算路由。我为类似的任务创建插件。这并不难。