华为软件精英挑战赛总结
来源:互联网 发布: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,负责返回费用。
下面给出程序架构框图:
- 华为软件精英挑战赛总结
- 华为软件精英挑战赛总结
- 2016华为软件精英挑战赛总结
- 2017华为软件精英挑战赛--总结
- 2017华为软件精英挑战赛总结
- 2017华为软件精英挑战赛总结
- 2017华为软件精英挑战赛总结
- 2017华为软件精英挑战赛总结
- 2017华为软件精英挑战赛总结
- 华为软件精英挑战赛2015
- 2015华为软件精英挑战赛
- 华为软件精英挑战赛2016
- 2017 华为软件精英挑战赛
- 2017华为软件精英挑战赛
- 2017华为软件精英挑战赛
- 2017华为精英挑战赛总结
- 华为软件精英挑战赛【德州扑克】心得体会
- 德州扑克 2015 华为软件精英挑战赛
- bzoj5008: 方师傅的房子
- Android Espresso单元测试
- 性能问题分析
- B. The number on the board
- 第九篇
- 华为软件精英挑战赛总结
- xcode清理
- MFC键盘信息
- Linux多进程编程
- 简单的node爬虫练手,循环中的异步转同步
- spring mvc 访问静态资源三种方式
- 2017年09月05日21:36:03
- 计算机组成与系统结构课程设计
- 求最长不重复字符串