贪婪算法

完美是优秀最大的敌人

贪婪算法很简单:每步都采取最有的做法

贪婪算法寻找局部最优解,企图以这种方式获得全局最优解。

贪婪算法易于实现、运行速度快,是不错的近似算法。

# 表示需要覆盖的州
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

    final_stations.add(best_station)
    states_needed -= states_covered

 

posted @ 2020-04-02 16:05  1101011  阅读(165)  评论(0)    收藏  举报