编程珠玑--粗略估算

简介:

粗略估算是《编程珠玑》中第七章提到的内容。

 

这篇文章将“粗略估算”看做是一项工程技术,是程序员必备的一项技能之一。

本人非常同意这个观点。粗略估算是一种把复杂的事情简单化的能力。我们对某个算法的时间复杂度和空间复杂度的估算就是基于这种估算的能力。如果你能较为准确的估算出一个程序的输出结果,如果你能准确估算出这个程序的运行时间,如果你能准确估算出这个项目的开发时间……如果你能拥有这样的能力,该有多么美好啊。所以难怪乎像微软、Google这样的大公司老喜欢出“请计算飞机场一天有多少飞机起飞和降落?”“请计算美国一年产轿车多少辆?”这样的估算问题!

 

估算是随着大家的经验增长而越来越准确的。下面介绍几个估算的基本技巧和定理:

 

1.  72法则

假设以年利率r%投资一笔钱y年,如果r*y=72,那么你的投资差不多会翻倍。

 

具体例子:

以年利率6%投资1000美元12年,可得到约2000美元(实际数字是2012美元)

以年利率8%投资1000美元9年,可得到约2000美元(实际数字式1999美元)

 

假设一个指数程序解决规模为n=40的问题需要10秒的时间,并且n每增加1运行时间就增加12%,问当我们把n=100的时候,大约需要多少运行时间?

根据72法则,n每增加6运行时间翻倍,那么当n增加60,运行时间增加为原来的2^10≈1000倍。因此,n=100时,大约需要10 000秒(2~3个小时)。

 

联合国估算1998年的世界人口为59亿,年增长率为1.33%。如果按照这个速率下去,到2050年人口会是多少?

2050-1998=52; 52*1.33≈70

因此根据72法则,2050年人口约为59*2=118亿。

 

2.  Little定律

队列中物体的平均数量为进入速率与平均停留时间的乘积

 

具体例子:

假设你正在排队等待进入一个火爆的夜总会,根据观察,你可以估算:“这个夜总会能容纳60人,每个人在里面逗留时间约是3小时,因此进入夜总会的速率为20人/小时。现在队伍中前面还有20人,因此这意味着我们需要等待大约一个小时的时间。”

 

请估计一下你所在的城市的死亡率,假设人口的平均寿命为70岁。

Little定律告诉我们,城市的死亡率为1/70。

 

当我们设计一个程序的时候,有算法若干,功能需求若干。这时候就需要组织者有足够的估算能力,估算并平衡每个较优算法所付出的时间代价和性能需求。从而做出正确的决定。

 


本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/archive/2010/11/05/1869513.html,如需转载请自行联系原作者

相关文章
【动态规划上分复盘】下降路径最小和|礼物的最大价值
【动态规划上分复盘】下降路径最小和|礼物的最大价值
【动态规划刷题 4】礼物的最大价值&&下降路径最小和
【动态规划刷题 4】礼物的最大价值&&下降路径最小和
|
7月前
|
机器学习/深度学习 算法
【算法 | 实验7】以最小的步骤收集所有硬币(算法正确性还没想清楚)
题目 最小步骤收集硬币 有许多相邻排列的硬币堆。我们需要以最少的步骤收集所有这些硬币,在一个步骤中,我们可以收集一个水平线的硬币或垂直线的硬币,收集的硬币应该是连续的。 输入描述 输入第一行整数N表示硬币堆的数量
91 0
|
7月前
|
人工智能 vr&ar
找结论——势能
找结论——势能
|
算法 Python
算法创作|随机出10道题并计算正确率问题解决方法
算法创作|随机出10道题并计算正确率问题解决方法
133 2
|
达摩院 算法 API
如何吃,少花钱又营养丰富?可用MindOpt线性规划求解来决策
营养调配问题的的目标是利用优化模型来设定每日饮食菜单,在满足各类营养的需求同时更能优化总成本
如何吃,少花钱又营养丰富?可用MindOpt线性规划求解来决策
|
数据可视化 数据挖掘 数据建模
鸟枪换炮,利用python3对球员做大数据降维(因子分析得分),为C罗找到合格僚机
众所周知,尤文图斯需要一座欧冠奖杯,C罗也还想再拿一座欧冠奖杯,为自己的荣誉簙上锦上添花。意甲霸主在意甲虽然风生水起,予取予求,但是在今年欧冠1/8决赛赛场上,被法甲球队里昂所淘汰,痛定思痛,球队解雇了主教练萨里,签约名宿皮尔洛,但是要想在欧冠赛场上夺冠,这还不够,球队还需要什么?没错,需要一名强力中锋,在正印中锋伊瓜因难堪大用的情况下,尤文图斯必须引进一名强力中锋。
鸟枪换炮,利用python3对球员做大数据降维(因子分析得分),为C罗找到合格僚机
|
算法
软考:计划评审技术(PERT)三点估算法计算工期、标准差、完成概率
软考:计划评审技术(PERT)三点估算法计算工期、标准差、完成概率
245 0
软考:计划评审技术(PERT)三点估算法计算工期、标准差、完成概率
|
机器学习/深度学习 数据采集 SQL
学术加油站|学习型基数估计:设计方式的探索与比较
今天分享的这篇论文是李国良教授的团队今年发表的一篇综述,主要内容是从现有的学习型基数估计论文中抽象出 3 种统一工作流程,并对各个种类的基数估计方法中选择效果明显的几种作为代表,从多个方面进行全面的测试。
584 0
学术加油站|学习型基数估计:设计方式的探索与比较