二、太空飞行计划问题 [最大权闭合图]

太空飞行计划问题


问题描述:

W教授正在为国家航天中心计划一系列的太空飞行。每次太空飞行可进行一系列商业性实验而获取利润。现已确定了一个可供选择的实验集合E={E1,E2,…,Em},和进行这些实验需要使用的全部仪器的集合I={I1,I2,…In}。实验Ej 需要用到的仪器是I的子集Rj属于I。配置仪器Ik的费用为ck美元。实验Ej 的赞助商已同意为该实验结果支付pj 美元。W教授的任务是找出一个有效算法,确定在一次太空飞行中要进行哪些实验并因此而配置哪些仪器才能使太空飞行的净收益最大。这里净收益是指进行实验所获得的全部收入与配置仪器的全部费用的差额。

编程任务:
对于给定的实验和仪器配置情况,编程找出净收益最大的试验计划。
数据输入:
由文件input.txt提供输入数据。文件第1行有2个正整数m和n。m是实验数,n是仪器数。接下来的m行,每行是一个实验的有关数据。第一个数赞助商同意支付该实验的费
用;接着是该实验需要用到的若干仪器的编号。最后一行的n个数是配置每个仪器的费用。
结果输出:
程序运行结束时,将最佳实验方案输出到文件output.txt中。第1行是实验编号;第2行是仪器编号;最后一行是净收益。
输入文件示例 
2 3
10 1 2
25 2 3

5 6 7

输出文件示例

1 2  
1 2 3  
17

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

解决方案:


1.  问题分析:
最大权闭合图问题,可以转化成最小割问题,进而用最大流解决。
 
2.  建模方法:
把每个实验看作二分图X ( + ) 集合中的顶点,每个设备看作二分图Y ( - ) 集合中的顶点,增加源S和汇T。
 
建图:
(1): 从S向每个Xi连接一条容量为该点收入的有向边。w :( + )
(2): 从Yi向T连接一条容量为该点支出的有向边。w :- ( - )
(3): 如果一个实验i需要设备j,连接一条从Xi到Yj容量为无穷大的有向边。w :INF
 
计算最大权闭合图的权值:
(1): 统计出所有实验的收入之和Total。
(2): 求网络最大流Maxflow。
(3): 最大收益 ( 最大权闭合图的权值 Wmax) = Total-Maxflow。
(4): 对应的解 ( 最大权闭合图的点集V1 ) 就是最小割划分出的S集合中的点 ( 除去S点 ),也就是最后一次增广找到阻塞流时能从S访问到的顶点。即在残留网络中从S开始dfs,所能到达的所有点的集合就是V1。
 
3.  建模分析:
(1): 定义一个割划分出来的S集合( 除去S点 ),为一个闭合图的点集V1。并且V2 = V – V1。
(2): C [ S , T ] = V2中的正权值 - V1中的负权值。
(3): 闭合图的权值W = V1中的正权值 + V1中的负权值。
(4): C [ S , T ] + W = V2中的正权值 - V1中的负权值+ V1中的正权值 + V1中的负权值
        = V1中的正权值 + V2中的正权值
        = V中的正权值
(5): 由( 4 )可以推出 W = V中的正权值 – C [ S , T ].
(6): 由( 5 )可以推出 Wmax = V中的正权值 - C [ S , T ]min.  
 
4.  PS
该问题的一般模型为最大权闭合图,相关讨论见《最小割模型在信息学竞赛中的应用》作者胡伯涛。
 
 

你可能感兴趣的:(线性规划与网络流24题)