Skip to content

Latest commit

 

History

History
59 lines (47 loc) · 4.16 KB

File metadata and controls

59 lines (47 loc) · 4.16 KB

1.1 算法

算法就是定义良好的计算过程,它取一个或一组值作为输入,并产生出一个或一组值作为输出;简单来讲,算法就是一系列步骤,用来将输入数据转换成输出的结果 矩阵乘法满足结合律 矩阵连乘 使用动态规划满足减小运算复杂度

取模方程求解

给定平面上n个点,找出这些点的凸壳,即包含这些点的最小凸变形

在Internet中,一个路由节点也需要在网络中寻找最短路径

可以将CLRS当做菜谱来用,本书作者序

至今没有人能找出NP完全问题的有效解法,但是也没有人能证明NP完全问题的有效问题不存在

著名的旅行商人问题就是一个NP完全问题

一些计算问题:排序问题、矩阵相乘顺序问题、;算法运行速度、运行内存、时间复杂度、空间复杂度

练习题1. 1-1:学生考试,对所有学生考试成绩做出排序

练习题1. 1-2:时间复杂度、空间复杂度、正确性、可读性、健壮性

练习题1. 1-2:时间复杂度、空间复杂度、正确性、可读性、健壮性

  • 时间复杂度: 算法的时间复杂度是指执行算法所需要的时间。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。
  • 空间复杂度 算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。
  • 正确性 算法的正确性是评价一个算法优劣的最重要的标准。
  • 可读性 算法的可读性是指一个算法可供人们阅读的容易程度。
  • 健壮性 健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也成为
  • 容错性。 使用下界函数Omega或者上界函数Theta则分别表示算法运行的最快和最慢时间。 练习题1. 1-3:数组与链表的优缺点;数组:优点:使用方便 ,查询效率 比链表高,内存为一连续的区域 缺点:大小固定,不适合动态存储,不方便动态添加链表:优点:可动态添加删除,大小可变;缺点:只能通过顺次指针访问,查询效率低 练习题1. 1-4:最短路径问题:SPFA算法、Dijkstra算法;旅行商人问题(组合优化问题):最近邻点法,插入法,贪心法;相似之处都是求最短距离,不同之处是最短路径问题不经过所有的节点,旅行商人问题要经过所有的节点 一些启发式算法:遗传算法、模拟退火法、蚁群算法、禁忌搜索算法、贪婪算法和神经网络等 练习题1. 1-5:一个正数求根号,牛顿迭代法或者泰勒展开法 1.2 作为一种技术的算法 计算时间是一种有限的资源,存储空间也是一种有限的资源,有限的资源需要被有效地使用,那么时间和空间上有效的算法就有助于做到这一点 效率:插入排序算法的排序时间大约等于c * n ** 2,合并排序算法的排序时间大约等于n * math.log2(n) 系统的总体性能不仅依赖于选择快速的硬件,还依赖于选择有效的算法 是否拥有扎实的算法知识和技术基础,是区分真正熟练的程序员与新手的一项重要特征 练习1.2-1:硬件的设计就要用到算法,任何GUI的设计也要依赖于算法,网络路由对算法也有很大的依赖,编译器,解释器和汇编器这些软件都要用到大量算法。 算法是当代计算机中用到的大部分技术的核心。拿网络路由算法举例:算法的目的是找到一条从源路由器到目的路由器的“好”路径(即具有最低费用最短时间的路径) 基本的路由算法:LS算法或者Dijkstra算法,链路向量选路算法,距离向量算法 练习1.2-2:当n的范围在2与44之间时,插入排序的性能要优于合并排序 练习1.2-3:n的最小取值: 15 思考题1-1:n!: 11 思考题1-1:2n: 20 思考题1-1:n3: 100 思考题1-1:n**2: 1000 思考题1-1:n*lg(n):太大了循环不过来 思考题1-1:lg(n):太大了循环不过来 思考题1-1:sqrt(n):太大了循环不过来 思考题1-1:n:1e6