编程语言
首页 > 编程语言> > 算法导论(第三版)第一章习题答案

算法导论(第三版)第一章习题答案

作者:互联网

算法导论(第三版)第一章习题答案

这个专栏主要是将算法学习过程中使用的《算法导论》一书的练习题的答案进行汇总,有一部分习题答案可能是我自己做的或者是从网上搜集的,难免会存在错误的地方,希望能得到大家的指正。因为这是初次接触算法,所以后续的章节更新会比较慢,并且可能会出现很多我做不出来的题目,但是会我尽量坚持下去,每天看两页书。码字不易,如果对你有用希望能点个赞,如果有问题欢迎在评论区讨论。

1.1 算法

1-1

生活中需要排序的例子有很多,比如名次,成绩,身高统计等等。

凸壳问题:

令S为平面上的一个点集,封闭S中的所有顶点的最小凸多边形也成为S的凸壳。

在地上放置一些不可移动的木桩,用一根绳子把他们全部围起来,并且绳子的轮廓为凸边形。

1-2

存储空间占用情况,答案精确度等。

如果单指效率还有功率,转化率等等度量单位。

1-3

链表:优势在于可以较快的实现结点的插入删除等操作,但是在链表的尾部插入,或者随机读取链表中的元素时会比较麻烦。

1-4

相似之处:都需要寻找到一个最短路线

不同之处:最短路径(交通)问题需要找的时两个点之间的最短距离,并不要求经过其他点。旅行商问题要求在经过所有点的同时,走最短路径。

1-5

暂时想不到有什么好的例子。以后做题如果发现了如果还记得会回来补充。其实问题1-4在一定程度上可以作为本题的答案,比如旅行商问题我们往往得出近似的最优解即可。

1.2 作为一种技术的算法

2-1

一个播放器想在接下来像按照顺序给使用者依次播放他喜欢的音乐。

利用排序算法对使用者的听歌次序进行排序,并且得到排序后的序列并依次播放这些音乐。

2-2

要求插入排序优于归并排序,相当于要求: 8 n 2 < 64 n l o g 2 n 8n^2<64nlog_2n 8n2<64nlog2​n

整理有 n < 8 l o g 2 n n<8log_2n n<8log2​n

因此只要满足上述公式的n的数字,都时插入排序优于归并排序的解,其中 n < 43 n<43 n<43

2-3

根据题目要求,我们可以得到如下公式: 100 n 2 < 2 n 100n^2<2^n 100n2<2n

因为上述题目需要的时最小解,通过枚举我们可以得出 n = 15 n=15 n=15。

思考题

1秒钟1分钟1小时1天1月1年1世纪
2 1000 2^{1000} 21000 2 6 × 1 0 4 2^{6\times10^4} 26×104 ∝ \propto ∝ ∝ \propto ∝ ∝ \propto ∝ ∝ \propto ∝ ∝ \propto ∝
1 0 6 10^6 106 3.6 × 1 0 9 3.6\times10^9 3.6×109 1.296 × 1 0 13 1.296\times10^{13} 1.296×1013 ∝ \propto ∝ ∝ \propto ∝ ∝ \propto ∝ ∝ \propto ∝
100060000 3.6 × 1 0 5 3.6\times10^5 3.6×105 8.64 × 1 0 6 8.64\times10^6 8.64×106 2.592 × 1 0 7 2.592\times10^7 2.592×107 3.1104 × 1 0 8 3.1104\times10^8 3.1104×108 3.1104 × 1 0 10 3.1104\times10^{10} 3.1104×1010
1414896-----
3124418979295509111763631763632
10391534421373314414597
10162227323542
78911121315

上述中由于对数不太好算,故改行基本胜率,这里只需要了解不同的时间复杂度在处理效率随时间的变化情况,同时月份是按照30天来进行计算。

接下来以其中一个为例:

1秒钟为1000 ms,如果想要计算一分钟的能处理的问题的规模,那么有

n ! < 1000 n!<1000 n!<1000,可以得出 n < 8 n<8 n<8,因此最大能够处理的规模为7。其他的计算规模依次类推,可以在网上找阶乘计算器或者对数计算器,方便得出结果。

标签:第三版,导论,3.6,算法,propto,3.1104,习题,排序,times10
来源: https://blog.csdn.net/qq_43191451/article/details/117513649