SICP练习题1.14

一、空间增长的阶

因为从(cc 11 5)到(cc 0 1)总共16层(树的深度为16),所以可以看出最大步骤层数(所需空间增长的阶)是:11+5=16(因为(cc 11 x)中的x为(1-5),(cc y 1)的y为(0-11),(cc 11 1)中x和y都用了就算一个步骤层)。可推断出最大步骤层数可能和输入的关系大概为kinds-of-coins + amount 这样一个值,最大步骤层数的增长正比于输入(amount的值越大,kinds-of-coins +amount的值也就越大)。深度为n+5,其空间增长的阶为Θ(n)。

画的树。
在这里插入图片描述

二、时间增长的阶

总的步骤数,可以将简单的(cc n 1)和(cc n 2)单独拿出来观测,即只有1和5两种币值作为可换取的硬币:一、(cc n 1)的步骤数:(cc 1 1)~2,(cc 2 1)~4,(cc 3 1)~6,……,(cc n 1)~n2,在此情况下总的步骤数为n2,时间增长的阶为Θ(n);二、(cc n 2)的步骤数为(cc n 1) + (cc (n-5) 2) ,其中5为kinds-of-coins为2的值,(cc (n-5) 2)是右树的结点,从(cc n 2)往右一直下去为(cc (n-5) 2),(cc (n-25) 2),(cc (n-35) 2),……,(cc (n-m5) 2),把(cc n 2)也加入到这个数列中,可以看到规律(cc (n-05) 2),(cc (n-5) 2),(cc (n-25) 2),(cc (n-35) 2),……,(cc (n-m5) 2),右树的个数为m个(即n里最多有m个此时kinds-of-coins值所对应的币值的硬币),有多少右子树相应的就有多少个左子树。此时我们把所有右子树结点下和根下的左子树步骤数计算出来(根可看作是最大左子树的父结点),计算过程是这样的(n-05)2 + (n-15)2 + (n-25)2 + …… + (n-m5)2,等于2*(m+1)n - 2(((1+m)/2)m)*5,由此可见,总的步骤数是一个和n同时等差增长的参数为m的数的平方数相关的数,由此推出,当有5种币值的硬币时,所求得的总步数的公式中m的最高次幂也可达到5,也就是m5,由此推出步数增长的阶为Θ(nkinds-of-coins)

图片中的公式为计算左树结点总数。计算左树结点总数的公式和空间增长的阶

验证了一下能计算出左树的结点,可惜不知道如何完善,以后有机会再慢慢思考如何能在任何情况下计算所有的结点数。
在这里插入图片描述

感谢@SavageGarden_Love的文章:《SICP学习笔记 1.2.3 增长的阶》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值