貪婪算法--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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM