算法导论【在线算法】
- The Ski-Rental Problem
- 问题描述
- 在线算法
- 证明
- The Lost Cow Problem
- 问题描述
- 在线算法
- 类似问题—寻宝藏
- The Secretary Problem
- 问题描述
- 在线算法
- The Best Possible k
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=k−1次后再也不滑雪,那么在线算法的总费用为
B
−
1
+
B
=
2
B
−
1
B-1+B=2B-1
B−1+B=2B−1,而离线算法取得的最优解为
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}
B2B−1=2−B1,则我们说这个策略是
(
2
−
1
B
)
(2-\cfrac{1}{B})
(2−B1)竞争的
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
该算法的竞争比为 O ( m ) O(m) O(m)
证明:
最坏的情况是,发现宝藏的距离比上次在这条路上搜索的距离稍远一点点,因此,最优解为 O P T : 2 j + ε OPT:2^j +ε OPT:2j+ε,其中 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 \begin{aligned} Cost OPT &= 2^j +ε>2^j\\ \ \ \ \ \ \ Cost ON&= m(1+2+4+...+2^{j+1})+2^j +ε\\ &= m · 2^{j+2} +2^j +ε = (4m+1)· 2^j +ε < (4m+1) · Cost OPT \end{aligned} CostOPT CostON=2j+ε>2j=m(1+2+4+...+2j+1)+2j+ε=m⋅2j+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的概率成功雇佣我们最合格的申请人