算法設計與分析

ref 《》by王秋芬
貪心算法:當前選擇可能依賴已經做出的選擇,但不依賴與還未作出的選擇和子問題;特徵:自頂向下,一步步做出貪心選擇,但如當前選擇可能要依賴子問題的解時,則難以通過局部的貪心策略達到整體最優解。

分治算法:分治法中各個子問題是獨立的,即不包含公共的子問題,so 一旦遞歸的求出格子問題的解後,便可自下而上地將子問題的解合併成原問題的解。但如果各個子問題不是獨立的,則分治法要做很多不必要工作,即重複解公共的子問題,對時間的消耗太大。

動態規劃算法:問題經分解得到的各個子問題往往不是相互獨立的。求解過程中,將已解決的解進行保存,在需要時可以輕鬆找出。比喵了大量的無意義的重複計算,從而降低算法的時間複雜性。通常用表的形式保存已解決的子問題的解。

求解步驟:分析最優解性質,–if fit this algorithm;
遞歸定義最優值(建立遞歸式orDP方程)
自底向上求出最優值,記錄
根據計算出的最優值時得到的信息,構造出最優解。

基本要素:最優子結構;子問題重疊性質;自底向上的求解方法

ps. 遞歸算法的空間複雜度與遞歸深度有關 深度n O(n) logn O(logn)

發佈了33 篇原創文章 · 獲贊 17 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章