1. 程式人生 > >最優解問題的求解

最優解問題的求解

1. 一般來說題目中需要求解出最優解的問題,我們是可以使用普通遞迴,遞推,深度優先搜尋,記憶型的遞迴,貪心或者動態規劃來進行求解的

其中使用普通的遞迴或者深搜,遞推這些資料量較小的情況下求解速度還行,假如資料量相對大一點的情況下,而且節點的數量比較多,這個時候使用這些方法來解決往往會耗時比較大,有時候都需要求解半天了,原因是它需要搜尋搜尋的可能,把每一條路都嘗試一遍,等到所有的路徑走完才結束搜尋,時間複雜度是指數級別的上升的,所以來說程式碼的效能會比較差一點

而使用我們的貪心或者動態規劃來求解的話那麼將會大大降低時間複雜度,因為它不會去搜索每一條路徑,而是每一步都在當前所有可能的組合中找出一個最佳的方案,並且儲存歷史上的這些最佳方案

,由子問題的區域性最優解逐步逼近最終問題的最優解,那麼最終就會求解出最終我們要求的最佳方案,在逼近的過程中往往運用到的是實際上多個子問題的最優解來進行當前子問題的最優解的推導,這也是動態規劃的核心所在

所以來說動態規劃是在當前子問題的組合中尋找組合中最優方案求解的過程,使用歷史上的儲存的最優解的結果進行逐步逼近最終答案的過程,其中使用到的是空間換時間的策略,所以來說相對於其他方法來解決這種問題是較優的

2. 所以對於這種最優解的問題我們最好使用動態規劃來進行求解,因為這樣可以提高我們程式碼的效能,使用動態規劃來解決也可以培養我們思考問題的方式,提高我們解決問題的能力