该算法从伊斯兰堡开始,并反复尝试在不耗尽汽油的情况下尽可能地行驶。
current_distance = 0
current_stop = 0
stops = []
while current != lahore:
next_stop = 0
while distance(next_stop) - current_distance <= m:
next_stop = next_stop + 1
next_stop = next_stop - 1
current_stop = next_stop
current_distance = distance(current_stop)
add next_stop to stops
return stops
这是一个最佳解决方案。为了看到这一点,我们注意到任何停靠点少于贪婪算法的停靠点序列都必须在沿路线的某个点“通过”贪婪算法。
使用归纳法,我们可以看到,如果贪心算法在第一个停靠点之后最远,并且在第 n 个停靠点之后,它是最远的,它可以被给予第 n - 1 个停靠点,那么贪心算法必须是它可以最远的地方沿途所有站点。
尽管该算法的复杂度为 O(n) 并通过计算返回最优解,但它返回的路线可能不是非常“均匀”或“平滑”的路线。为了生成供人们实际使用的路线,需要考虑更多将停靠点间隔更均匀的路线。