neo4j路径发现算法(Path finding algorithms)-6.The Yen’s K-shortest paths algorithm

一.介绍:
  k条最短路径算法(KSP):通常情况下,最短路径问题分为:单源最短路径和所有顶点对之间的最短路径,但两个都有一个问题,两种都只考虑两点之间最短的那一条路径,不考虑次短,再次短等路径。
  KSP问题是对最短路径问题的推广,它除了要确定最短路径之外,还要确定次短路径、第三短路径,…,知道找到第K短路径。用Pi表示从起点s到终点t的第i短路径,KSP问题是确定路径集合Pk={p1,p2,p3,…,pk},使得满足以下3个条件:
1)K条路径是按次序产生的,即对于所有的i(i=1,2,…,K-1),pi是在pi+1之前确定;
2)K条路径是按长度从小到大排列的,即对于所有的i(i=1,2,…,K-1),都有c(pi)<c(pi+1);
3)这K条路径是最短的,即对于所有的p∈Pst-PK,都有c(pk)<c§。

算法思想:
   算出第一条最短路径p(1),然后在比基础上依次算出其他的k-1条最短路径。
   在求p(i+1)时,将p(i)上除了终止节点外的所有节点视为偏离节点,并计算每个偏离点到终止节点的最短路径,
   再与之前的p(i)上起始节点到偏离节点的路径拼接,构成候选路径,进而求得最短偏离路径。

二. neo4j算法:

CALL algo.kShortestPaths(startNode:Node, endNode:Node, k:int, weightProperty:String,
{nodeQuery:'labelName', relationshipQuery:'relationshipName', direction:'OUT',
defaultValue:1.0,
maxDepth:42, write:'true', writePropertyPrefix:'PATH_'})
YIELD resultCount, loadMillis, evalMillis, writeMillis

三 .实例:

MERGE (a:Loc {name:'A'})
MERGE (b:Loc {name:'B'})
MERGE (c:Loc {name:'C'})
MERGE (d:Loc {name:'D'})
MERGE (e:Loc {name:'E'})
MERGE (f:Loc {name:'F'})
MERGE (a)-[:ROAD {cost:50}]->(b)
MERGE (a)-[:ROAD {cost:50}]->(c)
MERGE (a)-[:ROAD {cost:100}]->(d)
MERGE (b)-[:ROAD {cost:40}]->(d)
MERGE (c)-[:ROAD {cost:40}]->(d)
MERGE (c)-[:ROAD {cost:80}]->(e)
MERGE (d)-[:ROAD {cost:30}]->(e)
MERGE (d)-[:ROAD {cost:80}]->(f)
MERGE (e)-[:ROAD {cost:40}]->(f);

在这里插入图片描述

MATCH (start:Loc{name:'A'}), (end:Loc{name:'F'})
CALL algo.kShortestPaths.stream(start, end, 5, 'cost' ,{})
YIELD index, nodeIds, costs
RETURN [node in algo.getNodesById(nodeIds) | node.name] AS places,
costs,
reduce(acc = 0.0, cost in costs | acc + cost) AS totalCost

根据设置,我们得出了5条从节点A到节点F的最短路径
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
neo4j-community-4.4.21-windows是一个用于Windows操作系统的neo4j图形数据库的发布版本。 首先,要下载neo4j-community-4.4.21-windows,您可以访问neo4j官方网站(https://neo4j.com)或使用GitHub上的Neo4j存储库(https://github.com/neo4j/neo4j/releases)。 在neo4j官方网站上,您可以找到"Download"按钮或类似的链接,点击后会跳转到下载页面。在下载页面上,您可以找到与您的操作系统兼容的文件,如Windows安装程序。点击相应的下载链接,即可开始下载neo4j-community-4.4.21-windows。 在GitHub上,您可以找到标有"Releases"的选项卡,并在其中找到与您的操作系统兼容的文件列表。在文件列表中,找到你想要下载的版本(在这种情况下是neo4j-community-4.4.21-windows),点击下载链接即可开始下载。 下载完成后,您可以在您选择保存的位置找到下载的ZIP或EXE文件。点击或双击该文件,根据您的操作系统的要求运行安装程序。遵循安装向导的说明进行安装。 安装过程可能需要一些时间,取决于您的计算机的性能和当前的网络连接速度。完成安装后,您可以启动neo4j-community-4.4.21-windows,并通过浏览器访问neo4j的图形用户界面。您可以在这个界面上使用图形数据库的功能和特性。 总结来说,要下载neo4j-community-4.4.21-windows,您需要访问neo4j官方网站或GitHub的Neo4j存储库,找到与您的操作系统兼容的文件,点击下载链接,然后按照安装向导的说明进行安装。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值