c 演算法之貪心

2021-08-07 04:14:25 字數 1016 閱讀 6671

一、基本概念

什麼是貪心演算法:

貪心演算法(又稱貪婪演算法,greedyalgorithm)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的僅是在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,但對範圍相當廣泛的許多問題他能產生整體最優解或者是整體最優解的近似解。

基本思路

(1)把求解的問題分成若干個子問題。  

(2)對每一子問題求解,得到子問題的區域性最優解。  

(3)把子問題的解區域性最優解合成原來解問題的乙個解。

演算法實現。

(1)從問題的某個初始解出發。

(2)採用迴圈語句,當可以向求解目標前進一步時,就根據區域性最優策 略,得到乙個部分解,縮小問題的範圍或規模。

(3)將所有部分解綜合起來,得到問題的最終解。

二、貪心方法的基本思想

貪心是一種解題策略,也是一種解題思想 使用貪心方法需要注意區域性最優與全域性最優的關係,選擇當前狀態的區域性最優並不一定能推導出問題的全域性最優

利用貪心策略解題,需要解決兩個問題: 該題是否適合於用貪心策略求解 如何選擇貪心標準,以得到問題的最優解

三、貪心法的特點

1.貪心選擇性質:演算法中每一步選擇都是當前看似最佳的選擇,這種選擇依賴於已做出的選擇,但不依賴於未做的選擇。

2.最優子結構性質:演算法中每一次都取得了最優解(即區域性最優解),要保證最後的結果最優,則必須滿足全域性最優解包含區域性最優解。

但並不是所有具有最優子結構的問題都可以用貪心策略求解。因為貪心往往是盲目的,需要使用更理性的方法——動態規劃(例如「0-1揹包問題」與「部分揹包問題」)

四、貪心策略與其他演算法的區別

1.貪心與遞推:與遞推不同的是,貪心法中推進的每一步不是依據某一固定的遞推式,而是當前看似最佳的貪心決策,不斷的將問題歸納為更加小的相似的子問題。所以歸納、分析、選擇正確合適的貪心策略,是正確解決貪心問題的關鍵。

2.貪心與動態規劃:與動態規劃不同的是,貪心是鼠目寸光;動態規劃是統攬全域性。

貪心演算法 C

貪心演算法 又稱貪婪演算法 是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。貪心演算法並不保證會得到最優解,但是在某些問題上貪心演算法的解就是最優解。要會判斷乙個問題能否用貪心演算法來計算。第乙個問題 找零 假設商店老闆...

貪心演算法之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.最優子結構性質 問題的最優解包含了子問題的最優解。貪心演算法的基本思想 找出整體當中每個小的區域性的最優解,並且將所有的這...