看板 Gossiping 關於我們 聯絡資訊
小弟學店資工系 簡單介紹一下這個演算法 作者在文中已經有提到是dijkstra's algorithm 戴克斯奧拉演算法 主要用在最短路徑的探討上 其實可以應用在很複雜的鐵路系統 可惜台灣高鐵連一圈都沒有連起來 所以簡單很多 範例影片 https://www.youtube.com/watch?v=5GT5hYzjNoo&t=5s
我們拿高鐵台北站來作範例 影片中會有無限符號可以想成無法直接買到那站的車票 要轉車所以暫時是未知 票價圖 http://imgur.com/K7isTxw
先把台北站可以到達的票價都先列出來 http://imgur.com/FOe9ktS.jpg
這是從台北坐到各站的價錢 台北->南港再到各站的價錢 比對之後沒有比較便宜的 所以照抄下來 台北到南港已經是最便宜 用紅色底標註 http://imgur.com/JkfckeI.jpg
然後比對從台北->板橋 再到各站的價格有無較便宜 剛剛忘記放數據了 這裡開始會放 未標註地名的是代表台北到該站再到各站的價錢 像下圖是台北到板橋再到各站 (台北到板橋:40 + 板橋到各站:x) 有標註地名的是表示從哪一站過來的 http://imgur.com/jbwwya3.jpg
所以可以看到從台北直達還是都比較便宜 下一站 桃園 台北->桃園->各站 http://imgur.com/rFdOmkp.jpg
這裡可以看到某些站的價格已經打平了 不過打平還不夠 http://imgur.com/NbdF4Qy.jpg
下一站 新竹 台北->新竹->各站 http://imgur.com/fw24NFz.jpg
還是打平的狀態 下一站 苗栗 各位同胞們我們在台北->苗栗->嘉義終於省了10塊錢啦(用藍色標註 http://imgur.com/5ArhDaB.jpg
所以嘉義那邊地名改成苗栗 以後到嘉義都要先到苗栗轉車 苗栗忘記打出來了= =" 下一站 台中 還是打平 這邊要注意到嘉義都要在苗栗轉車 所以到嘉義路徑是 台北->苗栗->台中->嘉義 http://imgur.com/IY7W54s.jpg
下一站 彰化 還是一樣 數據忘記截= =" 抱歉 http://imgur.com/NRoNMMJ.jpg
下一站 雲林 http://imgur.com/KAKClN9.jpg
還4一樣 http://imgur.com/Pat5ivk.jpg
下一站 嘉義 由於前面知道 台北到嘉義在苗栗轉車會比較便宜 所以剩下的台南和高雄都會在苗栗轉車 也就是 台北->苗栗->嘉義->各站 這樣子 http://imgur.com/pMFUDvp.jpg
左營再便宜了10元 下一站 台南 http://imgur.com/qPVVWyR.jpg
沒有比較便宜 http://imgur.com/ouAOTQh.jpg
所以根據dijkstra's 演算法 到左營的確可以便宜20元 不過這是沒有考慮時間的問題 如果考慮進時間的話 相信絕對還是是台北高雄直達CP值最高的 在此做個簡單的介紹 有誤還請指正 如果變成考題學弟妹不要怪我030 -- 作者 jason880331 (3--(^—^)--€) 看板 Gossiping 標題 有沒有手機被同學拿去發廢文的八卦 時間 Mon May 11 18:10:36 2015 ─────────────────────────────────────── 桶我啊 幹 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 174.22.7.165 ※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1502778667.A.1C8.html
seafox5566: 1f帥08/15 14:32
shiburin: 嗯跟我想的一樣08/15 14:32
mcmcmc: 操作不難 難的是證明為何是對的08/15 14:34
J個小弟還真沒學過 我只會驗算
Cybershit: 高鐵路線基本上只是一條鍊 看不出Dijkstra's的特點08/15 14:34
的確 可是我想不到什麼好例子 要我算公車我會算到死
seuil: 演算法厲害 可以算出便宜20元 跟我用紙筆算的一樣08/15 14:35
wemee: 樓下跳針貪婪法則跟旅行背包解高鐵問題08/15 14:35
hipab: 樓下負cycle shortest path 讓高鐵無限迴圈08/15 14:40
※ 編輯: orz8809ed (174.22.7.165), 08/15/2017 14:44:38
end81235: 在說什麼啊,每條路的成本不同,要看成不同的路啊08/15 14:49
不同的路都有算出來成本 如果沒有比較便宜就沿用原本的 像一開始到左營是直達 最後到? 社? ※ 編輯: orz8809ed (174.22.7.165), 08/15/2017 14:54:03
fate201: 每條路的票價當成距離就好了 最終移動距離都相同啊08/15 14:52
end81235: 和一條鍊有什麼關係?路徑畫出來就是一張網08/15 14:52
的確權重畫出來是一張網 一條鏈指的是高鐵實際上是一條路線
Cybershit: 樓上 你有聽過最短路徑樹嗎 08/15 14:53
Cybershit: 還一張網勒...08/15 14:53
end81235: …台北到台中,台中再到高雄,和台北到高雄是三條線08/15 14:54
end81235: 講這樣夠白了吧…08/15 14:54
我這裡沒有把所有權重畫出來 所有權重有66個 大大有耐心畫出來的話會非常感謝XD ※ 編輯: orz8809ed (174.22.7.165), 08/15/2017 15:00:13
Cybershit: 不是很明白你想表達什麼 Dijkstra's只會留下到某個點 08/15 14:56
end81235: 最短路徑樹是說,由某一個起點的角度來看的結果 08/15 14:56
Cybershit: 點的最佳路徑的成本當作代表 08/15 14:56
end81235: 和高鐵是直的是彎的,有沒有分枝沒有關係 08/15 14:57
Cybershit: 這求的是單源最短路徑 我想你指的是all pairs 08/15 14:57
end81235: 我是在說,無論高鐵路線長怎樣,只要a站到b站的成本不同 08/15 14:57
end81235: 就要看成不同的路徑 08/15 14:57
end81235: 因為這裡的權重是票價,不是距離,也不是物理上的路徑 08/15 14:58
end81235: 還是我有誤解三樓那句的意思? 08/15 14:59
Cybershit: 3樓? 你現在是在想證明嗎 08/15 15:00
end81235: 4樓啦,看錯 08/15 15:01
Cybershit: 這樣說好了 假設a到b有5種相異路徑 成本不盡相同 08/15 15:02
Cybershit: 演算法跑完 只會留下一種成本最低的路徑 其他的都不管 08/15 15:03
Cybershit: 單源最短路徑的情況下啦 08/15 15:03
Cybershit: 假設起點就是a 那Dijkstra's一旦走到了b 走法肯定是成 08/15 15:04
Cybershit: 本最低 所以之後再有路徑可以到b都無視 因為不會改善 08/15 15:04
Cybershit: a到b 或是a經過b到其他點的距離 08/15 15:04
Cybershit: 在一條鍊的情況下這看不出來 因為只會一直往前鑽 08/15 15:05
高鐵畫出來的圖大概長這樣 http://imgur.com/dNIZbaz.jpg
相對於非每點互聯的圖形 http://imgur.com/yeOYQGv.jpg
高鐵圖的確比較難顯現出dijkstra's的特性 ※ 編輯: orz8809ed (174.22.7.165), 08/15/2017 15:09:51
end81235: …… 08/15 15:08
Cybershit: 哦應該說我錯了 這不算是一條鍊 因為各站間可以直達 08/15 15:08
Cybershit: 我誤會你了 你是對的 08/15 15:09
end81235: 感謝原po補充 08/15 15:09
Cybershit: 所以原圖的確是一張網 不是一條鍊 08/15 15:09
end81235: 不會,互相討論 08/15 15:10