貪心算法是一種在每一步選擇中都采取在當(dāng)前狀態(tài)下最好或最優(yōu)(即最有可能達(dá)到目標(biāo))的決策,從而希望導(dǎo)致結(jié)果是最好或最優(yōu)的算法。貪心算法不能保證最優(yōu)解,但在解決問題的某些實例時是有效的,并且是很容易理解和實現(xiàn)的。

 

一個經(jīng)典的貪心算法示例是背包問題。假設(shè)你有一個容量為V的背包和n個物品,每個物品都有自己的價值和重量。問題是如何選擇物品,使得背包裝載的物品總價值最大。

 

貪心算法的做法是:每次選擇價值密度最高的物品(即價值/重量),直到背包裝滿為止。

 

這個算法并不能保證最優(yōu)解,但對于許多實例來說是有效的。

 

代碼示例:

  def knapsack(items, maxWeight):

?   ? items.sort(key=lambda x: x[1]/x[0], reverse=True)

?  ? ?weight = 0

  ? ? value = 0

?  ? ?for item in items:

? ?  ? ? ?if weight + item[0] <= maxWeight:

? ?   ? ? ? ? weight += item[0]

? ? ?  ? ? ? ?value += item[1]

? ?  ? ? ?else:

? ? ? ?   ? ? remaining = maxWeight – weight

? ? ?   ? ? ? value += remaining * (item[1]/item[0])

? ? ?   ? ? ? break

?   ? return value

 

  items = [(2,3),(3,4),(4,5),(5,6)]

  maxWeight = 5

  print(knapsack(items, maxWeight))

這個算法的復(fù)雜度是O(n log n)。
貪心算法

 

★關(guān)于WorkWin公司電腦監(jiān)控軟件★

WorkWin的使命是打造Work用途的Windows 電腦系統(tǒng),有效規(guī)范員工上網(wǎng)行為,讓老板知道員工每天在做什么(監(jiān)控包括屏幕、上網(wǎng)在內(nèi)的一舉一動),限制員工不能做什么(禁止網(wǎng)購、游戲、優(yōu)盤等)。

WorkWin基于純軟件設(shè)計,非常容易使用,無需添加或改動任何硬件,使用一臺管理機監(jiān)控全部員工機電腦。歷經(jīng)南京網(wǎng)亞十余年精心打造,此時此刻每天都有成千上萬企業(yè)電腦正在運行WorkWin,選擇WorkWin選擇“贏”。

WorkWin介紹

WorkWin監(jiān)控首頁 短視頻講解 下載免費試用版

版權(quán)所有,南京網(wǎng)亞計算機有限公司 。本文鏈接地址: 數(shù)據(jù)結(jié)構(gòu)里面的貪心算法是什么?