zoukankan      html  css  js  c++  java
  • 贪婪算法--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)
    
  • 相关阅读:
    try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什么时候被执行,在 return 前还是后?
    BigDecimal 使用 静态方法总结
    成员内部类里面为什么不能有静态成员和方法?
    浅谈多态机制的意义及实现
    Java接口中的成员变量的意义
    IDEA 打包和导入 Jar 包
    Java static关键字
    Java this关键字
    Java 匿名对象
    Java JOptionPane 对话框
  • 原文地址:https://www.cnblogs.com/fredkeke/p/9233913.html
Copyright © 2011-2022 走看看