动态规划方法求解最优化问题时,每个步骤都面临多种选择。对于许多最优化问题,使用动态规划算法来求解最优解有些杀鸡用牛刀了,可以使用更简单更高效的贪心算法。贪心算法在每一步的选择中,都选择当时最佳的情况。即局部最优的选择。贪心算法并不能保证总能得到最优解,但是很多问题确实可以求得最优解。
一:活动选择问题
多个活动调度竞争共享资源,目标是选出一个最大的互相兼容的活动集合。假设有一个n个活动组成的集合S = { }。这些活动使用同一个资源(如教室)。该资源一次只能被一个活动占用。每个活动
都有一个开始时间
和结束时间
。其中0
< ∞。如果被选中后,活动
就占据半开时间区间[
)。如果两个活动
满足[
)和[
)不重叠,则他们是兼容的。在活动选择问题中,希望选出一个最大兼容活动集。假定活动已经按照结束时间进行了排序:
。
比如下面的活动集合S:
子集{ }中的活动相互兼容,子集{
}和子集{
}都是最大相容子集。
1:最优子结构
可以证明该问题具有最优子结构性质,考虑S的子集 ,表示在
开始前的所有活动的集合。希望求得