貪心算法是一種在每一步選擇中都采取在當(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監(jiān)控首頁 短視頻講解 下載免費試用版
版權(quán)所有,南京網(wǎng)亞計算機有限公司 。本文鏈接地址: 數(shù)據(jù)結(jié)構(gòu)里面的貪心算法是什么?