贪心法解决着色类问题的证明(会场安排问题为例)
问题描述:
假设要在足够多的会场里安排一批活动, 并希望使用尽可能少的会场。设计 一个有效的贪心算法进行安排。(这个问题实际上是著名的图着色问题。若将每个活动作为 团的一个顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,相当千要 找的最小会场数。)
贪心策略:每次选择与前一个活动相容的开始时间最早的活动。
令原问题为:在第一个房间的时间限制为limit的条件下,对于活动集合S,需要增加的最少房间数。(时间限制指的是选择放在第一个房间的活动开始时间t必须>=limit)
全部活动的集合为S。
1.最优子结构性质:
设E为原问题的最优解,活动1是E中安排的第一个活动。那么F=E-{1}是集合S-{1}在时间限制为t1下的最优解。
证明:假设存在集合S-{1}在时间限制为t1下的最优解F’ ,有room(F’) < room(F) ,那么room(S)= room(F) + 1 > room(F’)+1 与S是原问题的最优解矛盾。因此F=E-{1}是集合S-{1}在时间限制为t1下的最优解,即原问题具有最优子结构性质。
2.贪心选择性质:
E中第一个活动为1 ( t1>=limit) 而满足时间限制limit的开始时间最早的活动为k (tk>=limit)
①k==1:那最优解就是以贪心选择开始的最优解。
②k!=1:所以tk<t1,容易直到活动1和活动k不可能安排在同一个房间1。
假设活动k安排在第m个房间,它的前一个活动是x ,且一定满足x的结束时间endt(x)<=tk
如下图:
将房间1包括活动1的后面部分活动,与房间m包括活动k在内的后面部分活动交换,得到解E’,如下:
因为t1>tk且tk>=endt(x),所以t1>endt(x),所以E’中的解是相容且可行的。又room(E)==room(E’),E是最优解,因此E’是最一个优解。
因此可以通过以贪心选择开始得到最优解。
3.步步贪心可以得到最优解:
证明:一共n个活动,证明第k步可以通过贪心得到整体的最优解(1<=k<=n)
①当k=1时,根据贪心选择性质,假设成立。
②假设k-1步假设成立, 那么对于第k步:
- 设前k-1步通过贪心可以得到整体最优解E, 那么根据最优子结构性质,F=E-{x1,x2,……xk-1} 是S-{x1,x2,……xk-1}在限制时间为endt(k-1)下的最优解。(xi表示第i步选择的物品编号)
- 由贪心选择性质可知,对于S-{x1,x2,……xk-1},限制时间endt(k-1)的问题,可以通过第一步贪心选择,得到整体最优解,设为F’。
- 所以room(F’)==room(F),令E’ = E- F∪F’ 那么E’也是整体的最优解。即第k步贪心选择可以得到整体的最优解。
综上,通过步步贪心,可以得到整体最优解。
因此通过以上三步,证明了会场安排问题可以用贪心法解决。