演算法入門5 貪心演算法

2021-06-19 03:59:41 字數 846 閱讀 9738

貪心演算法中「貪心」二字形象的說明了該演算法的基本思想:貪心(每一步選擇都是眼下的區域性最優選擇)。

比如每次給你1張面額不定的紙幣,共10次,你這麼選?肯定是每次都要一張100元的。當你要拿第一張時,此時眼下最優的選擇就是拿一張100的,不會管拿了之後會不會對後面的9張產生影響。這就是一種貪心,當然這種情況下的貪心選擇也是最優的選擇,因為區域性最優導致了整體的最優。

貪心演算法常用於求解最優解問題,比動態規劃思路簡單,前提是要求問題滿足貪心選擇性質。

形象的講:

貪心演算法的每次選擇就是只看當前的利益,不管當前的選擇對後面選擇的影響,所以如果當前的選擇對之後的選擇有影響時,這種選擇就不一定最優了。

動態規劃就是三思而後行,在考慮當前選擇能產生的各種結果中選擇乙個最優的,想得多速度也就慢了。

比如上面的例子,如果規定超過2張100,後面每張就都只會給1元的,那麼按照貪心選擇依然會前兩張選擇100的,後面就只能拿1元的,總共208元。按照動態規劃,則會聰明的先選一張100元,後面每次都選擇50元,總共550元。

貪心演算法思想簡單,應用場合也廣泛。

使用貪心演算法,問題必須滿足最優子結構性質和貪心選擇性質。

問題的全域性最優解是通過區域性最優選擇得到的。

(1)揹包問題(物體可切分時的0-1揹包問題)

(2)huffman編碼

(3)單源最短路徑

(4)prim演算法

(5)kruskal演算法

(6)最優三角剖分

之前寫的部落格:

prim演算法

理解動態規劃演算法與貪心演算法區別----找錢問題

ps:貪心演算法比較容易理解,寫的比較簡略,後續有想法再補充。

作者 :jarvischu

出處:

貪心演算法入門

什麼是貪心呢?貪心演算法 又稱貪婪演算法 是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後...

貪心演算法入門

貪心演算法例題 1 2 取糖果3 輸入 4 15 四箱,能裝的重量為15 4 價值,重量 5100 4 6412 8 7266 7 8591 2 9輸出 101193.0 11 1213 include14 include15 using namespace std 1617 struct cand...

總結 貪心演算法 貪心演算法入門總結

英語 greedy algorithm,又稱貪婪演算法,是一種在每一步選擇中都採取在當前狀態下最好或最優 即最有利 的選擇,從而希望導致結果是最好或最優的演算法。比如在旅行推銷員問題中,如果旅行員每次都選擇最近的城市,那這就是一種貪心演算法。貪心演算法在有最優子結構的問題中尤為有效。最優子結構的意思...