貪心演算法 啟發式演算法 近似演算法 區別?

時間 2021-06-02 23:07:23

1樓:Coldwings

近似演算法是乙個大類。所有對於有確切最優解但是並不能保證得到最優解的演算法都可以稱之為近似演算法。

貪心演算法不一定就是近似演算法,如果可以證明決策既不受之前決策的影響,也不影響後續決策,則貪心演算法就是確定的最優解演算法。除此之外都不可以保證貪心演算法是最優的。(這裡有個很有意思的事情是,某種意義上動態規劃方法就是將原問題變形為貪心可解的問題,因此對於每個狀態只需要保留最優決策既)

啟發式演算法則是乙個折中。我們知道對於大多數問題而言純粹的遍歷所有狀態總比貪心來的慢,但是貪心得到確切解的前提很苛刻,因此很有可能會得到很爛的解。啟發式演算法則是通過乙個啟發函式對下一階段狀態進行粗略評估,這個評估是預計結果(並不確信);在遍歷狀態的過程中,我們優先去看可能可以得到好結果的情況,並且如果發現乙個狀態的理想估計比當前確實遍歷過的解中最好的要差則可以放棄,這就叫啟發式演算法,這裡我們叫確定性啟發式演算法或者啟發式搜尋。

然而啟發式搜尋的本質仍舊是遍歷所有狀態,要保證確定最優解,它仍舊是個遍歷,耗時仍然有可能很大。這個情況下加入一條限制:如果計算時間已經到達可承受的極限,則放棄剩下部分的搜尋直接以當前找到的最好結果為結果,這樣的啟發式演算法自然是非確定性的,於是可以算作近似演算法。

2樓:yuan ding

貪心演算法是一種啟發式演算法,它企圖尋求區域性最優解,容易陷入區域性最優的困境。所以後來有了元啟發式演算法,如蟻群演算法,模擬退火演算法,禁忌演算法等等,這類演算法通過一些策略,某種程度上可以跳出區域性最優解,從而尋求更好的全域性最優解。但所有啟發式演算法都有缺陷,要視具體問題而定。

有大神能解釋一下啟發式演算法和人工智慧演算法的異同嗎?

陳亮宇 探探自己的看法吧。這是兩種演算法,主要運用方向都不同。啟發式演算法比較常見在於搜尋問題乙個解,人工智慧則用於識別與回歸。通常啟發式演算法是指在乙個限定時間內尋找乙個最優解,其並不是最完美解,特別是在計算過程中要考慮時間的制約,在限定時間內得出乙個區域性峰值,當然為了防止僅得到區域性最優解,在...

在優化問題裡,強化學習相比啟發式搜尋演算法有什麼好處?

震靈 最大的好處就是神經網路的可塑性非常強,並且號稱具有遷移學習能力。舉乙個最簡單的例子,對於傳統優化問題來說,無論是貝葉斯優化還是啟發式演算法,對於每求解一組新問題,都需要針對每個例項 例如乙個TSP路徑規劃例項 執行一次完整的優化演算法。但是實際上這些問題的最優解可能有某種強關聯,對於這種情況,...

貪心演算法如何體現在霍夫曼編碼中?

鄭啟威 雖然Huffman編碼的策略是出現次數多的字元具有短的編碼,但是這並不是乙個貪心策略。貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的狀態,只與當前狀態有關。但是在使用字首碼的情況下,按照該策略,前乙個頻繁的字元的編碼,會影響後面字元編碼的選擇。比如 a b c d e f 次數...