java - Neo4j 中的 Dijkstra 变体 - 查找所有路径

标签 java algorithm neo4j dijkstra

我正在使用 Neo4J 来了解度假胜地的受欢迎程度,根据与他们有类似旅行计划的人,了解某人访问过的地方以及他们下一步可能感兴趣的内容。

我有一个 Neo4 数据库,其中有代表位置的节点和代表它们来自何处的关系。

例如,我有一个“威尼斯”->“罗马”,计数为 300。

现在我想了解创建的路径,以预测人们可能会去的 10 个位置的路径:“威尼斯”->“罗马”->“维也纳”->“巴塞罗那”->“马德里”->...

该项目的目标:

  • 我想了解任意两个节点(所有节点对)之间的所有路径
  • 将路径的最大长度限制为 10,但如果找到,也应该获取长度为 4 等的路径。
  • 使用 Dijiktra 的 - 但该版本侧重于选择最大计数 - 我应该反转计数吗?

我一直在研究所有节点的迭代,然后找到与另一个节点的路径。这将涉及嵌套的 for 循环和 Dijkstra 的一些变体。

已经讨论过如何获取所有节点here

我的问题是:

  • 这种做法是否合适?
  • 如何创建自己的寻路算法 - 或改变现有算法? - 迪杰斯特拉
  • 有没有比通过节点迭代更有效的方法来完成所有这些?

最佳答案

我把类似的东西放在 http://gist.neo4j.org/?9363884 ,它展示了如何保存有关节点中路径的元信息,并用关系类型表示不同的路径。这可能不适用于您想要执行的所有路径查询,但可能会给您一些建模提示。

对于所有路径,我会用 Java 编写自己的算法,并将其用作服务器插件或直接从 Java 代码使用,请参阅 http://docs.neo4j.org/chunked/stable/server-plugins.html

关于java - Neo4j 中的 Dijkstra 变体 - 查找所有路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22304329/

相关文章:

java - 如何用方向键移动矩形?

java - 如何时不时地查看线程中的值?

algorithm - 最大比例子串

neo4j - 遍历所有节点并将每个节点与其他节点进行比较

java - 字段中的列 ' ' 不明确

java - Spring 启动 MVC。传递空请求正文

algorithm - 元素数组的多个查询更新

php - 打印可由电话号码组成的所有字符串排列

java - 为什么 Cypher 查询在平均函数中返回空值?

neo4j - 我如何在 Cypher 的 EXISTS() 中使用 WHERE