Python使用貪婪算法解決問題
更新時間:2019年10月22日 11:48:01 作者:水滴月
這篇文章主要介紹了Python使用貪婪算法解決問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
Python使用貪婪算法解決問題
集合覆蓋問題
假設(shè)你辦了個廣播節(jié)目,要讓全美50個州的聽眾都收聽到。為此,你需要決定在哪些廣播臺播出。在每個廣播臺播出都需要支出費用,因此你力圖在盡可能少的廣播臺播出
1.創(chuàng)建一個列表,其中包含要覆蓋的州
states_needed = set(["mt", "wa", "or", "id", "nv", "ut", "ca", "az"])
2.使用散列表表示可供選擇的廣播臺清單
stations = dict() stations["kone"] = set(["id", "nv", "ut"]) stations["ktwo"] = set(["wa", "id", "mt"]) stations["kthree"] = set(["or", "nv", "ca"]) stations["kfour"] = set(["nv", "ut"]) stations["kfive"] = set(["ca", "az"])
3.使用集合來存儲最終選擇的廣播臺
final_stations = set()
4.循環(huán)
while states_needed:
# 遍歷所有的廣播臺,從中選擇覆蓋最多的未覆蓋州的廣播臺,將這個廣播臺存儲在best_station中
best_station = None
# 這個集合包含該廣播臺覆蓋的所有未覆蓋的州
states_covered = set()
for station, states in stations.items():
covered = states_needed & states
if len(covered) > len(states_covered):
best_station = station
states_covered = covered
states_needed -= states_covered
final_stations.add(best_station)
print(final_stations) # 結(jié)果為{'ktwo', 'kthree', 'kone', 'kfive'}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決python selenium3啟動不了firefox的問題
今天小編就為大家分享一篇解決python selenium3啟動不了firefox的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
python實現(xiàn)猜數(shù)字游戲(無重復(fù)數(shù)字)示例分享
這篇文章主要介紹了python實現(xiàn)猜數(shù)字游戲(無重復(fù)數(shù)字)示例,需要的朋友可以參考下2014-03-03
Python解決非線性規(guī)劃中經(jīng)濟調(diào)度問題
Scipy是Python算法庫和數(shù)學(xué)工具包,包括最優(yōu)化、線性代數(shù)、積分、插值、特殊函數(shù)、傅里葉變換等模塊。scipy.optimize模塊中提供了多個用于非線性規(guī)劃問題的方法,適用于不同類型的問題。本文將利用起解決經(jīng)濟調(diào)度問題,感興趣的可以了解一下2022-05-05

