贪心算法
贪心法的证明方法:
第一数学归纳法和第二数学归纳法:
交换论证法:
最优活动集
输入:S = {1, 2, … , n} 为n 项活动的集合, si , fi 分别为活动 i 的开始和结束时间且活动i与j相容 si>fj 或sj<fi .
求:最大的两两相容的活动集 A
解法:贪心法,按活动截止时间排序后从最早开始时间出发,获得完成后选择下一个最近开始时间获得。
完成时间:time=f(j)
时间复杂度:O(nlogn)+O(n)
证明:
归纳基础:若只有一个活动,则最优活动集合一定是结束时间最小活动
设最优集为A,此时将A的第一个活动用 按结束时间排序后的第一个活动代替得到活动集合A‘。
因为A’成立也活动个数等于A,所以A‘也是最优活动集