貪心演算法幾個經典例子 關於貪心演算法,你該了解這些!

2021-10-12 06:08:39 字數 2109 閱讀 6298

回溯結束,貪心正式開始,你準備好了麼?

「貪心的本質是選擇每一階段的區域性最優,從而達到全域性最優」

這麼說有點抽象,來舉乙個例子:

例如,有一堆鈔票,你可以拿走十張,如果想達到最大的金額,你要怎麼拿?

指定每次拿最大的,最終結果就是拿走最大數額的錢。

每次拿最大的就是區域性最優,最後拿走最大數額的錢就是推出全域性最優。

再舉乙個例子如果是 有一堆盒子,你有乙個揹包體積為n,如何把揹包盡可能裝滿,如果還每次選最大的盒子,就不行了。這時候就需要動態規劃。動態規劃的問題在下乙個系列會詳細講解。

很多同學做貪心的題目的時候,想不出來是貪心,想知道有沒有什麼套路可以一看就看出來是貪心。

「說實話貪心演算法並沒有固定的套路」

所以唯一的難點就是如何通過區域性最優,推出整體最優。

那麼如何能看出區域性最優是否能推出整體最優呢?有沒有什麼固定策略或者套路呢?

「不好意思,也沒有!」靠自己手動模擬,如果模擬可行,就可以試一試貪心策略,如果不可行,可能需要動態規劃。

有同學問了如何驗證可不可以用貪心演算法呢?

「最好用的策略就是舉反例,如果想不到反例,那麼就試一試貪心吧」

可有有同學認為手動模擬,舉例子得出的結論不靠譜,想要嚴格的數學證明。

一般數學證明有如下兩種方法:

看教課書上講解貪心可以是一堆公式,估計大家連看都不想看,所以數學證明就不在我要講解的範圍內了,大家感興趣可以自行查詢資料。

「面試中基本不會讓面試者現場證明貪心的合理性,**寫出來跑過測試用例即可,或者自己能自圓其說理由就行了」

舉乙個不太恰當的例子:我要用一下1+1 = 2,但我要先證明1+1 為什麼等於2。嚴謹是嚴謹了,但沒必要。

雖然這個例子很極端,但可以表達這麼個意思:「刷題或者面試的時候,手動模擬一下感覺可以區域性最優推出整體最優,而且想不到反例,那麼就試一試貪心」

「例如剛剛舉的拿鈔票的例子,就是模擬一下每次拿做大的,最後就能拿到最多的錢,這還要數學證明的話,其實就不在演算法面試的範圍內了,可以看看專業的數學書籍!」

所以這也是為什麼很多同學通過(accept)了貪心的題目,但都不知道自己用了貪心演算法,「因為貪心有時候就是常識性的推導,所以會認為本應該就這麼做!」

「那麼刷題的時候什麼時候真的需要數學推導呢?」

例如這道題目:鍊錶:環找到了,那入口呢?,這道題不用數學推導一下,就找不出環的起始位置,想試一下就不知道怎麼試,這種題目確實需要數學簡單推導一下。

貪心演算法一般分為如下四步:

其實這個分的有點細了,真正做題的時候很難分出這麼詳細的解題步驟,可能就是因為貪心的題目往往還和其他方面的知識混在一起。

本篇給出了什麼是貪心以及大家關心的貪心演算法固定套路。

不好意思了,貪心沒有套路,說白了就是常識性推導加上舉反例。

最後給出貪心的一般解題步驟,大家可以發現這個解題步驟也是比較抽象的,不像是二叉樹,回溯演算法,給出了那麼具體的解題套路和模板。

就醬,「**隨想錄」值得你的關注!

打算從頭開始打卡的錄友,可以在「演算法彙總」這裡找到歷史文章,很多錄友都在從頭打卡,你並不孤單!

我將演算法學習相關的資料已經整理到了github :裡面還有leetcode刷題攻略、各個型別經典題目刷題順序、思維導圖看一看一定會有所收穫,如果給你有幫助給乙個star支援一下吧!

「**隨想錄」期待你的關注!

每天8:35準時推送一道經典演算法題目,推送的每道題目都不是孤立的,而是由淺入深,環環相扣,幫你梳理演算法知識脈絡,輕鬆學演算法!

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

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

貪心演算法經典例子

貪心演算法總是作出在當前看來最好的選擇。也就是說貪心演算法並不從整體最優考慮,它所作出的選擇只是在某種意義上的區域性最優選擇。基本思想 貪心演算法並不從整體最優上加以考慮,它所做的選擇只是在某種意義上的區域性最優解。基本要素 最優子結構性質和貪心選擇性質。和動態規劃區別 動態規劃演算法中,每步所做的...

關於貪心演算法

關於貪心演算法,有個問題乙個讓我很糾結 貪心演算法並不能保證得到原問題的最優解。但又要求同時具有貪心選擇性質和最優子結構性質的問題才能用貪心演算法來解,可是一旦乙個問題具有這兩個性質,得到的解就是最優解。然後,我就不明白了,為什麼 貪心演算法並不能保證得到原問題的最優解 今天終於在另外一本書上看到了...