Advertisement

《算法导论》第一章

阅读量:

1.1算法

1.算法:是任何良定义的计算过程,该过程取某个值或者值的集合作为输入并产生某个值或值的集合作为输出。(把输入转化成输入的计算步骤的一个序列)

2.问题实例:有计算该问题解所必需的的输入(满足问题的陈述中强加的各种约束)组成。

3.好的算法的依据:被排序的项数、这些项已被稍微排序的程度、关于项值的可能限制、计算机体系结构、使用的存储设备的种类(主存、硬盘或磁盘)。

4.数据结构:是一种组织和存储数据的方式,旨在便于访问和修改。

练习

1.1-1:给出现实生活中需要排序的一个例子或者现实生活中需要计算凸壳的一个例子。

答:对学生的成绩进行排序;凸壳(不是特别懂)可以应用在:比如在大海中打捞飞机,徐亚根据一些重要的点计算搜索范围,在确定最小搜索面积的话可以用到凸壳。

1.1-2:除速度外,在真实环境中还有可能使用哪些有关效率的量度?

答:空间占用效率。

1.1-3:选择我一种你已知的数据结构,并讨论其优势和局限。

答:栈;栈可以实现数据先进后出。但是对于顺序的数据结构不太方便。

1.1-4:前面给出的最短路径和旅行商问题有哪些相似之处?

答;相似之处都是要求最短路径;最短路径是定点求最短路径,旅行商问题是点和线一起求,在复杂度上比最短路径要求高。

1.1-5:提供一个现实生活的问题,其中只有最佳解才行。然后提供一个问题,其中近似最佳的一个解也足够好。

最佳解的问题:比如用1M的内存空间怎么给10^7的数据排序,而且访问内存次数最少。

近似最佳接的问题;小数的求精度问题,我们只要让它在一定范围内正确就可以。

1.2作为一种技术的算法

1.效率:危秋洁相同问题二设计的不同算法在效率方面有显著的差别。这些差别可能比由于软件和硬件的造成的差别要重要的多。

2.是否具有算法的知识与技术的坚实基础是区分真正熟练的程序员与初学者的一个特征。

练习

1.2-1:给出在应用层需要算法内容的一个例子,并讨论涉及的算法的功能。

答:比如谷歌地图的自动计算路线,设计到最单路径问题。

1.2-2:假设我们正在比较插入排序和归并排序在相同机器上的实现。对规模为n的输入,插入排序运行8n^2步,二归并排序运行运行64n*lgn步。试问对哪些n值,插入排序优于归并排序?

答:2<= n <= 43;

1.2-3:n的最小值为何值时,运行时间为100*n2的一个算法在相同机器上快于运行时间为2n的另一个算法?

答:n的最小值是15.

全部评论 (0)

还没有任何评论哟~