本文翻译自维基百科词条: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. System.IO.Path

    System.IO.Path 分类: C#2011-03-23 10:54 1073人阅读 评论(0) 收藏 举报 扩展磁盘string2010c System.IO.Path提供了一些处理文件名和路 ...

  2. 支撑百亿级应用的 NewSQL

    支撑百亿级应用的 NewSQL https://zhuanlan.zhihu.com/newsql/ 项目背景 初次接触 TiDB,是通过同程网首席架构师王晓波先生的分享,当时同程网正在使开发和数据库 ...

  3. 603E

    LCT维护MST+子树信息 看了好长时间题解 editorial 结论:像做最小生成树一样,当每个连通块都是偶数个点就停下来. 每次复杂度mlogm 口胡 首先我们发现奇数个点是不满足每个点度数为奇数 ...

  4. php 原生简版日志导出

    <?phpfunction writeLog($msg){ $logFile = date('Y-m-d').'.txt'; $msg = date('Y-m-d H:i:s').' >& ...

  5. 引入外部CSS的两种方式及区别

    1.CSS的两种引入方式 通过@import指令引入 @import指令是CSS语言的一部分,使用时把这个指令添加到HTML的一个<style>标签中: 要与外部的CSS文件关联起来,得使 ...

  6. Python 1:环境搭建及运行第一个程序

    在计算机控制面板中找到系统,然后点击高级系统设置,再点击环境变量,把安装的python.exe的目录复制到下面系统变量的path栏最后面,复制前加个分号以隔开前面的变量,然后按3次确定即可退出配置.具 ...

  7. 分别使用Hadoop和Spark实现TopN(1)——唯一键

    0.简介 TopN算法是一个经典的算法,由于每个map都只是实现了本地的TopN算法,而假设map有M个,在归约的阶段只有M x N个,这个结果是可以接受的并不会造成性能瓶颈. 这个TopN算法在ma ...

  8. ROS-URDF-Gazebo

    前言:在gazebo里运行urdf文件 一.安装教程包 cd ~/catkin_test/srcgit clone https://github.com/ros/urdf_sim_tutorial.g ...

  9. 一种压缩图片的方法---Machine learning 之 K-Means

    背景描述: RGB编码:对于一个直接用24bit表示每一个而像素的图像来说,每一个pixel使用8-bit无符号整数(0-255)来表示红or绿or蓝. 压缩目的: 将128x128大小的图片由原来的 ...

  10. dotnetnuk错误提醒机制

    DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "关注保存出错.", DotNetNuke.UI.Skins.Controls.Mo ...