貪婪演算法 (Greedy Algorithm) 是一種在每一步選擇中都採取在當前狀態下最好或最優 (即最有利) 的選擇,從而希望導致結果是全局最好或最優的演算法。這種方法每次做出選擇時,只考慮當前最優解,而不考慮未來的後果。
貪婪演算法的核心思想是: 每一步都做出在當前狀態下看起來最好的選擇,而不考慮未來的後果。這種方法並不總是能得到最優解,但對於某些特定問題,貪婪策略可以保證得到全局最優解
假設有多個活動,每個活動有開始和結束時間,要求選擇最多不重疊的活動。貪婪策略是每次選擇結束時間最早且不與已選活動重疊的活動。
如果硬幣是 [1, 3, 4],我要湊 6 元,使用貪婪 (每次拿最大硬幣) 會得到哪個組合?
總共: 4 + 1 + 1 = 6,用了 3 枚硬幣
⚠️ 但是注意
最佳解其實是 3 + 3 = 6,只要 2 枚。
這就是貪婪演算法的陷阱 ——「局部最佳 ≠ 全域最佳」。
貪婪演算法是一種簡單高效的演算法設計方法,適合於具有貪婪選擇性質和最優子結構的問題。在使用貪婪法時,需特別注意問題是否滿足這些性質,否則可能無法得到最優解。