今天是最後一天,很開心能夠努力寫完三十天份量的動態規劃介紹。也很感謝不吝追蹤這個系列的邦友們!當初的規劃大概是這樣的,先花個十天寫寫基本的動態規劃概念,然後中間十天提出各種狀態設計和加速的小技巧,最後十天描述動態規劃在各個領域裡頭的應用。不過很可惜的是後面有點沒力氣了,一些經典的單調序列優化、凹凸函數優化、隱藏式馬可夫模型跟各種近似演算法的應用都來不及介紹哈哈(逃避中)。
這一陣子挑選的練習題主要以 Leetcode 為主。而且是使用 Python 來撰寫,而非大家傳統程式設計解題活動方面偏好的 C++、Java 甚至是 Javascript。使用 Python 來寫主要是因為我覺得 Python 在某些語句上比較能夠傳達語意,寫起來沒有 C++ 那麼瑣碎。不過當然也有不太方便的地方就是了。程式碼或解題思路寫得不夠清晰,這部份還請各位邦友提點,我會加以改進的。
最後一天,在這邊補上關於動態規劃的一些性質和觀念,這部份還滿教科書的,我還是比較喜歡使用頭幾天的撰文方式,雖然寫起來很模糊,但是能透過實際舉例來感受動態規劃帶來的好處。
一道題目如果能夠使用動態規劃,則它的問題結構通常會滿足以下兩個條件:
最後偷偷提一下,動態規劃除了在資訊科學這個領域以外,最大的應用其實是在作業研究(Operations Research,或稱運籌學)主要是研究各種資源配置,用來最佳化某個目標的方法。而更深更廣版的動態規劃在這裡便有著不可或缺的地位。在我們學校中,作業研究好像是歸類在工業工程學系底下的一個重要領域。
耶~終於達成了持續交付三十天了...嗎?(需要更多的 CD 時間啊啊啊啊)終於可以開始練下禮拜的馬拉松了(狀態:狂睡)
終於做完這一系列了,雖然大部分題目一開始都想不出來,但這種腦力激盪(ㄗˋ ㄋㄩㄝˋ)的感覺真是不錯,雖然一開始進來是為了準備面試,本來想說看到少考的就跳過,後來還是想說想不出來搞懂了也未嘗不好,就默默的看完了...雖然花了很多時間搞懂,功力還是遠遠不夠,不過anyway感謝大大的分享,至少目前沒有看到其他有人整理這麼豐富的dp大集合。
謝謝你熱情地一起把這系列題目做完~~~!!!
感謝大大分享,祝大大一生平安~
最後有個問題想請教,大大有沒有一些突破解題卡關的心得,我卡在一個不上不下的階段很久(至少一年多了),不確定要怎麼辦才能突破.
我有個想法提供給您 可以參考看看~ 比較 hardcore 的方法是想破頭都想不出來才去看討論串(的標題!) 通常標題會很爆雷地告訴你這題要用什麼方法做。然後照著那個想法再繼續想下去,如果還是毫無頭緒再點進去看答案~ 比較沒那麼 hardcore 的方法就是把想破頭的時間縮短成五分鐘,而且是紮紮實實的五分鐘~
了解了,感謝您!