小编Sha*_*azu的帖子

如何使用Cypher在Neo4j中实现Dijkstra算法

我的问题是:是否可以使用Cypher实现Dijkstra的算法?关于neo4j网站的解释只讨论REST API,对于像我这样的初学者来说很难理解

请注意,我想找到两个节点之间最短距离的最短路径,而不是两个节点之间的最短路径(涉及最少数量的关系).我知道使用Cypher很容易实现的shortestPath算法,但它不符合我的目的.

如果我有一个包含节点的图形数据库,以及具有属性"距离"的节点之间的关系,请指导我如何继续.我想要的只是编写一个代码,借助它我们将能够找到数据库中两个节点之间的最短距离.或者如果我需要改变我的方法并使用其他程序的任何提示?

dijkstra neo4j cypher

7
推荐指数
1
解决办法
2173
查看次数

在Neo4j中实现Dijkstra算法

我是Neo4j的新手.有人可以向我解释(请一步一步)我如何实现Dijkstra的算法来找到两个节点之间的最短路径?是否可以使用Cypher简单地完成它?

我已经尝试过shortestPath算法,但速度非常慢:

MATCH (from: Location {LocationName:"x"}), (to: Location {LocationName:"y"}) , path = (from)-[:CONNECTED_TO*1..5]->(to)
RETURN path AS shortestPath, 
    reduce(distance = 0, r in relationships(path)| distance+toInt(r.Distance)) 
AS totalDistance
    ORDER BY totalDistance ASC
    LIMIT 1
Run Code Online (Sandbox Code Playgroud)

我的节点是:具有属性LocationID和LocationName的位置我的关系是:CONNECTED_TO属性Distance

我有6000多个关系

请注意在上面的代码中我限制为1..5,当我没有定义此限制时,查询不会给出任何结果(继续执行)

谢谢

neo4j cypher

5
推荐指数
1
解决办法
4076
查看次数

标签 统计

cypher ×2

neo4j ×2

dijkstra ×1