一、背景
在軟考的準備中。遇到了演算法。聽過來人收。演算法研究好了就非常easy,研究不好就認為非常難。於是想著對演算法做個總結。由於演算法不只在大題中占有15分,並且在選擇題中相同也會出現。尤其是考複雜度和各種演算法的適用情況,
貪心(目光短淺):就像找男女朋友一樣,不求最好。僅僅求合適(可行解)
二、怎樣知道在某種情況下用貪心是合適的呢?
貪心策略適用的前提是:區域性最優策略能導致產生全域性最優解。
實際上。貪心演算法適用的情況非常少。一般,對乙個問題分析是否適用於貪心演算法,能夠先選擇該問題下的幾個實際資料進行分析,就可做出推斷。
三、貪心演算法實現的基本步驟:
通過乙個候選集合c作為問題的可能解。(終於解均取自於候選集合c)
比如。在找零錢問題中。各種面值的貨幣構成候選集合。
2、解集合(s)
每完畢一次貪心選擇,將乙個解放入s,終於獲得乙個完整解s
檢查解集合s是否構成問題的完整解。
比如,在找零錢問題中。解決函式是已付出的貨幣金額恰好等於應付款。
即貪心策略。這是貪心法的關鍵,選擇出最有希望構成問題的解的物件。(這個選擇函式通常和目標函式有關)
比如,在找零錢問題中,貪心策略就是在候選集合中選擇面值最大的貨幣。
檢查解集合中增加乙個候選物件是否可行。(增加下乙個物件後是不是滿足約束條件)
比如,在找零錢問題中。可行函式是每一步選擇的貨幣和已付出的貨幣相加不超過應付款。
四、貪心演算法的實現框架
從問題的某一初始解出發;
while (能朝給定總目標前進一步)
由全部解元素組合成問題的乙個可行解;
用c解釋例如以下:
greedy(c) //c是問題的輸入集合即候選集合
; //初始解集合為空集
while (not solution(s)) //集合s沒有構成問題的乙個解
; c=c-;
} return s;
}
c 演算法之貪心
一 基本概念 什麼是貪心演算法 貪心演算法 又稱貪婪演算法,greedyalgorithm 是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的僅是在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,但對範圍相當廣泛的許多問題他能產生...
貪心演算法之prim演算法
演算法思想 首先置s 然後只要s是v的真子集,就做如下的貪心選擇 選擇滿足條件i屬於s,j屬於v s,且edge i j 是最小的邊,就將其頂點j新增到s中,這個過程一直進行到s v時為止,在這個過程中,選取到的所有邊恰好構成g的一顆最小生成樹。include define infinity 500...
ACM演算法之貪心演算法
acm演算法之貪心演算法 一般使用貪心演算法要滿足兩個條件 a.貪心選擇性質 可通過做區域性最優 貪心 選擇來達到全域性最優解。貪心選擇性質 這是貪心演算法與動態規劃的區別 b.最優子結構性質 問題的最優解包含了子問題的最優解。貪心演算法的基本思想 找出整體當中每個小的區域性的最優解,並且將所有的這...