码迷,mamicode.com
首页 > 编程语言 > 详细

Python实现的贪婪算法

时间:2019-10-21 16:28:32      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:for   needed   决定   nal   ons   散列   算法   pytho   print   

# 使用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‘}

Python实现的贪婪算法

标签:for   needed   决定   nal   ons   散列   算法   pytho   print   

原文地址:https://www.cnblogs.com/lty-fly/p/11713955.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!