圖的最短路徑之楊貴妃荔枝自由

背景

《新唐書》記載,楊貴妃嗜荔枝,必欲生致之,乃置騎傳送,走數千裏,味未變,已至京師。程序員

正文

此時已經是二更天,我仍無意睡眠。code

今日皇帝剛剛下旨,命令咱們這些差管將剛剛成熟的荔枝送往京城,必須新鮮,不然就地問斬。程序

可蜀中到長安數千裏,途徑數十城市,如何尋得最短路徑,將新鮮荔枝送入皇宮呢?方法

夜不能寐,便掌了一盞燈,坐在書房苦思。im

夫人聽見了動靜,來到我旁邊,看我長吁短嘆,便寬慰到:"相公,事到如此也無甚好辦法。皇命不可違,咱們只能走一步看一步吧。"地圖

我聽了,無奈搖搖頭,喃喃到:"若找不到最短路徑,咱們就是日夜奔馳,馬不停蹄,也沒法完成皇命啊,怎麼能說走一步看一步,走一步看一步。。。"img

這時,我忽然想到了什麼,拿出紙和筆,推算了一遍,我彷佛找到了破解之法。di

夫人湊近問道:"相公但是尋得什麼法子?"loading

我笑到:"仍是夫人提醒了我啊,這個法子就是 走一步看一步!"co

"哦,這是何意?"

我在紙上畫到

地圖

"夫人請看,咱們能夠畫個簡略的從蜀中到長安的地圖。

如圖所示,當前咱們身處蜀中,從蜀中到長安有可能途經任何一個城市。

但從從蜀中來看,咱們可去的城市只有佳城 宜城 二城,距離分別是45

地圖

按照夫人所言,走一步,那咱們就去離蜀中最近的城市,即佳城

假設咱們已經到了佳城,環城四顧,也就是看一步,發現尚未去過而且相鄰的城市有 宜城冰城
咱們分別梳理一下

  1. 宜城

當咱們在蜀中的時候,記錄下來蜀中 宜城的最近距離是5,途經 蜀中->宜城。
如今發現從佳城也能夠到宜城,可是距離是蜀中佳城的最近距離加佳城 宜城之間的距離,即4+4=8,剛纔是5,如今是8,因此蜀中宜城的最短距離和路徑不變。

  1. 冰城

咱們以前尚未記錄過冰城的相關信息,因此直接記下蜀中冰城的途徑爲 蜀中 ->佳城->冰城,距離爲蜀中佳城的最近距離加佳城冰城的距離,即4+5=9

紅色表明已去過城市

地圖

路徑圖

而後,咱們再走一步看一步

此時,咱們再挑一個咱們沒有去過而且距離蜀中最近的城市,上圖所示,這次咱們要去宜城

到達宜城以後,咱們又看一步,發現宜城相鄰的而且沒有去過的城市只有鼎城

那比較簡單,直接記錄下蜀中鼎城的最近距離和路徑。

地圖

路徑圖

好的,到了這一步夫人可知如何進行下一步嗎?"

"我知道啊,天然仍是 走一步 ,能夠當前冰城鼎城距離都是9,咱們該去哪座城市呢?"

"好問題,既然距離同樣,那咱們隨機去哪個都行。讓我想一下,夫人冰雪聰明,那咱們就去冰城吧"。

夫人嬌嗔到:"相公又拿我打岔,咱們先幹正事吧!"

我笑到:"來,咱們接着走。此時咱們到了冰城,又 看一步,即發現冰城相鄰的而且沒有去過的城市只有子城
因此以下圖所示

地圖

路徑圖

此時咱們再次選擇距離蜀中最近而且沒有去過的城市,爲鼎城
到達鼎城以後,相鄰的而且沒有去過的城市只有長安,也就是咱們的最終目的地。

地圖

路徑圖

夫人嘆道:"真不容易啊,咱們終於到了長安了!"

我:"慢,從路徑圖中咱們看到子城咱們尚未去,並且從這個城市到長安的路徑可能更近。咱們來看。

此次咱們距離蜀中最近而且沒有去過的城市,即子城,到達子城以後,發現相鄰的而且沒有去過的城市只有長安,而且計算出來從子城長安的距離爲12+2=14,小於從鼎城長安的距離16,因此須要更新長安的最短距離爲14,並記下

地圖

路徑圖

走到此時,咱們還按照以前方法走的話,發現距離蜀中最近而且沒有去的城市只有長安了。等到了長安,發現已無剩餘城市可去。

此時,咱們的結果也呼之欲出。"

夫人在旁邊開心的跳了起來,我也長嘆了一口氣,實際狀況雖比圖中描述複雜不少,但最起碼有了路子能夠尋到最短路徑了。

此時東方既白,雞鳴響起,我推開門,朝陽如鮮花綻開,如水波四散。

我站在院裏,望向遠方,好像看見了長安。


創過業,賠過錢。遂轉行,程序員。

從外包,到大廠。寫代碼,寫文章。

胡思亂想,文章沙雕。

歡迎關注,與君同好。

相關文章
相關標籤/搜索