貪心法Dijkstra最短路徑(時間復雜度O(N2));Prim在存儲最小生成樹的鄰接表時找到O(n+e),如圖O(N2);關鍵路徑和關鍵活動的解決方案。
追蹤
分支定界法
分而治之。分,解,合。二分搜索法,合並排序,快速排序。
動態編程。Floyd-Warshall算法求解圖中所有點對間最短路徑的時間復雜度為O(n3)。
動態規劃是壹種高效的方法,其時間復雜度通常為O(n2),O(n3),可以求解相當大的信息量。(塔的數量以N為單位
適用原則:原則就是優化原則,即整體優化可以分解成若幹局部優化。
動態規劃比窮舉法計算次數少。
遞歸算法需要大量的堆棧空間,而動態編程不需要。
貪婪和動態規劃的區別;
所謂貪婪選擇性質,是指問題的全局最優解可以通過壹系列局部最優選擇來實現,即貪婪選擇。這是貪婪算法可行性的第壹個基本要素,也是貪婪算法與動態規劃算法的主要區別。
在動態規劃算法中,每壹步的選擇往往取決於相關子問題的解。所以,只有解決了相關的子問題,才能做出選擇。在貪婪算法中,只在當前狀態下做出最佳選擇,即局部最優選擇。然後做出這個選擇後再解決相應的子問題。
貪婪算法做出的貪婪選擇可以依賴於過去做出的選擇,但絕不依賴於未來做出的選擇,也不依賴於子問題的解。正是由於這種差異,動態規劃算法通常采用自下而上的方式解決每個子問題,而貪婪算法通常采用自上而下的方式,以叠代的方式進行連續的貪婪選擇,每次進行貪婪選擇時,都將所需問題簡化為更小的子問題。
p問題
p問題,如果能通過運行多項式次(即運行時間至多為輸入量大小的算法)來求解,就能找到壹個能在多項式時間內求解的算法。確定性的問題
NP問題雖然可以用計算機求解,但對於任意常數k都不能在O(nk)時間內求解,壹個求解的問題可以在多項式時間內驗證。所有的P問題都是NP問題。
對於NP完全問題,我們知道有效的確定性算法,但不知道是否存在有效的確定性算法。同時,我們也無法證明這些問題中的任何壹個都不存在有效的確定性算法。這類問題稱為NP完全問題。