Chinaunix首页 | 论坛 | 博客
  • 博客访问: 770644
  • 博文数量: 95
  • 博客积分: 6011
  • 博客等级: 准将
  • 技术积分: 1342
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-12 16:58
文章分类

全部博文(95)

文章存档

2009年(44)

2008年(51)

我的朋友

分类:

2008-08-02 21:01:22

   

  最近看了一本书,介绍了很多解放思维的东西,个人觉得很不错。里面有一部分讲到了封底运算,觉得挺有趣的,非常利于我们做快速的推算。
   

  由经济中的“72法则展开吧。假如你在银行投了一笔钱,时间是Y年,利率每年是r%.那么多少年后你的钱会翻倍呢?这就用到了快速运算的经济72 则:如果r*y72,那么在利率为r时,过了大概y=(72/r)年,你在银行的钱就会翻番了。这个近似相当精确,如果你投资了1000元,时间是12 年,利息是6%,那么到时你将得到2012元,当花9年时间,利息为8%时,投资1000元,将得到1999元。72法则对于估计指数过程的增长来说非常 之方便。
  其实问题抽离于具体的实际就是:总量,时间,增长率这三者之间的关系。应用于实际就是,如果盘子里的细菌每小时增长率是3%,那么72/324,即每天它的数量就会翻倍。其实对于程序员来说,一说到会翻倍,哦,不是2的关系吗,又会想到另一个经验法则:210=10241K,那么10次的翻倍大约是100020次的翻倍大约就是220=1M1百万,30次的翻倍大约就是230=1G10亿了。总之相差1000的关系。

  现在来看看应用于程序估算时间的一个例子:假设一个指数程序花了10秒钟来解决一个规模为n=40的问题,并且n增加1的话,就增加了12%的运行时间。从这个问题来抽象:总量:运行时间,增长率:r%=12%y就相当于n(因为n每增加1的话,时间就增加12%)。由72法则:r*y=72,

n每增加6,运行时间就会翻倍,这是一次翻倍的时间哦。

n每增加606*10时,也就是10次翻倍,运行时间会上涨1000倍。

所以在n=100=40+60时,就花费10*100010000秒。当n再增加60时,即n=100+60=160时,时间又要上涨1000倍了,此时为10710000*1000。这是花了多少时间呢?我想您这时要记住一年有3.1555*107秒,那么对于你估算将有很重要的意义,所以要大概等上4个月的时间。呵呵,这样对于程序运行时间的估算是大有好处的,节省了你不少时间吧,用于投资也是个不错的经验法则。

  中心思想就是从72法则:增长率和增长时间的关系--翻倍。另外也利用计算机中常用到的:210=1024,也就是10次的翻倍时间,就使总量增加1000倍。

   呵呵,这对于我们日常快速计算是个大大有利的工具吧!



阅读(1335) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-08-31 19:11:33

拓展了思路,不错,呵呵!!