假设我有一个图表,其中包含代表城市的节点以及代表城市之间可能连接的关系。连接有出发和到达时间。我想找到城市<td ng-show="perm.contain == 'create-user' ">X</td>
和A
之间的最短路径,而费用函数是总的旅行时间。旅行时间是连接和连接时间之间的等待时间的总和。
我使用Java API,并尝试使用B
使用Dijkstra算法。我的主要问题似乎是,GraphAlgoFactory.dijkstra(expander, costEvaluator)
接口只接收当前关系而不是完整路径。这样我可以计算连接持续时间而不是等待时间。
我可以采取哪些措施来调整现有算法,还是必须重新实现Dijkstra?
答案 0 :(得分:0)
路径的总成本将是给定关系的每个评估的getCost()
返回值的总和,因此只需定义如何在关系级别上评估成本,总成本是多少由算法本身评估。
另一方面,您可以使用Cypher,假设等待时间是departure_time
和arrival_time
之间的差异:
MATCH p=(a:City {name:"NY"})-[r:CONNECTS*..10]->(b:City {name:"LA"})
WITH p, reduce(
cost=0, x IN rels(p) | cost + (x.departure_time - x.arrival_time)
) as cost
RETURN p, cost
ORDER BY cost ASC
LIMIT 1