@人工智能学习前的算法准备(11周)](这里写自定义目录标题)
贪婪算法:贪婪算法不一定能得到最优解,它得到的是近似最优解;它的时间复杂度是O(n^2),在n较大或者很大的时候比较实用,贪婪算法是只关心当前的这一步一定要取最优或者最有利而不管后面的步骤,也就是在每一步都选择最优解。
衡量贪婪算法的好坏一是运行的速度有多快
二是它和最优解的偏差有多大。
以一道题目为例:
假设你办了个广播节目,要让全美50个州的听众都收听得到,为此,
你需要决定在哪些广播台播出,出于预算,你要力图在尽可能少的
广播台播出,现在广播台名单和其覆盖位置如下:
while states_needed: # 当还有需要的州未覆盖的时候循环 ``
best_station = None # 存储覆盖了最多州广播台
states_covered = set() # 已经覆盖了的州的集合
# 遍历所有广播台,找出最佳广播台并且将他的覆盖州加入已覆盖的州的集合
for station, states_for_station in stations.items():
covered = states_needed & states_for_station# 计算需要覆盖的州和每个广播台覆盖的州的交集
# 如果交