1)调查设计
问题描述:
一堆产品和一堆顾客,每个产品只能由 [ c, c' ] 个顾客做feedback,每个顾客只能做 [ p, p' ]个产品的feedback;问,能不能设计一个调查方案,使上面的条件能够满足?(这里的主要限制是,边上最小流 c、p 的要求)
方法:
(s, i)边上的流表示顾客 i 可以调查的产品数,因此具有[c, c']的限制;
(j, t)边上的流与被问到产品 j 的顾客数相对应,因此具有[p, p']的限制;
每个顾客 i 到他买过的产品 j 之间有一条容量为 1 的边 (i, j),但无下界要求(下界为0),因为对产品 j ,顾客 i 不一定非要做出feedback(只要在[c, c']之间即可);
(t, s)边上的流表示所问问题的总数,因此是 [ sigma(c), sigma(c') ];
所有节点的需求为0。
最后判断新图是否有可行流通。
正确性:
P276,定理7.53,前面构造的图G‘有一个可行流通,当且仅当存在一个可行方式来设计这个调查。
2)航线调度
问题描述:
一堆航线四元组(startID, startTime, endID, endTime);一个飞机除了可以正常的飞行一个航班 i 之外,还可以飞行满足下面条件之一的航班 j :
1) i 的终点和 j 的起点一样,且 i 和 j 之间有足够的时间维护飞机;
2) i 和 j 之间有足够的时间从 i 的终点飞到 j 的起点,同时还有维护飞机的时间(相当于另加航班);
问:给定 k 个飞机,能把这堆航班搞定吗?
方法:
注意增加 s 到 t 的边!!!
最后判断新图是否有可行流通。
正确性:
P279,定理7.54,存在一个至多使用 k 架飞机执行所有航班的方式,当且仅当前面构造的图G‘有一个可行流通。
3)项目选择
问题描述:
一堆项目,每个项目P有利润pi(pi可正可负,表示某些基础项目是耗钱的,某些项目是暴利的),同样规定某些项目集A是另一些项目集B的基础(A必须先完成才可以开始B);我们称项目集合A是可行的,当且仅当A中的任何一个项目的基础项目(集)仍然在A集合中。
问:能不能找到一个获利最大的项目集合A,且保证A是可行的?
方法:
最后计算新图中的最小割(A', B'),并且声明A’ - {s}就是最优的项目集合。
正确性:
P286,定理7.58,如果(A', B')是G‘的一个最小割,那么集合A' - {s}是对于项目选择问题的一个最优解。