#贪婪算法 以寻找局部最优解来找全局最优解,是一种近似算法,基于集合
# 广播台分别覆盖的州
stations = {}
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"])
# 对所有需要覆盖的州求并集
states_needed = set(['id', 'or', 'ut', 'wa', 'ca', 'az', 'nv', 'mt'])
# 求至少需要哪些电台
station_final =set()
while states_needed:
beststation = None
states_covers = set() #beststation 覆盖的州
for station, states in stations.items():
coverd = states_needed & states
if len(coverd) > len(states_covers): # 是否比beststation覆盖的多,来逐步确定是否为新的beststation
beststation = station
states_covers = coverd
states_needed -=states_covers
station_final.add(beststation)
贪婪算法的集合覆盖问题
最新推荐文章于 2022-07-18 12:12:22 发布