《程序员的数学:7指数爆炸》

本文属于《程序员的数学》读书笔记系列。本文内容相对比较容易。

什么是指数爆炸?

   通过思考一张1mm的纸(假设可以无限次折叠),每次折叠厚度翻一倍,折多少次能够有地月距离39万KM那么厚,作者引出指数的概念。

  凭直觉也得千儿八百次,答案是39次,的确很震撼。

我们把这种数字急剧增长的情况称为“指数爆炸”,折纸时的厚度2^{n} 里面n就是折纸次数。之前接触到的汉诺塔问题的解析式和斐波那契数列都属于指数的范畴。

所以我们应该如何轻松的解决这类问题呢?

二分查找法

  在15个罪犯里找到唯一的那个罪犯的方法只能是一个个问,那么当我们问一个人时,他可以有3种回答:
1.我是罪犯
2.罪犯在我左边
3.罪犯在我右边

利用二分法,先询问最中间的人,如果在左边,就继续在左边的范围内重复此项方法,直到找到罪犯。这便被称为2分法。他和汉诺塔的解析式如出一辙,可以利用指数原理经过很少的步骤便可找到目标。

   关键是向中间的人提问一次,就能筛掉一半的人,这里蕴含着使用n-1层来表示n层问题的递归结构。

二分法本身也是递归结构,经过n次询问,可以在2^n-1人中确定目标。每判断一次就可以查找近一半的对象。(换个说法,就是没多判断一次,就能从近2倍的查找对象中找到目标数据,二分法有效利用了指数爆炸)。二分法需要注意的是,所有元素一定要按顺序排列,这点至关重要。

对数

 基本的概念对数、基数中学都学过了,举例就是以10为底,1000的对数为3,底也称为基数。

还有计算机常见的以2为底的log_{2}^{256} =8

指数法则和对数

10^{a}*10^{b} =10^{a+b}

用加法来实现乘法运算。

作者举例了计算尺的应用。当然现在有计算机,不用计算尺了。

  指数思想也被用于加密的实现中。因为每多加密一位,暴力破解就需要指数次的运算能力的提升。原则上有限时间里根本不可能破解。指数以其数字的巨大增长能力在加密领域有基本性的作用。

对于指数问题的解决方法,主要有4种,但均不太容易应付规模大的数字。

1.极力求解
类似于暴力破解
2.变相求解
把问题转化成简单的问题,应用起来很难。
3.近似求解
有助于实际应用,结果不准确
4.概率求解
利用随机数,可能比较快的得出结果,但也可能运气不好永远也找不到结果。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值