算法导论第三版 第一章答案

【时间】2018.09.18

【题目】算法导论第三版第一章答案

【参考链接】https://ita.skanev.com/

一、练习1.1

练习1.1.1

给出一个需要排序的现实示例或需要计算凸包的真实示例。

排序的真实例子非常简单 - 例如,按字母顺序呈现列表的每个网页都需要对条目进行排序 - 目录,索引或其他任何内容。

我不知道为什么我们需要计算凸包,但维基百科说有很多应用程序。

【补充】:

a)排序:将一次考试中 500名考生的成绩按分数从高到低迕行排名。

b)确定多矩阵相乘的最佳顺序:某实验模型,需要计算 返 17个矩阵的积,根据矩阵乘法的结合律确定计算顺序,以达到计算乘法次数最少的目的。矩阵乘法的结合律:

c)找出凸壳:木板上钉了 21个钉子,以其中一些钉子为顶点组成的凸多边形可以包含所有 21个钉子,找出使凸多边形达到最小的所有钉子。

练习1.1.2

除了速度之外,在现实环境中可以使用哪些其他效率指标?

内存使用和资源利用(网络,数据库)是很好的答案。

练习1.1.3

选择您之前看到的数据结构,并讨论其优势和局限性。

我们来看看单链表。

优势:

  • 它不需要内存中的顺序空间

  • 我们可以在任何地方插入新元素

限制:

  • 随机访问是O(n)

  • 它需要额外的内存用于链接

练习1.1.4

上面给出的最短路径和旅行商问题如何相似?他们有什么不同?

它们是相似的,因为每个人都必须走一个图并在其中找到一条路径。

不同之处在于对解决方案的约束。最短路径仅需要两点之间的路径,而旅行推销员需要在返回第一点的更多点之间的路径。

练习1.1.5

想出一个现实世界的问题,只有最好的解决方案才能解决。然后提出一个“近似”最好的解决方案就足够了。

对目录进行排序是一个问题,只有最佳解决方案才能实现。“近似”排序的目录不会那么有用。

找到一个城市中两点之间的最短路径是一个问题,在那里可以做得足够好。它可能不是最快的方式,但你仍然会到达那里。

二、练习1.2

练习1.2.1

举例说明在应用程序级别需要算法内容的应用程序,并讨论所涉及的算法的功能。

在两个地方之间找到路线时的Google地图。

算法是此用例的重要组成部分,因为路由是用户最关心的。

练习1.2.2

假设我们在同一机器上比较插入排序和合并排序的实现。对于大小为n的输入,插入排序以8n2步运行,而合并排序运行在64 nlgn步骤中。对于哪个值,插入排序优于合并排序?

在n>43处,合并排序优于插入排序。

练习1.2.3

在同一台机器上,运行时间为100 n^2的算法比运行时间为2^n的算法跑得更快,那么n的最小值是多少?

在n>14时,第一个算法运行得更快。

三、思考题

对于下表中的每个函数f(N)和时间t,确定可以在时间t中解决的问题的最大大小n,假设求解该问题的算法需要f(N)微秒。

【PS】指数部分采用的是科学计数法

猜你喜欢

转载自blog.csdn.net/C_chuxin/article/details/82752670