Neo4j中的Dijkstra变化 - 找到所有路径

时间:2014-03-10 15:29:03

标签: java algorithm neo4j dijkstra

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

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

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

现在我想了解创建的路径,预测10个位置的路径,这些路径可能是人们去的地方:“威尼斯” - > “罗马” - > “维也纳” - > “barcelona” - > “madrid” - > ...

该项目的目标:

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

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

讨论了如何获取所有节点here

我的问题是:

  • 这种方法是否合适?
  • 如何创建自己的路径查找算法 - 或改变现有算法? - Dijkstra
  • 是否有更有效的方法来完成所有这些,而不是通过节点迭代?

1 个答案:

答案 0 :(得分:1)

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

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