Re: [新聞] 超狂數學教授活用演算法 高鐵分段買票竟較便宜消失

看板Gossiping作者時間6年前 (2017/08/15 14:31), 6年前編輯推噓10(10034)
留言44則, 13人參與, 最新討論串8/12 (看更多)
小弟學店資工系 簡單介紹一下這個演算法 作者在文中已經有提到是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

08/15 14:32, , 1F
1f帥
08/15 14:32, 1F

08/15 14:32, , 2F
嗯跟我想的一樣
08/15 14:32, 2F

08/15 14:34, , 3F
操作不難 難的是證明為何是對的
08/15 14:34, 3F
J個小弟還真沒學過 我只會驗算

08/15 14:34, , 4F
高鐵路線基本上只是一條鍊 看不出Dijkstra's的特點
08/15 14:34, 4F
的確 可是我想不到什麼好例子 要我算公車我會算到死

08/15 14:35, , 5F
演算法厲害 可以算出便宜20元 跟我用紙筆算的一樣
08/15 14:35, 5F

08/15 14:35, , 6F
樓下跳針貪婪法則跟旅行背包解高鐵問題
08/15 14:35, 6F

08/15 14:40, , 7F
樓下負cycle shortest path 讓高鐵無限迴圈
08/15 14:40, 7F
※ 編輯: orz8809ed (174.22.7.165), 08/15/2017 14:44:38

08/15 14:49, , 8F
在說什麼啊,每條路的成本不同,要看成不同的路啊
08/15 14:49, 8F
不同的路都有算出來成本 如果沒有比較便宜就沿用原本的 像一開始到左營是直達 最後到? 社? ※ 編輯: orz8809ed (174.22.7.165), 08/15/2017 14:54:03

08/15 14:52, , 9F
每條路的票價當成距離就好了 最終移動距離都相同啊
08/15 14:52, 9F

08/15 14:52, , 10F
和一條鍊有什麼關係?路徑畫出來就是一張網
08/15 14:52, 10F
的確權重畫出來是一張網 一條鏈指的是高鐵實際上是一條路線

08/15 14:53, , 11F
樓上 你有聽過最短路徑樹嗎
08/15 14:53, 11F

08/15 14:53, , 12F
還一張網勒...
08/15 14:53, 12F

08/15 14:54, , 13F
…台北到台中,台中再到高雄,和台北到高雄是三條線
08/15 14:54, 13F

08/15 14:54, , 14F
講這樣夠白了吧…
08/15 14:54, 14F
我這裡沒有把所有權重畫出來 所有權重有66個 大大有耐心畫出來的話會非常感謝XD ※ 編輯: orz8809ed (174.22.7.165), 08/15/2017 15:00:13

08/15 14:56, , 15F
不是很明白你想表達什麼 Dijkstra's只會留下到某個點
08/15 14:56, 15F

08/15 14:56, , 16F
最短路徑樹是說,由某一個起點的角度來看的結果
08/15 14:56, 16F

08/15 14:56, , 17F
點的最佳路徑的成本當作代表
08/15 14:56, 17F

08/15 14:57, , 18F
和高鐵是直的是彎的,有沒有分枝沒有關係
08/15 14:57, 18F

08/15 14:57, , 19F
這求的是單源最短路徑 我想你指的是all pairs
08/15 14:57, 19F

08/15 14:57, , 20F
我是在說,無論高鐵路線長怎樣,只要a站到b站的成本不同
08/15 14:57, 20F

08/15 14:57, , 21F
就要看成不同的路徑
08/15 14:57, 21F

08/15 14:58, , 22F
因為這裡的權重是票價,不是距離,也不是物理上的路徑
08/15 14:58, 22F

08/15 14:59, , 23F
還是我有誤解三樓那句的意思?
08/15 14:59, 23F

08/15 15:00, , 24F
3樓? 你現在是在想證明嗎
08/15 15:00, 24F

08/15 15:01, , 25F
4樓啦,看錯
08/15 15:01, 25F

08/15 15:02, , 26F
這樣說好了 假設a到b有5種相異路徑 成本不盡相同
08/15 15:02, 26F

08/15 15:03, , 27F
演算法跑完 只會留下一種成本最低的路徑 其他的都不管
08/15 15:03, 27F

08/15 15:03, , 28F
單源最短路徑的情況下啦
08/15 15:03, 28F

08/15 15:04, , 29F
假設起點就是a 那Dijkstra's一旦走到了b 走法肯定是成
08/15 15:04, 29F

08/15 15:04, , 30F
本最低 所以之後再有路徑可以到b都無視 因為不會改善
08/15 15:04, 30F

08/15 15:04, , 31F
a到b 或是a經過b到其他點的距離
08/15 15:04, 31F

08/15 15:05, , 32F
在一條鍊的情況下這看不出來 因為只會一直往前鑽
08/15 15:05, 32F
高鐵畫出來的圖大概長這樣 http://imgur.com/dNIZbaz.jpg
相對於非每點互聯的圖形 http://imgur.com/yeOYQGv.jpg
高鐵圖的確比較難顯現出dijkstra's的特性 ※ 編輯: orz8809ed (174.22.7.165), 08/15/2017 15:09:51

08/15 15:08, , 33F
……
08/15 15:08, 33F

08/15 15:08, , 34F
哦應該說我錯了 這不算是一條鍊 因為各站間可以直達
08/15 15:08, 34F

08/15 15:09, , 35F
我誤會你了 你是對的
08/15 15:09, 35F

08/15 15:09, , 36F
感謝原po補充
08/15 15:09, 36F

08/15 15:09, , 37F
所以原圖的確是一張網 不是一條鍊
08/15 15:09, 37F

08/15 15:10, , 38F
不會,互相討論
08/15 15:10, 38F
※ 編輯: orz8809ed (174.22.7.165), 08/15/2017 15:17:09

08/15 15:18, , 39F
時間複雜度?
08/15 15:18, 39F

08/15 16:04, , 40F

08/15 16:05, , 41F

08/15 16:05, , 42F
本魯用剛剛用matlab跑的
08/15 16:05, 42F

08/15 19:16, , 43F
08/15 19:16, 43F

08/16 00:45, , 44F
要所有點跑個Floyd-warshall就好啦 高鐵站數又不多
08/16 00:45, 44F
文章代碼(AID): #1PafKh78 (Gossiping)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 8 之 12 篇):
文章代碼(AID): #1PafKh78 (Gossiping)