日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

五大常用算法:贪心算法

發(fā)布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 五大常用算法:贪心算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

重磅干貨,第一時間送達(dá)

本文轉(zhuǎn)自|視覺算法

一、基本概念:

所謂貪心算法是指,在對問題求解時,總是做出在當(dāng)前看來是最好的選擇。也就是說,不從整體最優(yōu)上加以考慮,他所做出的僅是在某種意義上的局部最優(yōu)解。

貪心算法沒有固定的算法框架,算法設(shè)計的關(guān)鍵是貪心策略的選擇。必須注意的是,貪心算法不是對所有問題都能得到整體最優(yōu)解,選擇的貪心策略必須具備無后效性,即某個狀態(tài)以后的過程不會影響以前的狀態(tài),只與當(dāng)前狀態(tài)有關(guān)。

所以對所采用的貪心策略一定要仔細(xì)分析其是否滿足無后效性。

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

1.建立數(shù)學(xué)模型來描述問題。


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


3.對每一子問題求解,得到子問題的局部最優(yōu)解。


4.把子問題的解局部最優(yōu)解合成原來解問題的一個解。

三、貪心算法適用的問題

貪心策略適用的前提是:局部最優(yōu)策略能導(dǎo)致產(chǎn)生全局最優(yōu)解。

實(shí)際上,貪心算法適用的情況很少。一般,對一個問題分析是否適用于貪心算法,可以先選擇該問題下的幾個實(shí)際數(shù)據(jù)進(jìn)行分析,就可做出判斷。

四、貪心算法的實(shí)現(xiàn)框架

從問題的某一初始解出發(fā);

while (能朝給定總目標(biāo)前進(jìn)一步)
{
利用可行的決策,求出可行解的一個解元素;
}

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

五、貪心策略的選擇

因?yàn)橛秘澬乃惴ㄖ荒芡ㄟ^解局部最優(yōu)解的策略來達(dá)到全局最優(yōu)解,因此,一定要注意判斷問題是否適合采用貪心算法策略,找到的解是否一定是問題的最優(yōu)解。

六、例題分析

下面是一個可以試用貪心算法解的題目,貪心解的確不錯,可惜不是最優(yōu)解。

[背包問題]有一個背包,背包容量是M=150。有7個物品,物品可以分割成任意大小。


要求盡可能讓裝入背包中的物品總價值最大,但不能超過總?cè)萘俊?/p>

物品 A B C D E F G
重量 35 30 60 50 40 10 25
價值 10 40 30 50 35 40 30

分析:


目標(biāo)函數(shù):∑pi最大


約束條件是裝入的物品總重量不超過背包容量:∑wi<=M( M=150)


(1)根據(jù)貪心的策略,每次挑選價值最大的物品裝入背包,得到的結(jié)果是否最優(yōu)?


(2)每次挑選所占重量最小的物品裝入是否能得到最優(yōu)解?


(3)每次選取單位重量價值最大的物品,成為解本題的策略。

值得注意的是,貪心算法并不是完全不可以使用,貪心策略一旦經(jīng)過證明成立后,它就是一種高效的算法。


貪心算法還是很常見的算法之一,這是由于它簡單易行,構(gòu)造貪心策略不是很困難。


可惜的是,它需要證明后才能真正運(yùn)用到題目的算法中。

一般來說,貪心算法的證明圍繞著:整個問題的最優(yōu)解一定由在貪心策略中存在的子問題的最優(yōu)解得來的。


對于例題中的3種貪心策略,都是無法成立(無法被證明)的,解釋如下:

(1)貪心策略:選取價值最大者。反例:

W=30
物品:A B C
重量:28 12 12
價值:30 20 20

根據(jù)策略,首先選取物品A,接下來就無法再選取了,可是,選取B、C則更好。


(2)貪心策略:選取重量最小。它的反例與第一種策略的反例差不多。
(3)貪心策略:選取單位重量價值最大的物品。反例:

W=30
物品:A B C
重量:28 20 10
價值:28 20 10

根據(jù)策略,三種物品單位重量價值一樣,程序無法依據(jù)現(xiàn)有策略作出判斷,如果選擇A,則答案錯誤。

下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程

在「小白學(xué)視覺」公眾號后臺回復(fù):擴(kuò)展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講

在「小白學(xué)視覺」公眾號后臺回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計算機(jī)視覺。

下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講

在「小白學(xué)視覺」公眾號后臺回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講即可下載含有20個基于OpenCV實(shí)現(xiàn)20個實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

交流群

歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

總結(jié)

以上是生活随笔為你收集整理的五大常用算法:贪心算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。