AOR12在线算法

K-server问题:

给定一张图G, 某些点发出请求,此时需要一个server从一个点移动到请求点。(如果请求点本身就有server在,则不需要移动)

greedy:

令最近的那个server移动,但是效果并不好。考虑A,B,C三点,如果AB比较远,一个server在A, 另一个在C,如果请求都是B,C,则总是右边的server不断移动,而最优解是一个在B, 一个在C,不需要移动。

1维DC算法:

1.如果请求点在所有server同一侧,则令离其最近的server移动

2.如果请求点在两个server之间,则同时向请求点移动,直到一个server到达未知。

算法完成度: k

证明:势能函数为 Φ = k M + ∑ \Phi=kM+\sum Φ=kM+,计算一次势能的大小是OPT走一步,DC走一步势能之和。

M是OPT和DC算法server位置的最优匹配的cost。

∑ \sum 是DC算法任意两个server的距离之和,两个server只算一次距离。

如果证明以下两点:

1.OPT移动d, 势能函数最多增加kd

2.DC移动d, 势能函数最多减少d

则一次移动,势能函数先增加后减少,最后大于0,说明:

Φ n − Φ 0 = k O P T − D C > 0 \Phi_n-\Phi_0=kOPT-DC>0 ΦnΦ0=kOPTDC>0

整体来看,由于OPT的移动导致了整体势能增加了kOPT,由于DC的移动导致了整体势能减小了DC,而势能之差是正值,说明DC<kOPT

对于1,OPT移动导致匹配大小增加了d, 而 ∑ \sum 不变,因此势能增加kd

对于2,如果一个点移动,则M减小了d, 而 ∑ \sum 增加了(k-1)d,因此势能减小d

如果两个点同时移动,则一个点导致M减小了d, 另一个点导致M可能最多增加d,因此M至少是不变的。

两个点对于其他点的影响抵消了,只有两个点自己距离减小了2d,因此势能减小了2d, 满足条件。

由此可见,我们凑势能函数的时候:

1.前半部分的匹配不能动,修改的是后半部分的距离

2.距离:如果一个点运动,则距离可以增加,因为此时匹配是减小的,如果两个点同时运动,距离必须减小,因此此时匹配是不变的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值