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)
    
  • 相关阅读:
    javascript学习笔记-数据类型
    chrome console.log API
    Mysql下SELECT的结果集作为UPDATE的WHERE条件时的SQL语法
    Ajax、Comet、Websocket、SSE
    Model View Controller(MVC) in PHP
    区别Transform、Transition、Animation
    WAI-ARIA无障碍网页应用属性完全展示
    理解 PHP output buffer
    清除Jquery动画的队列
    git常用命令
  • 原文地址:https://www.cnblogs.com/fredkeke/p/9233913.html
Copyright © 2011-2022 走看看