算法导论学习笔记(一)
笔记
1.算法的定义:就是任何良定义的计算过程,算法就是把输入换成输出计算步骤的一个序列,相当于一个包装好的计算工具,使用什么样的算法就说明你期待了什么样的结果。
2.判定算法的效率就是运行的速度
3.算法相当于一种技术,系统的性能不但依赖于选择快速的硬件,还依赖于选择有效的算法
课后习题
1.1-1 给出现实生活中需要排序的一个例子或者现实生活中需要计算凸壳的一个例子。
1.1-2 除速度外,在真实环境中还可能使用哪些其他有关效率的量度?
1.1-3 选择一种你以前已知的数据结构,并讨论其优势和局限。
1.1-4 前面给出的最短路径与旅行商问题有哪些相似之处?又有哪些不同?
1.1-5 提供一个现实生活的问题,其中只有最佳解才行。然后提供一个问题,其中近似最佳的一个解也足够好。
答案
1.1-1 期中考试的数学成绩按照从低到高的顺序排名,找出凸壳:木板上钉了 21个钉子,以其中一些钉子为顶点组成的凸多边形可以包含所有 21个钉子,找出使凸多边形达到最小的所有钉子。
1.1-2 CPU的占用率,问题的正确率和解决程度
1.1-3 链表:链表使用指针进行元素间的连接,对于查找中间元素,删除元素等操作,相对简单,但是由于是用指针进行连接,地址不连续所以很容易产生地址碎片,造成空间上的占用。
1.1-4 旅行商问题(贪心算法):https://www.cnblogs.com/larryking/p/5734459.html
选取的是局部最优解,所有的路线全部遍历,选区最短的总长度
最短路径:是多条线路中选取期中最短的路径
1.1-5 略
课后习题
1.2-1 给出在应用层需要算法的内容的应用的一个例子,并讨论涉及的算法的功能。
1.2-2 假设我们正在比较插入排序与归并排序在相同机器上的实现,对规格为n的输入,插入排序运行8n2步,而归并跑徐运行64lgn步。问对哪些n值,插入排序优于归并排序?
1.2-3 n的最小值为何值时,运行时间为100n2的一个算法在相同的机器上快于运行时间为2n的另一个算法。
答案
1.2-1 美团外卖(应用层)对于谁接单,信誉度,路程的计算。
1.2-2 8n2<64lgn
1.2-3 f(n) = 100n2,g(n) = 2n,n=14, f=19600, g=16384 f > g,n =15, f=22500, g=32768 f < g,所以n最小为15
章节习题