貪婪演算法(貪心演算法)是指在對問題進行求解時,在每一步選擇中都採取最好或者最優**(即最有利的選擇),從而**希望能夠導致結果是最好或者最優的演算法
貪婪演算法所得到的結果不一定是最優的結果(有時候會是最優解),但是都是相對近似(接近)最優解的結果
假設存在如下表的需要付費的廣播台,以及廣播台訊號可以覆蓋的地區。 如何選擇最少的廣播台,讓所有的地區都可以接收到訊號?
廣播台覆蓋地區
k1「北京」, 「上海」, 「天津」
k2「廣州」, 「北京」, 「深圳」
k3「成都」, 「上海」, 「杭州」
k4「上海」, 「天津」
k5「杭州」, 「大連」
目前並沒有演算法可以快速計算得到準備的值,使用貪婪演算法,則可以得到非常接近的解,並且效率高。
遍歷所有的廣播電台, 找到乙個覆蓋最多未覆蓋的地區的電台(此電台可能包含一些已覆蓋的地區,但沒有關係)
將這個電台加入到乙個集合中(比如 arraylist), 想辦法把該電台覆蓋的地區在下次比較時去掉。
重複1~3 步直到覆蓋全部的地區
public
class
greedyalgorithm}if
(maxkey != null)
} system.out.
println
("得到的選擇結果: "
注:以上大部分內容**於韓順平老師的資料結構和演算法筆記
貪婪演算法GreedyAlgorithm
尋找最優解。從當前狀態出發,根據區域性狀態 而非全域性的最優決策 進行 選擇 在滿足約束條件的前提下,使目標函式的增速達到極值,選擇乙個能夠最快達到要求的輸入元素。根據一系列選擇得到的解,每一次選擇都是那時狀態的最佳解。事實上,最後得到的將不是全域性的最優解。貪婪選擇 每次選擇將會簡化為子問題,而且...
貪心演算法(greedy algorithm)
題1 100元,50元,20元,10元,5元,2元,1元。你可以假設每種錢幣的數量是無限的。現在有一筆交易,需要找個客戶m元,請你設計乙個演算法,使得找給顧客的錢幣張數最少。找錢問題 data null p 100000 m 16 if 0 題2 0 1 揹包問題 給定n 件物品和乙個揹包,物品的重...
貪心演算法(Greedy Algorithm)
參考 五大常用演算法之三 貪心演算法 演算法系列 貪心演算法 貪心演算法詳解 從零開始學貪心演算法 所謂貪心演算法是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的僅是在某種意義上的區域性最優解。貪心演算法沒有固定的演算法框架,演算法設計的關鍵是貪心策...