iT邦幫忙

鐵人檔案

第 11 屆 iThome 鐵人賽
回列表
Software Development

動態規劃百題之經典、理論與實作 系列

嗨大家好,我想要利用這個機會幫未來的自己蒐集並整理一些有趣的動態規劃題目,並且試著提出一些自己的心得~

動態規劃是演算法解題中一種常見的解題手段。說穿了,動態規劃就是分而治之法(Divide and Conquer) 搭配紀錄曾經算過的子問題(Memoization) 的一種技巧。至於什麼樣的題目能夠用動態規劃來解,要如何看出一道題目能否使用動態規劃,這時候就要靠大量的例子來自我鍛鍊了。

動態規劃的應用相當廣泛,在生物資訊和組合最佳化的範疇尤其深刻,舉凡路線規劃、空間裝填、序列匹配等都可以看得到動態規劃的影子。如果大家對於我分享的題目有興趣的話,也歡迎補充資料或一起討論!

鐵人鍊成 | 共 30 篇文章 | 75 人訂閱 訂閱系列文 RSS系列文
DAY 21

Day 21: 記錄下每個字元前一次出現的地方很有幫助!

今天原本想到的標題是『一目十行就是指解一道題目你只需要寫十行!』但總覺得這標題有點碼天狗的感覺呢(XD)…好久沒看到碼天狗的技術週刊了說,不知道大家都去哪了QQ...

2019-10-05 ‧ 由 卡卡恩 分享
DAY 22

Day 22: 常見的最短路徑演算法也是一類動態規劃噢!

嗨大家好,今天來跟大家討論圖論問題(Graph Theory)中常見的最短路徑演算法:Floyd-Warshall 演算法以及 Bellman-Ford 演算法...

2019-10-06 ‧ 由 卡卡恩 分享
DAY 23

Day 23: 經典的完全字串匹配演算法也是動態規劃啊!

在判斷一個大字串 Text (T[1...n]) 裡面是否有出現小字串 Pattern (P[1...m]) 的時候,就是需要使用字串匹配演算法的時間了。(或者...

2019-10-07 ‧ 由 卡卡恩 分享
DAY 24

Day 24: 樹上的背包問題常常算一算就省了一個次方!

今天來講講樹上的動態規劃問題吧~先來個一般的動態規劃暖身。 Exercise 40: Leetcode 337 - House Robber III 題目連結...

2019-10-08 ‧ 由 卡卡恩 分享
DAY 25

Day 25: 除了序列以外在計算幾何中也可以動態規劃!

只要有順序關係,就可以輕巧地將題目分切成子問題,並且將子問題的狀態單純地收整起來,提升計算效率!我們來討論兩個相關的例子。 平面上雙調旅行售貨員問題 Eucli...

2019-10-09 ‧ 由 卡卡恩 分享
DAY 26

Day 26: 賽局問題裡面判斷輸贏的過程也是動態規劃!

在賽局理論中,有一類的問題是允許所有玩家看到場面上的所有遊戲資訊的。在遊戲進行中不引入隨機變數 (a.k.a 不擲骰子) 的狀況下,這類問題叫做完全訊息賽局(G...

2019-10-10 ‧ 由 卡卡恩 分享
DAY 27

Day 27: 隨機走訪等機率的計算也能用動態規劃達成!

餓死抬頭(as title),抬頭就starving所以要round robin。就算今天再累也要來刷刷題唷,今天來寫寫機率的題目吧~ Exercise 43:...

2019-10-11 ‧ 由 卡卡恩 分享
DAY 28

Day 28: 透過鋪磚塊問題來看看動態規劃可運用之處!

今天來跟大家聊聊大家常見的指數級別動態規劃從哪裡把時間省下來的~ 鋪磚塊問題 2*N 鋪磚塊問題 題目是這樣的,給你一個 2*N 大小的矩形地板空間,你可以用許...

2019-10-12 ‧ 由 卡卡恩 分享
DAY 29

Day 29: 利用一點點的貪婪演算法提升動態規劃效能!

如果說,動態規劃是個穩穩地將所有可能的狀態逐一計算、集中並且化簡。那麼貪婪法(Greedy Algorithm) 就是另一個方向:通常僅考慮一小部分的狀態計算,...

2019-10-13 ‧ 由 卡卡恩 分享
DAY 30

Day 30: 那些沒有提到的動態規劃和還沒做完的題目。

今天是最後一天,很開心能夠努力寫完三十天份量的動態規劃介紹。也很感謝不吝追蹤這個系列的邦友們!當初的規劃大概是這樣的,先花個十天寫寫基本的動態規劃概念,然後中間...

2019-10-14 ‧ 由 卡卡恩 分享