貪心演算法是一種在每一步選擇中都採取在當前狀態下最好或最優(即最有利)的選擇,從而希望導致結果是全域性最好或最優的演算法。貪心演算法與動態規劃的不同在於它對每個子問題的解決方案都做出選擇,不能回退。
動態規劃會儲存以前的運算結果,並根據以前的結果對當前進行選擇,有回退功能。
貪心法可以解決一些最優化問題,如:求圖中的最小生成樹,求哈夫曼編碼等。然而對於工程和生活中的問題,貪心法一般不能得到我們所要求的答案。
一旦乙個問題可以通過貪心法來解決,那麼貪心法一般是解決這個問題的最好辦法。由於貪心法的高效性以及其所求得的答案比較接近最優結果,貪心法也可以用作輔助演算法或者直接解決一些要求結果不特別精確的問題。
簡單地說,問題能夠分解成子問題來解決,子問題的最優解能遞推到最終問題的最優解。這種子問題最優解稱為最優子結構。
貪心法的難點:
怎麼證明它是可以用貪心法的?(證明貪心是可以得到全域性的最優解的)
貪心的角度可能不一樣,有些時候可以正常用貪心,有些時候必須把問題稍微轉化一下,再進行貪心的求解。或者有些時候必須從前往後貪,這是比較常規的套路;但有些時候你可能是從後往前進行貪;有些時候從某乙個區域性切入進行貪心。
所謂的貪心的套路,以及證明傻貪心是可以得到最優解的過程,反而更加的重要。
經典貪心演算法 貪心演算法概述
貪心演算法具有最優子問題結構,它的特點是 短視 每次選擇對當前局面最有利的決策,來一步步獲得最優解。我個人認為,貪心不是乙個具體的方法,而是一類方法,貪心演算法的關鍵不在於想到,而在於正確性的證明。要證明乙個貪心演算法是正確的,需要證明我們可以把乙個最優解逐步轉化為我們用貪心演算法所得到的解,而解不...
田忌賽馬貪心演算法 貪心演算法解決田忌賽馬
田忌賽馬 對策問題 教學目標 1 通過簡單的事例,使學生初步體會對策論在解決.梁錦美有無課件 上課時間 有 12 月 15 日 1 田忌賽馬中的數學問題 課時.同學們,你聽過 田忌賽馬 的故事嗎?第一次賽馬 上 上 中 中 下 田忌 下齊.上課周次 十六 有無課件 上課時間 有 12 月 15 日 ...
演算法 貪心演算法
把乙個複雜問題分解為一系列較為簡單的區域性最優選擇,每乙個選擇都是對當前解的乙個擴充套件,知道獲得問題的完整解。在解決問題的策略上目光短淺,只根據當前已有的資訊做出選擇,而且一旦做出了選擇,不管將來有什麼結果這個選擇都不會改變。換言之,貪心法並不是從整體最優考慮,它所做出的選擇只是在某種意義上的區域...