全部博文(95)
分类:
2008-08-02 21:01:22
最近看了一本书,介绍了很多解放思维的东西,个人觉得很不错。里面有一部分讲到了封底运算,觉得挺有趣的,非常利于我们做快速的推算。
由经济中的“72法则“展开吧。假如你在银行投了一笔钱,时间是Y年,利率每年是r%.那么多少年后你的钱会翻倍呢?这就用到了快速运算的经济72法
则:如果r*y=72,那么在利率为r时,过了大概y=(72/r)年,你在银行的钱就会翻番了。这个近似相当精确,如果你投资了1000元,时间是12 年,利息是6%,那么到时你将得到2012元,当花9年时间,利息为8%时,投资1000元,将得到1999元。72法则对于估计指数过程的增长来说非常 之方便。
其实问题抽离于具体的实际就是:总量,时间,增长率这三者之间的关系。应用于实际就是,如果盘子里的细菌每小时增长率是3%,那么72/3=24,即每天它的数量就会翻倍。其实对于程序员来说,一说到会翻倍,哦,不是2的关系吗,又会想到另一个经验法则:210=1024=1K,那么10次的翻倍大约是1000,20次的翻倍大约就是220=1M即1百万,30次的翻倍大约就是230=1G即10亿了。总之相差1000的关系。
现在来看看应用于程序估算时间的一个例子:假设一个指数程序花了10秒钟来解决一个规模为n=40的问题,并且n增加1的话,就增加了12%的运行时间。从这个问题来抽象:总量:运行时间,增长率:r%=12%,y就相当于n(因为n每增加1的话,时间就增加12%)。由72法则:r*y=72,
n每增加6,运行时间就会翻倍,这是一次翻倍的时间哦。
n每增加60=6*10时,也就是10次翻倍,运行时间会上涨1000倍。
所以在n=100=40+60时,就花费10*1000=10000秒。当n再增加60时,即n=100+60=160时,时间又要上涨1000倍了,此时为107=10000*1000。这是花了多少时间呢?我想您这时要记住一年有3.1555*107秒,那么对于你估算将有很重要的意义,所以要大概等上4个月的时间。呵呵,这样对于程序运行时间的估算是大有好处的,节省了你不少时间吧,用于投资也是个不错的经验法则。
中心思想就是从72法则:增长率和增长时间的关系--翻倍。另外也利用计算机中常用到的:210=1024,也就是10次的翻倍时间,就使总量增加1000倍。
呵呵,这对于我们日常快速计算是个大大有利的工具吧!