当前位置:   article > 正文

算法导论【在线算法】—The Ski-Rental Problem、The Lost Cow Problem、The Secretary Problem_old mcdonald算法

old mcdonald算法

The Ski-Rental Problem

问题描述

  • 假设你正在上滑雪课。每节课结束后,你决定(取决于你喜欢的程度、你的骨骼状况和天气)是继续滑雪还是完全停止滑雪。
  • 你可以选择以1美元一次的价格租用滑雪板,也可以以B美元的价格购买滑雪板。
  • 你是买还是租?
  • 如果你事先知道你一生中会滑雪多少次,那么选择租还是买就很简单了。
  • 如果你要滑雪超过 B B B次,那就在开始前购买,否则就一直租。该算法的代价为 m i n ( T , B ) min(T,B) min(T,B)
  • 这种对未来了如指掌的策略被称为离线策略。

在线算法

  • 实际上,你不知道你会滑雪多少次。你该怎么办?
  • 在线策略是:取一个数字k,这样在租用k−1次后,您将购买滑雪板(就在第k次滑雪之前)。
  • 如果我们取 k = B k=B k=B,那么可以保证我们支付不会超过离线策略成本两倍的费用
  • 例如:假设B=7美元,那么,在6次租金之后,你就买了。总付款:6+7=13$

证明

最坏情况下, k = B k=B k=B,我们选择在滑雪次数 T = k − 1 T=k-1 T=k1次后再也不滑雪,那么在线算法的总费用为 B − 1 + B = 2 B − 1 B-1+B=2B-1 B1+B=2B1,而离线算法取得的最优解为 m i n ( T , B ) = B min(T,B)=B min(T,B)=B,此时竞争比为 2 B − 1 B = 2 − 1 B \cfrac{2B-1}{B}=2-\cfrac{1}{B} B2B1=2B1,则我们说这个策略是 ( 2 − 1 B ) (2-\cfrac{1}{B}) (2B1)竞争的
在这里插入图片描述

The Lost Cow Problem

问题描述

  • Old McDonald失去了他最喜欢的奶牛。最后一次看到它朝着通向两条无限道路的路口行进。没有一位目击者能说出奶牛是选择了左边还是右边的路线。
  • 在这里插入图片描述

在线算法

  • 在线算法是9-competitive的,换句话说:在找到奶牛之前可能经过的距离最多是最佳离线算法(知道奶牛在哪里)距离的9倍
  • 最坏的情况是,他发现奶牛的距离比他上次在这一侧搜索的距离稍远
  • 因此, O P T = 2 j + ε OPT=2j+ε OPT=2j+ε,其中 j = j= j=迭代次数, ε ε ε是某个小距离。然后
  • 在这里插入图片描述
  • 伪代码如下:

在这里插入图片描述

类似问题—寻宝藏

在这里插入图片描述
在这里插入图片描述

m m m条路编号为 1 , 2 , 3... m 1,2,3...m 1,2,3...m,从第一条路开始寻找,初始寻找距离为 d = 1 d=1 d=1,如果在这个距离内找到了宝藏则结束寻找,没找到则寻找距离翻倍,切换至寻找下一条路径,路径编号对 m m m取模,保证每次寻找的路径都是合法的,直到找到宝藏。

Treasure(m)
d = 1;current side = 1
while true do
	Walk distance d on current side
        if find treasure then
            exit
        else
            d = 2d
            current side = (current side+1)%m
            return to starting point
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

该算法的竞争比为 O ( m ) O(m) O(m)

证明:

​ 最坏的情况是,发现宝藏的距离比上次在这条路上搜索的距离稍远一点点,因此,最优解为 O P T : 2 j + ε OPT:2^j +ε OPT2j+ε,其中 j j j=迭代次数, ε ε ε是某个小距离。则:

C o s t O P T = 2 j + ε > 2 j        C o s t O N = m ( 1 + 2 + 4 + . . . + 2 j + 1 ) + 2 j + ε = m ⋅ 2 j + 2 + 2 j + ε = ( 4 m + 1 ) ⋅ 2 j + ε < ( 4 m + 1 ) ⋅ C o s t O P T

CostOPT=2j+ε>2j      CostON=m(1+2+4+...+2j+1)+2j+ε=m·2j+2+2j+ε=(4m+1)·2j+ε<(4m+1)·CostOPT
CostOPT      CostON=2j+ε>2j=m(1+2+4+...+2j+1)+2j+ε=m2j+2+2j+ε=(4m+1)2j+ε<(4m+1)CostOPT

所以竞争比为 O ( 4 m + 1 ) = O ( m ) O(4m+1)=O(m) O(4m+1)=O(m)

The Secretary Problem

问题描述

  • 我们有n位候选人(可能是求职者或可能的婚姻伴侣)。
  • 我们的目标是选择最好的候选人。
  • 假设候选人可以从最好到最坏完全排序,没有任何联系。
  • 候选人以随机顺序依次到达。
  • 我们只能在候选人到达时确定他们的相对排名。
  • 我们不能观察绝对等级。
  • 每次面试后,我们必须立即接受或拒绝申请人。
  • 候选人一旦被拒绝,就不能被召回。
  • 一旦候选人被录取,我们就停止面试。

在线算法

  • 已知候选人数n
  • 在线策略在遇到第i位候选人后,我们能够给出分数score(i)
  • 选择一个正整数k<n,面试并拒绝前k位候选人。
  • 继续面试剩下的n-k位,并接受第一位得分高于前k位候选人的候选人。
  • 如果最高分在第一批面试的k人里,那么我们必须接受第n位即最后一位申请人
  • 伪代码:在这里插入图片描述

The Best Possible k

结论:如果我们在 k = n e k=\cfrac{n}{e} k=en的情况下实施我们的策略,我们将以至少 1 e \cfrac{1}{e} e1的概率成功雇佣我们最合格的申请人

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/790346
推荐阅读
相关标签
  

闽ICP备14008679号