這個算法開始於伊斯蘭堡,並反覆試圖儘可能開車,而不用耗盡氣體。
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)並且計算返回最優解,但它返回的路線可能不是一條非常「平坦」或「平滑」的路線。爲了生產人們實際使用的路線,需要考慮更多的路線,以便更均勻地停靠它們。
這個問題看起來像一些家庭作業的複製和粘貼作業。無論如何,這是**的主題**爲*「提出問題的代碼必須證明**對所解決問題的最小理解**,包括嘗試解決方案,爲什麼他們沒有工作,以及預期的結果。 :[堆棧溢出問題清單](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)「* –
我無法映射貪婪算法的類型,請幫助! – user2617096
比TSP容易得多。我猜這是訂單N,其中N是兩個城市之間的加油站數量。 – Jiminion