貪婪算法:
每步都采取最優的做法,即每步都選擇局部最優解,最終得到的就是全局最優解。
假設你辦了個廣播節目,要讓全美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)