本文翻译自维基百科词条:http://en.wikipedia.org/wiki/Ski_rental_problem
  滑雪租赁问题(ski rental problem)是一类问题的总称,指在持续重复花费和消除或减少重复花费后一次性付清两种策略间做出选择。

     问题阐述:
     许多在线问题(online problems)有名为租/买问题的子问题。我们需要在保持现有每隔一段时间付一定费用,或利用若干次固定大规模付费一次付清两种情况下做出选择。滑雪租赁就是一个经典的小例子,租/买即是整个问题。它的基本版本如下:
     你要去滑雪,但天数未知(各种原因使你不能确定准确时间,比如,丧失兴趣、摔坏腿或恶劣的天气)。假设滑雪板的租赁价格是每天1美金,购买滑雪板的花费是10美金。每天你都需要在将滑雪板再租一天和购买一副新的滑雪板之间做出决策。如果你事先知道你会去滑雪多少天,你就能决定你的最少花费。滑雪少于10天,租赁划算;多于十天,当然买滑雪板更划算;如果刚好十天,那或租或买都无所谓。这个问题就是,当你事先不知道你要滑雪多少天时怎么办。
     这个问题能以如下的方式正式建立。你将会去滑雪,滑雪天数d未知。我们现在寻找一种算法,使你不知道d时使用这种算法和你事先知道d时选取的最优方案之间的花费比率最低。这个问题普遍在最坏情况下分析,即算法是固定的我们寻找所有可能d值在最坏情况下的性能。尤其是,没有针对d的分布的假设(很显然,根据d分布情况,会选择不同分析和不同的方案)。
     收支平衡算法(the break-even algorithm):
     收支平衡算法会指导你头9天租赁,如果第十天继续滑雪,那么购买滑雪板。如果你在头9天过程中终止滑雪,那么你的花费和你事先知道你滑雪天数的花费相同。如果你刚好滑雪10天后停止,你的花费是19美金,比你事先知道滑雪天数的花费多出了90%。这是收支平衡算法的最坏情况。收支平衡算法是针对此问题已知的最好的确定性算法。
     你能比收支平衡算法做得更好吗?
     当然。比如,你能抛硬币决定。如果硬币正面朝上,你在第8天购买滑雪板,否则,在第10天购买。这是一个随机化算法的例子。显而易见,在不考虑滑雪天数情况下,总花费的期望最多比你事先知道滑雪天数多80%。如果你滑雪10天,你的花费的期望值是1/2 [7 +10] + 1/2 [9+10] = 18 美金,比起前面的90%来仅为80%。
     相应于无视对手(oblivious adversary)的最好的随机化算法是根据下面的分布p随机选择天数i,租赁i-1天,若第i天继续滑雪则购买滑雪板。Karlin等人首先提出了这个算法的分布  其中购买滑雪板花费b美金然后每天的租赁价格是1美金。它得出的花费期望值仅为事先知道滑雪时间的e/(e-1)≈ 1.58倍。没有随机化算法能做到更好。
     应用:
     Snoopy caching
     TCP确认
     总竞争时间调度

译:滑雪租赁问题(ski rental problem)的更多相关文章

  1. 洛谷 P3650 [USACO1.3]滑雪课程设计Ski Course Design

    P3650 [USACO1.3]滑雪课程设计Ski Course Design 题目描述 农民约翰的农场里有N座山峰(1<=N<=1000),每座山都有一个在0到100之间的整数的海拔高度 ...

  2. 区分DDD中的Domain, Subdomain, Bounded Context, Problem/Solution Space

    区分DDD中的Domain, Subdomain, Bounded Context, Problem/Solution Space 译自: Domain, Subdomain, Bounded Con ...

  3. USACO Section 1.3 题解 (洛谷OJ P1209 P1444 P3650 P2693)

    usaco ch1.4 sort(d , d + c, [](int a, int b) -> bool { return a > b; }); 生成与过滤 generator&& ...

  4. Luogu USACO Training 刷水记录

    开个坑记录一下刷USACO的Training的记录 可能会随时弃坑 只有代码和做法简述 可能没有做法简述 [USACO1.1]你的飞碟在这儿Your Ride Is He… 模拟,细节已忘 #incl ...

  5. Form Template Method

    <重构>中此方法叫做塑造模板函数,在设计模式中,对应的模式就是模板模式.重构中的很多变动比较大的方法都会导致重构,但重构中有非常多的小重构手法.就好像建筑一个房子,设计模式教你厨房客厅怎么 ...

  6. SFC游戏列表(维基百科)

    SFC游戏列表 日文名 中文译名 英文版名 发行日期 发行商 スーパーマリオワールド 超级马里奥世界 Super Mario World 1990年11月21日 任天堂 エフゼロ F-Zero F-Z ...

  7. BZOJ 1571: [Usaco2009 Open]滑雪课Ski

    Description Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里,每天会提供S(0<=S& ...

  8. 滑雪(ski)

    滑雪(ski) 题目描述 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...

  9. [USACO09OPEN]滑雪课Ski Lessons

    题目描述 Farmer John wants to take Bessie skiing in Colorado. Sadly, Bessie is not really a very good sk ...

随机推荐

  1. Openstack能解决这些问题吗?请各位大侠一起来讨论

    1.10万规模的虚拟机,每一个虚拟机能够在不论什么一个计算节点上启动,该怎样做?计算,存储,网络都是怎么拉通与配合的? 2.用户怎样自己定义业务网络,怎样解决网络不够用的情况?正常就4096个vlan ...

  2. bzoj 1191 [ HNOI 2006 ] 超级英雄Hero —— 二分图匹配

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1191 就是二分图匹配的裸题: 注意题目要求是第一次匹配失败就退出!没仔细看题差点丢失1A. ...

  3. aspectC++常用命令

    常用命令:1.ag++ main.cc //在工程目录下产生编译后的exe2.ag++ main.cc --weave_only //产生.acc 纯c++文件3.ag++ main.cc --gen ...

  4. hdu3853LOOPS(概率与期望dp)

    LOOPS Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others)Total Sub ...

  5. APP加固反调试(Anti-debugging)技术点汇总

    0x00 时间相关反调试 通过计算某部分代码的执行时间差来判断是否被调试,在Linux内核下可以通过time.gettimeofday,或者直接通过sys call来获取当前时间.另外,还可以通过自定 ...

  6. POJ 3635 优先队列BFS

    (感谢lyd学长的幻灯片) 注意vis数组的应用 在vis[i][j]中 i表示到了第i个点 j表示还剩j升油 vis[i][j]表示最小话费. 这样只需搜到话费比它少的更新入堆就OK了 //By: ...

  7. String,创建对象问题

    String str=new String("aaa"); 这行代码究竟创建了几个String对象呢?答案是2个,而不是3个.由于new String("aaa" ...

  8. Spring Boot (8) 全局异常处理

    服务层和dao层的最终异常会交给controller处理,控制层的异常则会记录日志系统. 新建一个类用来处理异常,名字随便GlobalDefaultExceptionHandler.java,加上@C ...

  9. 关于改变安卓Button样式,这里有一个好方法。

    首先,在drawable下创建一个新的xml文件(例如我创建的为button.xml).然后在里面输入以下代码. <item> <shape> <gradient and ...

  10. oracle-3种工具使用

    1:原命令行,dos 2:sqlplus,图形界面 3:isqlplus,网页版的.(假如自己机器无法安装oracle,可通过别人ip地址去使用oracle,http://ip:5560/isqlpl ...