我正在使用 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/