• 贪婪算法--Python


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

    假设你办了个广播节目,要让全美50个州的听众都收听得到。为此你需要决定在哪些广播台播出。
    在每个广播台播出都需要支付费用,因此你力图在尽可能少的广播台播出。
    使用贪婪算法可得到非常接近的解:
    1、选出这样一个广播台,即它覆盖了最多的未覆盖州,即便这个广播台覆盖了一些一覆盖的州也没有关系;
    2、重复第一步,直到覆盖了所有的州。

    '''
    贪婪算法:
    每步都采取最优的做法,即每步都选择局部最优解,最终得到的就是全局最优解。
    '''
    '''
    假设你办了个广播节目,要让全美50个州的听众都收听得到。为此你需要决定在哪些广播台播出。
    在每个广播台播出都需要支付费用,因此你力图在尽可能少的广播台播出。
    使用贪婪算法可得到非常接近的解:
    1、选出这样一个广播台,即它覆盖了最多的未覆盖州,即便这个广播台覆盖了一些一覆盖的州也没有关系;
    2、重复第一步,直到覆盖了所有的州。
    '''
    #创建一个列表,其中包含要覆盖的州
    states_needed = set(['mt', 'wa', 'or', 'id', 'nv', 'ut', 'ca', 'az'])
    #创建广播台清单
    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'])
    #创建一个集合来存储最终选择的广播台
    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)
    
  • 相关阅读:
    利用URL protocol在网页打开本地exe
    [Leetcode]50. Pow(x, n)
    【转载】初识google test
    MySQL主从配置【转载】
    MySQL源码安装(centos)
    MySQL数据库MyISAM和InnoDB存储引擎的比较【转载】
    MySQL 事务
    MySQL 对于千万级的大表要怎么优化
    MySQL性能优化的最佳21条经验【转载】
    mysql日志详细解析【转载】
  • 原文地址:https://www.cnblogs.com/fredkeke/p/9233913.html
Copyright © 2020-2023  润新知