算法和机器性能提高带来输入规模增大的比较

算法和机器性能提高带来输入规模增大的比较

话说王晓东编的《算法设计与分析》上有这么一道题,说是硬件厂商XYZ公司宣称他们研制的微处理器的运行速度是其竞争对手ABC公司同类产品的的100倍,问对于计算复杂性分别为n,n^2,n^3,和n!的各类算法,若用ABC公司的计算机能在1小时内解决输入规模为n的问题,那么用XYZ公司的计算机在1小时内分别能解决输入规模为多大的的问题。

(这里先说说为什么对于计算复杂性不同的算法,用ABC公司的计算机却能都在1小时内解决输入规模为n的问题,个人认为:要么是因为采用了不同型号的计算机来计算,要么就是把题目中谈到的这些在不同计算复杂性的算法里进行计算时涉及到的输入规模n,视为是不同的(即几个n都不是同一个n,可视为是一种符号或者变量,不需深究其含义),那么在列式计算时,就可以针对不同的计算复杂性算法,分别列式计算。本人倾向于采纳后一种观点。下面是解法,取自网上:)


对于算法复杂度为n^2的算法,我们不妨设1小时内能在XYZ机器上解决输入规模为n1的问题,这样在XYZ机器上需要的元操作的个数为n1^2,假设在ABC机器上每个元操作所耗费的时间是e1,XYZ机器上是e2,显然e2=1/100e1,由于都是1小时,就有:1小时=n^2*e1=n1^2*e2=n1^2*e1/100,所以n1=10n,我们可以看出,对于复杂度为n^2的算法,当机器性能提高了100倍时,输入规模只增加了10倍。同样,可以算出当算法复杂度为n^3时,n1=4.65n,为n!时,n1=n+log100。也就是说,随着算法复杂度的提高,机器性能的提高带来的问题规模的提高越来越小,因此研究高效率的算法还是必要的。

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值