算法导论(三版):第一章第二节课后题 以及 第一章思考题
来源:互联网 发布:dreamweaver淘宝首页 编辑:程序博客网 时间:2024/05/28 03:01
第一章第二节课后题
1.2-1
Give an example of an application that requires algorithmic content at the applicationlevel, and discuss the function of the algorithms involved.
答:
比如说我研究生期间要完成音乐门户网站的建设,但是为了能够提高用户体验,加入了推荐这个功能,包括用户推荐、歌曲推荐,这些都需要推荐的算法支持,比如协同过滤。这也和机器学习的算法有着很强的关联。
再比如我在实习期间,需要随机筛选出在百度被搜索的词,但是每天在百度搜索的词接近1亿,如何从这1亿从快速、有效的随机筛选出词呢?就是使用蓄水池算法。
此外,这里还有一个不太好的地方就是:applicationlevel,中文译为应用层。书中未能准确定义,经过我的搜索,认为是以下内容(摘自wiki):
A typical vision of a computer architecture as a series of abstraction layers: hardware, firmware, assembler, kernel, operating system and applications
1.2-2
答:
两个函数必定有一个交点,求交点即可。
1.2-3
答:
同上
第一章思考题
1-1
答:
想不到中文翻译错了,英文本microseconds是微秒,一百万分之一秒,但是中文翻译成了毫秒,下面的计算我也按照毫秒来计算的。
这个题开始我也没太懂,不知道这个题在问什么。参考了这个链接的问答之后,我大概明白一些。计算方式都是类似的,比如,第一列第一行,f(n)=lg(n),时间为1秒,即1000毫秒。也就是说该算法在时间复杂度为f(n)的情况下需要耗时1000毫秒,求n。即lg(n)=1000,求n。
后来想了一下,这个问题最好写一段代码来计算就比较方便了。计算结果如下表:
其中需要说明的是:
- lgn、nlgn、n! 三个不能计算的原因分别是:数值太大,python无法计算、无法求解方程式、无法求解方程式。
- 但还是可以从下表观察出算法的不同时间复杂度,对输入规模的极大的影响。
1秒钟1分钟1小时1天1月1年1世纪lgn-------√n100000036000000001.3e+137.5e+156.7e+189.9e+209.9e+24n1000600003600000864000002592000000315360000003155760000000nlgn-------n^231.6244.91897.39295.250911.7177583.81776445.8n^310.039.1153.2442.11373.73159.414667.92^n9.915.921.826.431.234.941.5n!-------
代码如下:
#!/usr/bin/env python# -*- coding: utf8 -*-"""brief:算法导论的第一章的唯一的一道思考题的求解代码。author:zhangyang27@baidu.com"""import sys,random,osimport mathdef main(): second = 1000 minutes = 60 * second hour = 60 * minutes day = 24 * hour month = 30 * day #暂且怎么算吧 year = 365 * day century = 75 * year + 25 * 366 * day #每个世纪有25个闰年,比平常多一天 date = {second,minutes,hour,day,month,year,centuryr} for total_microseconds in date: print "-----------------------" print total_microseconds #print math.pow(2,total_microseconds) print math.pow(total_microseconds,2) print total_microseconds #nlgn 怎么算? print math.sqrt(total_microseconds) print total_microseconds**(1.0/3) print math.log(total_microseconds,2) #n! 怎么算?if __name__ == '__main__' : main()
0 0
- 算法导论(三版):第一章第二节课后题 以及 第一章思考题
- 《算法导论》第一章-思考题(参考答案)
- 算法竞赛入门经典第二版(刘汝佳)第一章思考题
- 《算法导论》课后题--0--第一章
- 算法导论(三版):第二章思考题
- 算法导论(三版):第二章第一节课后题
- 算法竞赛入门经典(第二版)第一章课后习题
- 算法导论(三版):第二章第二节课后题
- 算法导论课后习题解析 第一章
- 《算法导论》系列课后思考题之-第二章《算法入门》
- 算法导论第三版 课后题,思考题,以及本人的一点思考,将会在此博客持续更新
- 算法导论(三版):第二章第三节课后题
- 算法导论第一章,第二章笔记
- 【读书笔记】算法导论(第三版)第一章
- 算法导论(第三版) 第二章思考题
- 《算法导论》第二章-思考题(参考答案)
- 算法导论第三版 第一章
- 算法导论笔记(第一章)
- java连接各种数据库配置
- 例题10-15 杆子的排列 UVa1638
- 默染江山——oc内存管理
- codeforces 518B Tanya and Postcard
- 35 岁前程序员要规划好的四件事
- 算法导论(三版):第一章第二节课后题 以及 第一章思考题
- Spring MVC @PathVariable with dot (.) is getting truncated.
- 云存储的核心是大数据模式---服务化--初创公司仅能提供更多技术解决方案非基础运营
- vim学习笔记
- Freemarker静态化时渲染自定义标签
- 《第一行代码-Android》学习笔记(二十四)
- property和constructor-arg的使用
- SVN取消对代码的修改
- 【融云常见问题】融云SDK各种事件监听