python搜索算法实现——(二)贪婪算法

贪婪算法简介

假设你办了个广播节目,要让全美国50个州的听众都能听得到,为此, 你需要决定在哪些广播台播出。每个广播台台播出都需要费用,所以你需要尽可能地在更少的广播台播出节目。现有广播台名单如下:
这里写图片描述
每个广播台都覆盖不同的范围,但是有些是重复的
这里写图片描述
如何才能找出覆盖全美50个州的最小广播台集和呢?先提供一种方法:
(1)列出每种可能的广播台集和,称之为幂集,总共有2^n种集和
(2)找出这2^n种集和中覆盖全美50个州的最小集合。
以上算法的问题是计算所有集和的时间需要很多,假如有100个广播台,那么集和一共2^100次方,这可是一个非常大的数!
那么,有没有一种算法可以快速的解决这种类似的问题呢?有,就是贪婪算法。
贪婪算法是近似算法的一种,它的解决方法如下:
(1)选出一个广播台,这个广播台覆盖了最多的未覆盖州,即便这个广播台覆盖了一些已经覆盖的州也没有关系。
(2)重复第一步,直到覆盖了所有的州
只要简单的两步!而且贪婪算法的时间复杂度为O(n^2)࿰

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值