2017华为软件精英挑战赛解分析

article/2025/3/3 18:09:18

后经在复赛赛题上测试,效果并不好,只适合部分数据集,并且没有理论支持,放出来只为启发——


以下方法初中级样例1s以内,高级样例10s内出最优解——

不随机,无启发式,走优化的方法。采用反馈-迭代的方法逼近最优解


贴上在各算例上的运行时间以及结果【基本上迭代个10几次就收敛了】
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZTlDs9WJ-1641145283208)(https://img-blog.csdn.net/20170406152345877?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTM4NjA0NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

**一开始是为吸引下注意其实不是最优解是近似最优解

程序运行过程中截图
这里写图片描述


思路

改图——

设置超级源超级汇。源点和所有节点相连,带宽无穷大,cost待定;汇点和所有消费节点相连,带宽为消费需求,cost为0。则问题变成单一源到单一汇点的最小费用流问题。

至于在哪设服务器,在不想做服务器的地方,其实只要把源点到该点的连接cost改成特别大,在求最小费用流时算法自然不会考虑该条路径,即,不会把该节点当成服务器。这样离散问题就变成了连续问题

问题是服务器要摆哪。

****我们把服务器架设费用换成连接的cost。假设 P点设一服务器,服务器架设费用 c,在求得的最小费用流实际方案中,源到P点流量 f【以下"流量"都是说的超级源到某一点的流量】,那么按道理源到 P的那条连接的cost一开始该设成 c/f ,就可以不用单独考虑服务器架设费用。就按这个思路,对于任意一个节点,先预测假如把他作为服务器的可能流量,计算源点到该点连接的cost=c/f ,然后求最小费用流,然后根据实际流量调整一开始预测的流量,然后再求最小费用流,,,

梨子——

假如一网络拓扑如下、节点 1和 节点3是消费节点,则改图加上超级源s 超级汇t之后的网络如下图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tqne6WLd-1641145283212)(https://img-blog.csdn.net/20170407111031126?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTM4NjA0NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

假设节点 1需求为 7,节点 3需求 1
不考虑带宽,把cost当成距离,各点的流量假设就让他只满足离他最近的那个消费节点的须要,则各点预测流量如下
这里写图片描述

再假设服务器架设费用280
计算一开始 s到各点的连接 cost如下
cost[s-1]=280/7=40, cost[s-2]=40, cost[s-3]=280, cost[s-4]=280, cost[s-5]=280

然后就是计算最小费用流以及根据实际求得的流量调整预测值以及相应的 cost了,,


*来自我吹一波0,这样的求法可以保证每一次出来都是可行解【没有删路径只是改了源到某个点的cost】,不像概率变异的方法在不是解的地方浪费大量时间,服务器个数以及位置会在迭代过程中动态调整,将一个离散问题换成一个连续性问题,使迭代优化的方法成为可能,,
至于迭代为啥会收敛,,,嘿嘿,,你猜,,


算法步骤

do{

一、预测各点流量

暂抛开带宽限制,把cost看成是距离,简单起见,就假设一个点就只给离自己最近的消费节点提供流量,且是提供满足其所需的流量,够简单把?
按照预测的流量计算源到各个点的cost

二、求给定方案下的最小费用流

【一大波现成的算法正在赶来】

三、调整预测值

比如你算出来最终是从源到点 T上有流量1【点 T被设为服务器】,流量为 f1,设一开始预测的流量为 f0, 只要令 f0=f1, 同时记得调整相应的连接的cost。

**注意:**只修改被当成服务器的那些点,其他点的连接上的预测值保持不变。

}while();


代码块

哪天开心了会放在这的

以下是废话

你问我们队现在在哪呢,还能在哪,淘汰了呗【可惜了这么牛B的方法】
4月初才开始参赛,u盘坏了、网络断了、输出格式不对程序提交一直result error,烦,
只好我们的方法供出来,但愿能换钱0

看这里,如果对你有帮助,,嘿嘿,,捐助我【另,全套代码白送啦】

支付宝二维码——

这里写图片描述

注意:【我就喜欢有耐心看到最后的】为了使服务器趋于集中【而不是每个消费节点一个】,在最小费用流的计算过程中,如果实际的流已经大于预测值了,则源到该点的cost置为0,【这样算法就更倾向于继续选则流量从这个点走】。
迭代渐进的方法其实有个缺点,就是容易陷到沟里【局部极小值】。想办法扰动他一下,叫他跳出来


  1. 你看不到我你看不到我. ↩︎


http://chatgpt.dhexx.cn/article/EuRStiaE.shtml

相关文章

2021华为软件精英挑战赛(粤港澳赛区复赛第八)

一、序言 总结一下四月份参加的华为软挑赛,距离现在已经结束了四个多月,终于有时间抽空写写总结了(小作文),我们是粤港澳赛区的620&619-F3队,第一次参加这次比赛,本想尝试一下,但…

css 给文字加下划线

css给文字加下划线 直接贴代码 span {cursor: pointer;&:hover {color: #40A9FF;text-decoration: underline;}}

Excel批量设置下划线

Excel批量设置下划线 目录 Excel批量设置下划线 1、框选需要设置的单元格内容,鼠标右键选择“设置单元格格式” 2、点击“自定义”在类型框中输入“ *_ ” 点击“确定”自动生成(注意这个 *_符号需要将输入法切换为英文输入法) 3、完成…

h5下划线怎么设置_怎么给文加下划线?

怎么给文本加下划线?下面本篇文章就给大家介绍一下HTML页面和word文档中给文本加下划线的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 HTML页面中给文本添加下划线 在HTML页面中怎么给文本添加下划线?…

latex输出下划线

第一种: 如果只是在作者的邮箱...输出下划线的话直接使用 \_ 就可以了 ma\_pengsen 输出结果: 第二种: 如果要在下划线上输出东西,那需要 \underline{XXXXXXX} ma\underline{ABCDEFG} 结果:

speedoffice(Word)文字怎么添加下划线

Word里面编辑文字,有时需要添加下划线,那么怎么添加下划线了?以最常用的speedoffice为列。 1、首先,我们用speedoffice打开Word文件,选中需要添加下划线的文字内容; 2、然后,鼠标点击选择“主页…

css里给文字加下划线代码,css给文字加下划线

语法:linear-gradient(direction, color-stop 1, color-stop 2,……) 简单用法:background-image: linear-gradient(red, transparent); 增加角度,linear-gradient(45deg, red, transparent) 加个position:linear-gradient(45deg,…

Word调整文字和下划线的间隔

工作环境(蓝色粗体字为特别注意内容) 1,开发环境:Microsoft word 2007 2,参考文献:https://blog.csdn.net/yiluyangguang1234/article/details/50158381 我们在使用Word编辑文档的时候,遇到有的标题带下划线的&#…

CSS设置下划线与文字间距距离

css的写下划线 text-decoration: underline; 但是这样的样式下划线太靠近文字了 如图 修改方式 border-bottom: 1px solid red;padding-bottom: 8px; 如图

word下划线,间距调大方式

都是下划线,是不是第一个看着更舒服,行间距更大。 下面的就是:我们常用的方式,ctrlu,下划线。 上面的是:连续打一行-,就是------,然后换到下一行,enter时候就出现了一条…

css里给文字加下划线代码,css添加文字下划线样式的方法

css添加文字下划线样式的方法 发布时间:2020-08-31 13:54:27 来源:亿速云 阅读:65 作者:小新 这篇文章将为大家详细讲解有关css添加文字下划线样式的方法,小编觉得挺实用的,因此分享给大家做个参考&#xf…

关于HTML,CSS中某一文字的下划线长度的改变

本人 刚刚入坑前端几个月。对于很多问题看的不是恨透测。前几日,写一个学长交代的小小网页时,遇到了一个问题。前前后后变化了好多次。最后解决了。我想有一些其他的学习者也有可能会遇到这类问题,特分享出来。希望可以帮到大家。 当时中需要…

word下滑线设置

方法一: 选择“文本”——>“选项”——>"高级"——>"为尾部空格添加下划线" step1: step 2: step3: step 4: 方法二: 选中需要添加下划线的部分——>"右键段落“——>"中文版式”——>“…

【CSS】下划线与文字间距,下划线粗细以及下划线颜色的设置

最开始的时候了解下划线的属性是: text-decoration:underline;但是,很遗憾的是,对于设计做的下划线用浏览器默认属性样式很难调整,使用这个属性并不能调整下划线与文字的间距,而且对于下划线的颜色也不好调整&#xf…

Python中函数的返回值

在之前的博客中分别介绍了Python中函数的定义、调用、以及函数的参数等,但是大家有没有发现:我们创建的函数都只是为我们做一些事,做完了就结束。但实际上,有时还需要对事情的结果进行获取。这类似于主管向下级职员下达命令&#…

python return_python 如何获得返回值 return

展开全部 前面两位的方法2113其实和先初始化AA,在调用AA的test()效果是一样5261的,在初4102始化AA()的时候,调用的那次test()的返回1653值已经丢了,比如这样定义:class AA(): def __init__(self): self.count0 sel…

python 自定义函数的返回值

python中自定义的函数,有的有返回值,有的没有返回值,且返回值的类型也需注意。 1、无返回值 例如 list 的 append 操作就是无返回值的,换句话说就是不能进行如下的连续操作: list [] list.append(1).append(2) 2、返…

python中函数的返回值,你了解吗?

函数返回值 1. “返回值”介绍 现实生活中的场景: 我给儿子10块钱,让他给我买包烟。这个例子中,10块钱是我给儿子的,就相当于调用函数时传递到参数,让儿子买烟这个事情最终的目标是,让他把烟给你带回来然后给你对么…

python报错怎么返回_python函数怎么返回值

python函数使用return语句返回“返回值”,可以将其赋给其它变量作其它的用处。所有函数都有返回值,如果没有return语句,会隐式地调用return None作为返回值。 python 函数使用 return 语句返回 "返回值",可以将其赋给其…

08、Python函数的返回值

函数返回值的特性 首先,让我们先来看两个例子 #示例一 def exa_a(x):print(x)return x1def exa_b(x):return x1print(x) #这句会执行吗?if __name__ __main__:print(exa_a(2))执行上面的语句我们可以得出return的第一个特性: 特性一&#…