开篇语
今天开始看《算法导论》,在简书写下我的学习笔记。以后翻出来参考,真是美滋滋~~
正文
算法的定义:
算法就是任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或者值的集合作为输出。算法就是把输入转换成输出的一个序列。比如,我们要对一组数字排序,给定一组无序的数字,通过计算,得到一组完全按照某一顺序排列的数字,这个计算过程就是排序算法。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法能解决的具体问题(举例):
1··· 给定一张交通图,上面标记了每对相邻的十字路口之间距离,我们希望确定从一个十字路口到另一个十字路口的最短道路。
2···给定两个有序的符号序列,求出两个序列的最长公共子序列。比如我们要对人类基因库进行筛选,若X序列里有n个符号,Y中有m个符号,那么X Y分别就有2^n 和 2^m个可能的子序列, 要做子序列的比对,除非m,n很小,否则绝对是个让人绝望的工作量。
3···给定一个依据部件库的机械设计,每个部件可能包含其他部件的实例,那么我们需要依次列出这些部件,让每个部件出现在使用它的部件之前,若这个设计含有n个部件,那么就会有n!种可能的排列顺序,阶乘是比指数增长还要迅速的函数,如果要一次次的进行可能的排序,那么显然我们是做不大高部件数的机械设计的。
4···给定平面n个点,希望找到这些点的凸壳,也就是能够包住所有点的的最小的凸多边形。可以看作是钉子被橡皮筋包住,我们要找的就是最外层的钉子,如果是边数比较小的多边形,肉眼即可分辨,但是如果边数开始上升到百,千的层次,那么工作量令人绝望,所以这其中又需要很多优秀的算法。
上述的问题看似用处不是很大。但是如果衍生出去,可以牵扯到生活的方方面面,比如说快递公司定制物流路线,如果设置路线合理得当,那么一年所产生的支出会减少很多,也就变相的增加了收入。
结束语
不得不说这个东西还真是厉害,也不愧是我学长说一个寒假也就看完一两章的神书。以前学过的数学方面的知识都不够对付一些简单的初级算法(初级并不代表low,越是基础用的地方越多),翻到后面基本就是晕乎乎的。啊西吧!!~~我要踏上征途了。不过好像已经脚踏好多只船了,在家发小什么的找我玩,表姐生孩子要去吃酒,奶奶生日要负责买东西,接送客人,不能安心致学好烦恼啊 。。
个人宣言
知识传递力量,技术无国界,文化改变生活!