华为软件精英挑战赛总结

来源:互联网 发布:java jdk中 tools.jar 编辑:程序博客网 时间:2024/05/06 09:23

赛题连接:http://codecraft.huawei.com/home/detail


总体来看,是一个NP-hard问题。我们队的解题思路是:


1)随机选取服务器的位置,用遗传算法寻优,那么遗传算法中的判断算子就是第二步

2)在服务器位置固定的情况下,利用最小费用最大流算法计算总费用。该算法思路详见http://blog.csdn.net/u011686226/article/details/17411067

     其中求带负权有向图最短路,用到了FPGA算法,其实就是Bellman-Ford算法的队列改进型


遗传算法:模范自然界的生物进化,不断迭代。第一代需要选择种子,然后每一代进行交叉,变异、选择。迭代停止的条件可以是迭代代数,花费的时间和解是否收敛。

其中选择算子就是求最小费用最大流函数。费用越高,存活机会越低。ps: 当时为了提高收敛速度,采用轮盘赌的方式增大优秀种子的存活数。导致快速收敛到局部最优。还不如按照高矮个排序。队友深恶痛绝的轮盘赌啊大哭

求最小费用最大流:

       前提:1)假设服务器位置已经定了

                  2)假设所有消费节点都连接到一个超级源点,费用权重为0,即流量流过这些边不花钱。带宽为所连接消费节点的流量需求;   所有服务器都连到超级汇点,带宽无限大,费用也为0; 这样,本题就转化为求单源点到单汇点的最小费用最大流问题了。

有了上述前提,操作步骤是:

       1)读到赛题数据后,建立邻接表。由于是双向都可以通过流量,带宽相同。因此每一条无向边,在邻接表中建立两条边。

       2)利用EK(最小费用最大流)算法,求最小费用最大流,如果最大流小余所有消费节点流量需求之和,则返回-1,负责返回费用。

下面给出程序架构框图:



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子经常做噩梦怎么办 孩子干咳的厉害怎么办 外遇有了孩子该怎么办 有个无赖父亲怎么办 孩子之间发生争执怎么办 被打耳光后耳鸣怎么办 被打了耳鸣怎么办 打到鼻子流鼻血怎么办 一岁多宝宝有痰怎么办 一岁半咳嗽有痰怎么办 12岁说话不清楚怎么办 梦见前夫打孩子怎么办 小儿咳嗽带痰怎么办 孩子扁桃体发炎咳嗽怎么办 一岁宝宝总有痰怎么办 四岁宝宝总有痰怎么办 5岁宝宝总有痰怎么办 一岁宝宝有痰咳不出怎么办 三岁宝宝有痰咳不出怎么办 孩子不听话打她怎么办 孩子笨上学吃力怎么办 孩子学习就睡着怎么办 孩子对父母大喊大叫怎么办 老师面对熊孩子怎么办 妈妈故意打孩子怎么办 老是被妈妈打怎么办 父母老打骂孩子怎么办 后妈总是欺负我怎么办 小朋友屁股被打紫了怎么办 儿童被咬出血怎么办 小宝宝蚊子咬了怎么办 幼儿被咬了怎么办 把孩子屁股肿打紫怎么办 小孩老是咬小孩怎么办 宝宝对蚊子过敏怎么办 胳膊打红了怎么办 孩子生气摔东西怎么办 爱发脾气摔东西怎么办 宝宝生气扔东西怎么办 人流后屁股疼怎么办 生孩子后膝盖痛怎么办