以下问题:
发动机(例如汽车)在直道上开始行程。其消耗量与距离成正比(例如480公里使用一个单位的燃料,因此48公里使用十分之一的燃料)。该发动机最多可运输一个燃料单元。
在起始点是供应n0个燃料单位。在路线的不同点,是燃料库(例如n1 @ d1,n2 @ d2等),驾驶员可以在路线上的任何地方卸载燃料。例如,一个单位的值为480公里,驾驶员可以行驶160公里,建造一个装有1/3单位燃料的车厂,并开车回到起点为发动机加油。
我正在寻找一种算法(或一些想法来找到),以找到可以实现的最大距离,具体取决于路线上的起始燃料和油库。
答案 0 :(得分:1)
根据直觉,贪婪算法应该是最佳的,即通过最大化每个仓库中可用的燃料量,您正在最大化可能的路线。这只是我的观点,我认为“路线上的任何地方”实际上都是“在任何一个仓库”。
贪婪算法将如何运作?在每个时间点,您只有两个决定:“前进”或“返回上一个仓库重新填充”。只要它会增加现有的仓库储备,贪婪总会向后移动。
答案 1 :(得分:1)
我认为您也可以“反转”a *,dijkstra方法中使用的“< =”比较。
或添加逻辑参数(最佳,最差)路径。
因此,您可以在不重复代码的情况下保持相同的路径搜索。