貪婪演算法
覆蓋問題,有個節目想要將自己的節目通過電台發布到幾個州,這些電台可能互相有所覆蓋,即覆蓋了相同的州,現在如何能找到幾個電台,最優的覆蓋這些州。
# 想要電台覆蓋的州
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_for_station in stations.items():
covered = states_needed & states_for_station # 兩個集合的交集,也就是當前電台能覆蓋幾個我們想要覆蓋的州
if len(covered) > len(states_covered): # 找出覆蓋範圍最大的那個電台,貪婪演算法,每步都找最優解
best_station = station
states_covered = covered
states_needed -= states_covered # 找到乙個電台,就將這個電台覆蓋的州剔除掉
final_stations.add(best_station)
print(final_stations)
Python之貪婪演算法
np完全問題 找不到快速演算法的問題。識別np完全問題,以免浪費時間去尋找解決它們的快速演算法 沒辦法判斷問題是不是np完全問題,但還是有一些蛛絲馬跡可循的。1 元素較少時演算法的執行速度非常快,但隨著元素數量的增加,速度會變得非常慢。2 涉及 所有組合 的問題通常是np完全問題。3 不能將問題分成...
Python正則貪婪非貪婪
自己遇到的問題,小記一下!coding utf 8 author johnny import re line baaaaacfbsbdada reg str b.b match str re.match reg str,line if match str print match str.group ...
演算法之貪婪演算法
雖然設計乙個好的求解演算法更像是一門藝術,而不像是技術,但仍然存在一些行之有效的能夠用於解決許多問題的演算法設計方法,你可以使用這些方法來設計演算法,並觀察這些演算法是如何工作的。一般情況下,為了獲得較好的效能,必須對演算法進行細緻的調整。但是在某些情況下,演算法經過調整之後效能仍無法達到要求,這時...