【读书笔记】算法导论(第三版)第一章

练习:
-
1.1-1 给出现实生活中需要排序的一个例子或者现实生活中需要计算凸壳的一个例子
排序:淘宝销量排序,凸壳:淘宝综合排序
注:凸壳是一个点集中最小点集,就像一碗盛着饭的碗,凸壳就是那个碗 -
1.1-2 除速度外,在真实环境中还可能使用哪些其他有关效率的量度?
店铺转化量 -
1.1-3 选择一种你以前已知的数据结构,并讨论其优势和局限
树形结构,优势:条例比较清晰,一级一级嵌套下去,有层次(可以参考思维导图);局限:如果结点很多的话,会浪费大量资源,例如看淘宝转链接时,流量会浪费很多
注:数据结构分逻辑结构(集合、线性结构、树形结构、图形结构)和物理结构(顺序、链接、索引、散列) -
1.1-4 前面给出的最短路径与旅行商问题有哪些相似之处?又有哪些不同?
相似之处:所求的都是最短路径
不同之处:最短路径只是一辆车的问题,而旅行商是一家公司多辆车的问题;最短路径是一个点到另一个点的问题,旅行商是从一个点出发,经过了多个点最后返回到原点处。
注:最短路径是指一辆快递车从A点到B点的最短路径;旅行商问题是指快递车从出发快递公司算出每辆快递车行驶的最短总距离。 -
1.1-5 提供一个现实生活的问题,其中只有最佳解才行。然后提供一个问题,其中近似最佳的一个解也足够好。
从A乘地铁到B最短时间,地下交通一般站与站之间比较远,所以只有一条路线可以走
从A乘公交车到B最短时间,考虑到地面交通的发达,可以选择一部车到底,然后多走路到B,也可以选择中途转车直接到B -
1.2-1 给出在应用层需要算法内容的应用的一个例子,并讨论涉及的算法的功能
游戏中的自动导航功能,涉及到了最短路线的算法 -
1.2-2 假设我们正比较插入排序与归并排序在相同机器上的实现。对规模为n的输入,插入排序运行8n^2步,而归并排序运行在64nlg_2n步。问对哪些n值,插入排序优于归并排序?
8n^2-64nlg_2n化简得n-8lgn
通过exl进行计算,得出在44时呈正数,意味着此时插入排序的步数大于归并排序

-
1.2-3 n的最小值为何值时,运行时间为100n^2的一个算法在相同机器上快于运行时间为2^n的另一个算法?
求100n^2-2^n
通过exl进行计算,得出在15时开始出现负数,意味着此时第一个算法开始慢于第二个算法

