Python實現的貪婪算法

# 使用Python實現貪婪算法
# 集合覆蓋問題
# 假設你辦了個廣播節目,要讓全美50個州的聽衆都收聽到。爲此,你須要決定在哪些廣播臺播出。在每一個廣播臺播出都須要支出費用,所以你力圖在儘量少的廣播臺播出
# 1.建立一個列表,其中包含要覆蓋的州
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()
# 5.循環
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) # 結果爲{'ktwo', 'kthree', 'kone', 'kfive'}
相關文章
相關標籤/搜索