演算法 集合覆蓋問題

2021-10-09 19:49:35 字數 1226 閱讀 5490

假設你辦了個廣播節目,要讓全美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的乙個典型應用描述如下 要在乙個城市建造若干個消防隊駐紮...