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

算法——贪婪算法

时间:2021-06-29 15:16:44      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:第一步   就是   最小   items   pytho   lan   pre   int   needed   

贪婪算法:每步都采取最优的做法,最终得到的就是全局最优解

"""
贪婪算法
覆盖所有的州,最小集合
方法:
(1)选出一个广播,它覆盖了最多的未覆盖州,即便广播台覆盖了一些已经覆盖的州,也没有关系
(2)重复第一步,知道所有的州都被覆盖
"""

states_needed = set([‘mt‘, ‘wa‘, ‘or‘, ‘id‘, ‘nv‘, ‘ut‘, ‘ca‘, ‘az‘])

stations = {
    ‘kone‘: set([‘id‘, ‘nv‘, ‘ut‘]),  # kone 覆盖这些州
    ‘ktwo‘: set([‘wa‘, ‘id‘, ‘mt‘]),
    ‘kthree‘: set([‘or‘, ‘nv‘, ‘ca‘]),
    ‘kfour‘: set([‘nv‘, ‘ut‘]),
    ‘kfive‘: set([‘ca‘, ‘az‘])
}
best_result = []
final_states = set()
while states_needed:
    best_station = None
    best_states = set()
    for station, states in stations.items():
        covered = states_needed & states
        if len(covered) > len(best_states):
            best_station = station
            best_states = covered
    best_result.append(best_station)
    states_needed -= best_states
    final_states |= best_states

    
print(best_result)  # [‘kone‘, ‘ktwo‘, ‘kthree‘, ‘kfive‘]

算法——贪婪算法

标签:第一步   就是   最小   items   pytho   lan   pre   int   needed   

原文地址:https://www.cnblogs.com/pywjh/p/14945418.html

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