貪心演算法詳解

2021-07-15 15:35:28 字數 1248 閱讀 7028

一、基本概念:

所謂貪心演算法是指,在對問題求解時,總是做出在當前看來是最好的選擇

。也就是說,不從整體最優上加以考慮,他所做出的僅是在某種意義上的區域性最優解。

貪心演算法沒有固定的演算法框架,演算法設計的關鍵是貪心策略的選擇。必須注意的是,貪心演算法不是對所有問題都能得到整體最優解,選擇的貪心策略必須具備無後效性,即某個狀態以後的過程不會影響以前的狀態,只與當前狀態有關。

所以對所採用的貪心策略一定要仔細分析其是否滿足無後效性。

二、貪心演算法的基本要素:

1.貪心選擇性質。所謂貪心選擇性質是指所求問題的整體最優解可以通過一系列區域性最優的選擇,即貪心選擇來達到。這是貪心演算法可行的第乙個基本要素,也是貪心演算法與動態規劃演算法的主要區別。

動態規劃演算法通常以自底向上的方式解各子問題,而貪心演算法則通常以自頂向下的方式進行,以迭代的方式作出相繼的貪心選擇,每作一次貪心選擇就將所求問題簡化為規模更小的子問題。

2. 當乙個問題的最優解包含其子問題的最優解時,稱此問題具有最優子結構性質。問題的最優子結構性質是該問題可用動態規劃演算法或貪心演算法求解的關鍵特徵。

、貪心演算法的基本思路:

1.建立數學模型來描述問題。

2.把求解的問題分成若干個子問題。

3.對每一子問題求解,得到子問題的區域性最優解。

4.把子問題的解區域性最優解合成原來解問題的乙個解。

四、貪心演算法適用的問題

貪心策略適用的前提是:區域性最優策略能導致產生全域性最優解。

實際上,貪心演算法適用的情況很少。一般,對乙個問題分析是否適用於貪心演算法,可以先選擇該問題下的幾個實際資料進行分析,就可做出判斷。

五、貪心演算法的實現框架

從問題的某一初始解出發;

while (能朝給定總目標前進一步)

由所有解元素組合成問題的乙個可行解;

六、貪心法存在的問題:

1)不能保證求得的最後解是最佳的;

2)不能用來求最大或最小解問題;

3)只能求滿足某些約束條件的可行解的範圍

上述的這些問題可以在動態規劃,回溯演算法,分支限界演算法裡面得到相應的解決,但是我們也不會因此放棄對貪心演算法的使用。這正是敏捷開發所提倡的,永遠沒有最好的,只有最適合的.我們選用貪心演算法的原因就是因為他能夠滿足當前的需要並且比其他演算法更加簡單。

貪心演算法詳解

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

貪心演算法詳解

貪心演算法 總是作出當前看來最好的選擇。也就是說貪心演算法並不從整體最優考慮,他所做出的選擇只是在某種意義上的區域性最優選擇。但對許多問題它能產生整體最優解。在一些情況下,即使貪心演算法不能得到整體最優解,其最終結果卻是最優解的很好近似。應用貪心思想的常用問題 單源最短路徑問題,最小生成樹問題,哈夫...

經典貪心演算法 貪心演算法概述

貪心演算法具有最優子問題結構,它的特點是 短視 每次選擇對當前局面最有利的決策,來一步步獲得最優解。我個人認為,貪心不是乙個具體的方法,而是一類方法,貪心演算法的關鍵不在於想到,而在於正確性的證明。要證明乙個貪心演算法是正確的,需要證明我們可以把乙個最優解逐步轉化為我們用貪心演算法所得到的解,而解不...