Joern的华为软挑之路(一):多源多汇策略

来源:互联网 发布:java线程池框架 编辑:程序博客网 时间:2024/05/16 06:55

首先非常感谢同样参赛的大佬的指导:http://blog.csdn.net/mmy1996/article/details/64443159


对于我们题目,1-M相当于确定的服务器组合,M+1 - M+N+1是消费节点,ST是虚拟的超级源点和汇点

 

2.链路的权重

链路的权重就是图中的cost(即单位费用),这个替换了SPFA求最短路径的算法(即最短路径在该图就等于最小单位费用)

 

3.消费节点的需求

各个消费节点的需求转化为T的需求,也即要求的最大流量(各个消费节点需求相加)

 

4.算法流程

①确定当前服务器组合1-M

 

②利用SPFA算法求得到T的最小单位费用,然后用深度搜索找到该条路径,取路径边能容纳的最小流量流过,更新边和T的需求,并计算此条链路费用。(我们之前是求得大部分路,然后用最小单位费用排序,而这个步骤先用SPFA确定了最小单位费用,然后去找路线,个人感觉这部分省的时间较多。)

 

③循环②的步骤,直到T的需求全部满足或者所有可能路径全部搜完结束,求出此次服务器组合的最小费用。(搜索终止条件可以优化,不然搜索的太多)

2 0