假设你举办了一个节目,需要在全国播出。不同的广播电台覆盖了不同一个或多个的省份,因为在广播电台播出需要付费,请问如何选择播出的电台使得可以花最少的钱在全国播出?
央广新闻 | 内蒙古、北京、山东 |
中国之声 | 广东、云南、福建 |
新闻直播间 | 内蒙古、辽宁、山西 |
华夏之声 | 云南、四川、山西 |
...... | ...... |
这是一个典型的听起来容易做起来难的东西,具体步骤如下:
(1)列出每个可能的广播电台集合,被称为幂集(power set),可能的子集有2^n个
(2)在这些集合中找出覆盖全国34个省份的最小集合
但是,算法复杂度为O(2^n),随着广播电台数量的增加,运行时间将呈现指数级增长,目前没有任何算法可以快速解决这个问题
但是可以近似用贪心算法解决问题:
(1)选出这样一个广播电台,它覆盖了最多的未覆盖省份,即使这个广播电台覆盖了一些已经覆盖的省份
(2)