我正在创建一个应用程序,找到用户可以使用不同或指定的公共交通模式(例如火车,公共汽车,有轨电车等)从A点到达B点的所有可能路线。当然,允许走边。我使用neo4j存储数据,请你建议我找到最短路径的算法,我从未使用多模态图
答案 0 :(得分:0)
Cypher(Neo4j查询语言)有一个名为shortestPath
和allShortestPaths
的函数,可用于查找与给定模式匹配的最短路径。
查看文档here。例如:
MATCH (martin:Person { name:"Martin Sheen" }),(oliver:Person { name:"Oliver Stone" }),
p = shortestPath((martin)-[*..15]-(oliver))
RETURN p
通过路由,您经常需要考虑成本,通常由关系中的属性表示。有几种路径查找图算法可以与Neo4j一起使用,它将考虑成本。具体来说,Dijkstra algorithm通过Neo4j REST API公开。 Java API提供了更多图形算法,如here所述。