阅读目录
基本概述
- 先来看一个应用场景:集合覆盖问题
(1)一般思路解答:
- 贪心算法介绍:
(1)贪婪算法解决思路:
(2)图解思路:
Python实现贪心算法:集合覆盖问题
-
题目:
假设存在如下表的需要付费的广播台,以及广播台信号可以覆盖的地区。 如何选择最少的广播台,让所有的地区都可以接收到信号?广播台 覆盖地区
K1 “北京”, “上海”, “天津”
K2 “广州”, “北京”, “深圳”
K3 “成都”, “上海”, “杭州”
K4 “上海”, “天津”
K5 “杭州”, “大连”
第一种解法:完全参照教程
class GreedAlgorithm(object):
@staticmethod
def greed_algorithm(self, broad_dict):
all_areas = set()
for value in broad_dict.values():
for item in value:
all_areas.add(item)
# all_areas = {'北京', '上海', '天津', '广州', '深圳', '成都', '杭州', '大连'}
selects = []
# 定义一个临时集合,在遍历的过程中,存放遍历过程中的电台覆盖的地区和当前还没有覆盖的地区的交集
temp_set = set() # s