假設你辦了個廣播節目,要讓全美50個州的聽眾都收聽得到,為此,你需要決定在哪些廣播台播出。
這是乙個貪婪演算法問題,隨著廣播台的數量增加,計算時間將會**。
所以用近似演算法來解。
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(
)best_station=
none
states_covered=
set(
)while states_needed:
best_station=
none
states_covered=
set(
)for station,states in stations.items():
covered=states_needed&states
iflen(covered)
>
len(states_covered)
: best_station=station
states_covered=covered
states_needed-=states_covered
final_stations.add(best_station)
print
(final_stations)
貪婪演算法 集合覆蓋問題
我們生活往往會遇到很多類似於 書包裡東西要怎樣放才能裝下盡可能多的東西。具體來說 比如我有乙個可以裝35磅的袋子,有一台重15磅價值1500美元的結他 一台重20磅價值1000美元的電腦 台重30磅價值3000美元的音響。應該怎麼怎麼裝裝下價值最大的東西?貪婪策略的思想是 1 先裝價值最大的物品 2...
貪心演算法解決集合覆蓋問題
貪心演算法的核心就是 在每一步選擇中都採取最好或者最優 即最有利 的選擇,從而希望能夠導致結果是最好或者最優的演算法。假設存在下面需要付費的廣播台,以及廣播台訊號可以覆蓋的地區。如何選擇最少的廣播台,讓所有的地區 都可以接收到訊號。思路 1 遍歷所有的廣播電台,找到乙個覆蓋了最多未覆蓋的地區的電台 ...
集合覆蓋問題 最大覆蓋問題 呼叫中心排班問題閒談
一 集合覆蓋問題 集合覆蓋問題 set covering problem 簡稱scp 是運籌學研究中典型的組合優化問題之一,工業領域裡的許多實際問題都可建模為集合覆蓋問題,如資源選擇問題 設施選址問題 移動基站的選址 物流中心的選址 等。scp的乙個典型應用描述如下 要在乙個城市建造若干個消防隊駐紮...