我遇到了以下问题: 我必须找到修正顺序中多于2个点之间的最短路径(例如A - > D - > F)。 我熟悉Dijkstra的算法。但那个只计算两点之间的最短路径。而且我也听说过TSP,但这似乎也不合适。因为没有修正订单。 我已经在网上搜索了我的问题,但也许这不是一个非常受欢迎的问题,或者我使用了错误的关键词。
但是,必须存在解决方案,因为有许多路线规划器,它成功地提供了这个功能。
那么请,任何人都可以通过命名一个aglorithm帮助我解决我的问题,或者给我一些建议。
非常感谢你的帮助! 你真诚的,Angelo
//编辑 哦,这很尴尬。我似乎想了很久,所以我没有描述真正的问题。 它是这样的:有一些门票,只能从头开始使用。
T1:A - > B(费用50) T2:B - > C(费用50) T3:A - > B - > C(费用80) 给定的路线是A - > B - > ç
现在您看,如果我们将给定路线视为两个独立的问题,我们将总成本为100,但很明显,Ticket T3是更好的解决方案。
答案 0 :(得分:1)
如果某些点已修复但其他点不是(意味着用户想要从A->D->F
开始,但图表意味着他们可能需要执行A->B->C->D->E->F
)这是一个标准问题。要么你关心ADF的订单,要么你不关心它(它可能是AFD)。在第一种情况下,您可以单独计算两个路径(A->D
D->F
)。在第二种情况下,它更像是TSP。
答案 1 :(得分:0)
你可以找到A和D之间的最短路径,然后是D和F之间的最短路径。对每对节点应用Dijkstra算法多次。