我使用 Titan 1.0.0 和 Cassandra 作为后端。
我有位置数据(纬度,经度)作为这些节点之间的节点和边。我想找到从节点 A 到节点 B 的最短路径。图非常大。目前我正在使用此查询来查找两个节点之间的路径。
g.V(fromNode).repeat(both().simplePath()).until(is(toNode)).limit(1).path().fill(list);
这个查询效率很低,并且路径大小超过 10 时会出现内存错误。在阅读了最短路径算法之后,我知道实现 A* 将比实现 Dijkstra 更可行,因为将探索更少的图。
现在我可以使用 JUNG 并将 TitanGraph 加载到内存中并实现我自己的 A* 以获得最短路径。但我不希望整个图表都在内存中。
请建议我如何在 TitanGraph 上实现 A*。我应该使用 API 查询图形,还是应该先将图形加载到内存中,然后在内存图形上运行 A*。
我也会感谢任何其他建议。