算法导论(原书第三版)答案与学习笔记(一)

第一章 算法在计算中的作用

本章主要介绍了算法的概念、算法的用途、算法的意义等,并做了后续章节的部分概括。
算法实际上就是对于外界输入进行处理并给出符合预期输出的计算过程,书上的概念是:“对于任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出。”
可以把算法理解为转换输入与输出的一个过程。
算法可以解决很多生活中的实际问题,包括DNA测序、快速搜索等,应用范围十分广泛。
算法解决问题有两个共同特征:存在许多候选解与存在实际运用。
数据结构是一种存储和组织数据的方式,各有优劣。
另外算法设计还需要考虑程序并行性。
习题答案:
1.1-1:给出现实生活中需要排序的一个例子或者现实生活中需要计算凸壳的一个例子。
答:同类型商品按价格进行排序摆货销售;地产开发中根据几个点确定开发面积。
1.1-2:除速度外,在真实环境中还可能使用哪些其他有关效率的量度?
答:空间的占用率、稳固程度等(只能短暂快速使用同样效率低下)。
1.1-3:选择一种你以前已知的数据结构,并讨论其优势与局限。
答:链表。链表很容易删除与插入,但是却不方便查找,需要O(N)的复杂度;数组方便查找,但不方便删除与插入。
1.1-4:前面给出的最短路径与旅行商问题有哪些相似之处?又有哪些不同?
答:相似之处在于都是在给定的条件下求最短路径,但不同之处在于TSP!=The Shortest Path.因为TSP是要求经过每个点的最小环路,而最短路径只是求从起点到终点的最短距离。
1.1-5:提供一个现实生活的问题,其中只有最佳解才行。然后提供一个问题,其中近似最佳的一个解也足够好。
答:购买相同的商品,到距离自身最近的店购买是最优解。
这里参考“背包问题”,可以使用动态规划与组合优化思想求得近似最优解。

使用算法的根本原因:空间、时间有限且宝贵。
这里书中采用了归并排序与插入排序作了比较,插入排序:O(N^2),归并排序:O(NlogN)。数据量越大,差距也就越大。
值得注意的是:算法是现代大部分计算机使用技术的核心!
习题答案:
1.2-1:给出在应用层需要算法内容的应用的一个例子,并讨论涉及的算法的功能。
答:对教师工资/学生成绩进行排序。
(更快、更准确地排序。)
1.2-2:假设我们正比较插入排序与归并排序在相同机器上的实现。对规模为n的输入,插入排序运行8N^2步,而归并排序运行64NlgN步。问对于哪些N值,插入排序优于归并排序?
答:我们知道N^2 的增长趋势一定高于NlgN,所以一定存在某个N值,使得当n>N时,8N^2>64NlgN。即求 N/8lgN > 1的临界值。
易知N=44时满足上式。
所以N=1…43时插入排序都优于归并排序。
注:lgN是以2为底。
1.2-3:n的最小值为何值时,运行时间为100n^2的一个算法在相同机器上快于运行时间为2 ^n的另一个算法?
答:即求前者小于后者的对应最小N值。
计算可得 N 最小值为:15。

思考题:

体会不同f(n)需要的时间规模即可,计算从略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值