java - neo4j 替代路径

标签 java neo4j cypher

我正在做一个简单的路由软件,实现“好产品”的经典需求是为客户提供不同的路径。

我正在使用 cypher,但据我所知,这是无法实现的..我只能找到我的图表的“allShortestPath”,而不是“几乎最短”。

我的想法是执行多次 dijkstra,在前一条路径的第一条路径上添加一些权重,因此它“可能”会查看另一条路径。问题是我不知道如何让 cypher 评估我的图表上的临时权重。

我什至可以考虑使用 Neo4j 的 java api 创建一个自定义插件,并且我可以直接使用 dijkstra 算法与权重评估器,但我不认为我可以获得所有可能的路径,而只能获得一个

预先感谢您的任何建议

最佳答案

获取最短路径的长度并向 neo4j 询问该长度+1 的路径怎么样?

也许这对你有用:

START n1=node(167), n2=node(169) MATCH p = (n1)-[*..3]-(n2) WHERE length(p) = length(shortestPath((n1)-[]-(n2)))+1 RETURN p

您可能想要限制最大路径长度。

关于java - neo4j 替代路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23406522/

相关文章:

java - 如何在java中阻止子进程并重新启动它们

java - 从另一个 Activity 的共享首选项获取字符串集

neo4j - 发现neo4j grap db中的节点属性

neo4j - 使用定期提交从csv加载大数据时如何在Neo4j中处理事务回滚

java - 为什么我的代码没有抛出 EntityExistsException

递归函数的Java stackoverflow错误

Neo4j 计数零关系?

java - 多级投影上的 Spring Data Neo4J 层次结构映射

neo4j - 查询可以阻止 Neo4j 工作吗

node.js - neo4j响应中 "properties"对象的解释