SICP ex1-10 order of Growth
来源:互联网 发布:win10 磁盘100 优化 编辑:程序博客网 时间:2024/06/06 06:42
本来是觉得这个题目蛮简单的没打算写一篇博客后来发现还挺麻烦的,就写下来顺便让自己开心一下
题目背景:由ex1-9的change 递归版本,对(change 11 5)函数展开,求取空间的O和时间的O
首先我们画一个树状图,由于展开较大,此处不给图
我们知道空间的函数f(n)=树的层数,时间f(n)=树的节点数
然后通过简单分析我们会发现树的层数就是把change两个para都减到0每减1,树的层数加1
因此得出树的空间函数f(n,a)=n+a(n为amount,a为kinds-of-coins),O(n,a)=n+a
时间稍微麻烦一点,我们通过简单分析得出递归式f(n,a)=f(n-1,a)+f(n,a-1)
这个式子过于抽象,我们简单的列一下
f(1,0)=1
f(2,0)=f(1,0)+f(2,-1)=1+0=1
f(3,0)=f(2,0)+f(3,-1)=1+0=1
f(4,0)=f(3,0)+f(4,-1)=1+0=1
到此我们想来对f(n,0)有了值恒为1的猜想
好了,通过简单的数学归纳法我们得证结果f(n,0)=1
我们不管这个结论继续f(n,1),f(n,2)...
我们通过简单的列举加猜测发现
f(n,0)=1
f(n,1)=n+1
f(n,2)=(n+2)(n+1)/2
再次通过简单的分析,我们发现f(n,0)的前n+1项和为f(n,1),f(n,1)的前n+1项和为f(n,2)
我们猜测f(n,a+1)=f(n,a)+f(n-1,a)+...+f(0,a)(a!=0)
我们简单展开f(n,a+1)=f(n,a)+f(n-1,a)+..+f(0,a)+f(-1,a+1)(a!=0)(这是为什么呢?粗粗看了下,好像是穷举了coins=1*n的各种情况)因为f(-1,a+1)=0,猜测是正确的
到此我们已经可以计算a=5时的时间O了
由于计算好麻烦的样子,由于每次都是n+1项的和,所以下一个式子应该会在最高项指数+1,所以猜测O(n,0)=1,O(n,1)=n,O(n,2)=n^2...O(n,5)=n^5
(网上找不到答案,也不知道对不对...)
(其实直接对一开始分析的递归式进行展开就能得出这个结论了= =,但我这种人脑袋不太灵光,总会绕点远路)
个人思考过程,如有错,欢迎纠正
- SICP ex1-10 order of Growth
- SICP ex1-20 ex1-22
- SICP ex1-23 ex1-25
- SICP ex1-30 ex1-31
- SICP ex1-11 ex1-12 ex1-14
- SICP ex1.11
- SICP ex1-15
- Week1-9Order-of-Growth classifications
- [小总结]常见order-of growth
- SICP ex1-17 ex-18 ex1-19
- SICP EX1-9 change 问题
- 6.00 Introduction to Computer Science and Programming Lec 8: Efficiency and Order of Growth
- Ex1
- ex1
- ex1
- Chapter3 Growth of Functions
- Growth of a Population
- The Growth Markets of China
- Android——文本类控件
- Mac或Windows下安装MyEclipse2015
- nginx搭建rtmp协议流媒体服务器总结
- Objective-c_Date 日期对象
- 剖析八种经典排序算法
- SICP ex1-10 order of Growth
- 深度学习算法简介
- 2016 UESTC Training for Data Structures D - 卿学姐与魔法 优先队列、构造
- 测试验证mysql开启binlog_rows_query_log_events参数前后的比较
- 在百度加固中正确使用ida的姿势
- html中调用本地exe程序 打开文件或文件夹
- 数学漫步百度云视频资源
- Beyond----光辉岁月
- 顺序容器——C++Primer第九章