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)
    
  • 相关阅读:
    金刚经与心经之比较
    ECMWF 和 GFS 模型
    LSTM之父Jürgen Schmidhuber评图灵
    STM32相关知识点
    最全C++11/14/17/20/23 的新特性代码案例
    C++ 在线工具
    如何在 Proteus 中设计 PCB
    STM32电源框图解析
    【新特性速递】填一个坑
    【新特性速递】表格加载速度足足 3 倍提升,爱了爱了
  • 原文地址:https://www.cnblogs.com/fredkeke/p/9233913.html
Copyright © 2011-2022 走看看