greedy演算法 python版

2021-09-07 15:51:38 字數 872 閱讀 2232

greedy演算法的核心思想是首先計算覆蓋面大的部分,然後依次尋找其他覆蓋面最大的部分。該演算法的使用場景就像他的名字一樣,當符合貪婪屬性的時候就可以考慮。

states_needed = set(['北京', '上海', '廣州', '深圳', '杭州', '南京', '石家莊', '銀川'])

stations = {}

stations['kone'] = set(['北京', '上海', '廣州'])

stations['ktwo'] = set(['北京''杭州', '南京'])

stations['kthree'] = set(['廣州', '深圳', '杭州'])

stations['kfour'] = set(['北京', '銀川'])

stations['kfive'] = set(['石家莊', '銀川'])

final_stations = set()

while states_needed:

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)

hdu 4221 Greedy 貪心演算法

題意 做任務,每乙個任務i都有花費時間ci,截止時間di,penalty ti di ti為第i個任務的實際完成時間,di為其截至時間,要求所有任務的penalty盡可能的小乙個 思路 貪心演算法 要求截至日期最小的應該最早完成,因為拖得越晚,penalty越大 include include us...

Kruskal 演算法 Python版

好久沒寫了,有點遺忘記錄一下 kruskal 演算法 對所有的邊排序 依次選擇每一條邊,看是否能將邊加入到已經生成好的樹中 若是能,則加入 否則,繼續步驟2,直至新增到樹中的邊的數量為節點數 1 的時候 這裡用了並查集的思路 設定乙個記錄每乙個節點的父親的陣列,用於判斷將邊加進已生成樹時是否會有環生...

viterbi演算法 python版

牛mm細心給我講了乙個小時,終於明白它的含義,然後花了一兩節分布式資料庫的課實現了。當時牛mm還說不可能這麼快實現,結果不可能事還是發生了。發現python果真非常好用。不明白此演算法可以看這篇blog 初始化方法 viterbi演算法函式 結果列印輸出函式 nodes format path is...