关于时间安排贪心算法正确性的证明

我们令ai表示一个时间区间,具有两个属性si,ei表示开始和结束时间.

现在给定一个a的集合Sk,从Sk中找出一个最大兼容子集,即找出尽量多的时间区间且这些区间互不相交。

以前只是知道按照结束时间排序然后直接贪心即可,没想过证明,昨晚看了黑书的证明。

首先我们假设这么一个定理:令am是Sk中e最小的区间,则am在SK的某一个最大兼容子集中

证明:假设Ak为Sk的一个最大兼容子集,对于Ak具有的结束时间最早的区间设为aj,

则aj有两种情况:1.aj==am,与结论相符。

                             2.aj!=am,由于am是Sk中结束时间最早的,所以显然em<=ej,又在Ak这个最大兼容集中的元素互不相交,所以我们用am替换aj之后显然Ak还是一个最大兼容子集!

证毕。

原文地址:https://www.cnblogs.com/zzqc/p/7039394.html