從問題的某乙個初始解出發逐步逼近給定的目標,以盡可能快的地求得更好的解。當達到某演算法中的某一步不能再繼續前進時,演算法停止。
貪心演算法是一種對某些求最優解問題的更簡單、更迅速的設計技術。貪心演算法的特點是一步一步地進行,常以當前情況為基礎根據某個優化測度作最優選擇,而不考慮各種可能的整體情況,省去了為找最優解要窮盡所有可能而必須耗費的大量時間。貪心演算法採用自頂向下,以迭代的方法做出相繼的貪心選擇,每做一次貪心選擇,就將所求問題簡化為乙個規模更小的子問題,通過每一步貪心選擇,可得到問題的乙個最優解。雖然每一步上都要保證能獲得區域性最優解,但由此產生的全域性解有時不一定是最優的。
1. 不能保證求得的最後解是最佳的;
2. 不能用來求最大或最小解問題;
3. 只能求滿足某些約束條件的可行解的範圍。
1、建立數學模型來描述問題。
2、把求解的問題分成若干個子問題。
3、對每個子問題求解,得到子問題的區域性最優解 。
4、把子問題的解區域性最優解合成原來解問題的乙個解。
1、有乙個以最優方式來解決的問題。為了構造問題的解決方案,有乙個候選的物件的集合:比如不同面值的硬幣。
2、隨著演算法的進行,將積累起其他兩個集合:乙個包含已經被考慮過並被選出的候選物件,另乙個包含已經被考慮過但被丟棄的候選物件。
3、有乙個函式來檢查乙個候選物件的集合是否提供了問題的解答。該函式不考慮此時的解決方法是否最優。
4、還有乙個函式檢查是否乙個候選物件的集合是可行的,即是否可能往該集合上新增更多的候選物件以獲得乙個解。和上乙個函式一樣,此時不考慮解決方法的最優性。
5、選擇函式可以指出哪乙個剩餘的候選物件最有希望構成問題的解。
6、最後,目標函式給出解的值。
1、貪心選擇性質:
乙個問題的整體最優解可通過一系列區域性的最優解的選擇達到,並且每次的選擇可以依賴以前作出的選擇,但不依賴於後面要作出的選擇。這就是貪心選擇性質。對於乙個具體問題,要確定它是否具有貪心選擇性質,必須證明每一步所作的貪心選擇最終導致問題的整體最優解。
2、最優子結構性質:
當乙個問題的最優解包含其子問題的最優解時,稱此問題具有最優子結構性質。問題的最優子結構性質是該問題可用貪心法求解的關鍵所在。在實際應用中,至於什麼問題具有什麼樣的貪心選擇性質是不確定的,需要具體問題具體分析。
貪心演算法不從整體最優上加以考慮,所做出的僅是在某種意義上的區域性最優選擇。使用貪心策略要注意區域性最優與全域性最優的關係,選擇當前的區域性最優並不一定能推導出問題的全域性最優。貪心策略解題需要解決以下兩個問題:
1、該問題是否適合使用貪心策略求解,也就是該問題是否具有貪心選擇性質;
2、制定貪心策略,以達到問題的最優解或較優解。
要確定乙個問題是否適合用貪心演算法求解,必須證明每一步所作的貪心選擇最終導致問題的整體最優解。證明的大致過程為:首先考察問題的乙個整體最優解,並證明可修改這個最優解,使其以貪心選擇開始,做了貪心選擇後,原問題簡化為規模更小的類似子問題。然後用數學歸納法證明通過每一步做貪心選擇,最終可得到問題的整體最優解。
週中訓練筆記
rand 函式 rand n 範圍 0 n 1 n rand m n 1 範圍n m 線段樹的概括 1.是乙個完全二叉樹 2.主要用於解決解決連續區間的動態查詢問題 現在對於線段樹的認識還很侷限,所以概括的也非常籠統,接下來的幾天會繼續研究線段樹的。然後就是今天的廣西邀請賽重現賽的題 今天因為下午有...
週末訓練筆記(三)
感覺這兩天受到了一萬點的傷害,也越發的感覺到了自己的不足,這兩天的比賽就ac了一道題,還有一道題感覺思路是對的,但是不知道為什麼過不了。1.輸入維多利亞和她丈夫的屬相,然後判斷他們的年齡差幾歲。解題思路 把12個屬相存到乙個陣列中然後根據不同的情況有正反兩種迴圈,迴圈到和他們屬相相同的元素的下標存起...
週中訓練筆記(四)
線段樹總結 線段樹儲存的是區間的資訊然後在可以進行區間的各種操作。對於節點a n 它的左兒子為a 2 n 右兒子為a 2 n 1 假如這個節點所表示的區間為 1,5 那麼它左兒子表示的區間為 1,3 右兒子表示的區間為 4,5 公式為mid l r 2,左兒子表示的區間為 l,mid 右兒子表示的區...