電腦正在升級系統,我上來稍稍溜達溜達。
今天找磊哥給我講了講動態規劃,真心受益,為了防止以后忘了,總結一下先。
磊哥是從尋找一個有向無環圖的最短路講起的,有向無環圖的講法參看《算法導論》,在這里我就不重復說一遍了,因為我實在是沒有辦法把圖畫出來。
實際上磊哥解決了我的一個疑惑,利用他的經驗。
做 動態規劃題對我來說最為鬧心的就是尋找狀態,尋找最優子結構,貌似這兩個一有困難動態規劃的題根本就沒法做了。磊哥告訴我的做法就是枚舉狀態,所謂枚舉狀 態就是把這道題所有可能當狀態的東西都列出來,然后一個個去進行排除。排除的過程是這樣的,首先要進行定義,也就是說要明確這個狀態到底是什么,有什么用 處,然后再用這個狀態畫有向無環圖,如果畫有向無環圖的過程中推理出由這個狀態,后面的根本無法實現或者說出現了矛盾,那么這個狀態就是錯的,最終一定能 夠枚舉出來一個正確的狀態。
/*一說到枚舉,就要考慮一下時間復雜度,但是我認為這個可以忽略不計,就算是對于人腦來說,因為一道題之中貌似能找出來的狀態應該不能超過手指能查找的范圍。好吧,以上是僅供娛樂的題外話。*/
枚 舉出來一個正確的狀態之后,那么就要進入下一個糾結的狀態,那就是尋找最優子結構,磊哥的做法我認為非常高明,那就是我前文所提到的有向無環圖,以狀態當 結點,轉化關系當作邊權,畫有向無環圖,然后參照著有向無環圖的那種方式來尋找最優子結構,但是糾結的就是怎么做邊權,這個確實鬧心,這塊硬骨頭只能是一 點點去啃了。
最優子結構推出來以后,下一步就是推狀態轉移方程,這個沒有別的辦法,就是用最優子結構中所體現的轉化關系來推狀態轉移方程了……
以上這些是磊哥給我講的東西的總結版,目測回憶起來應該是全的,然后按照磊哥的指令(也是執行飛哥說的這個月開始推動態規劃的計劃),應該繼續尋求動態規劃入門,磊哥的意思是做一堆水題練練思想,那么就做吧……然后就應該百度一下DP水題,開始刷,刷一段時間水題吧,怎么說呢,練練思想,先入了動態規劃的門,高級動態規劃有我啃的呢!
飛哥給我定的計劃應該是嚴格執行的,然后我自己定的那個比較山寨的學習計劃也應該執行下去,畢竟數據結構也是個傷,本學期好歹要把數據結構基礎拿下了,動態規劃入門了……