-
纯概述,概念题
-
结合代码片段分析时间复杂度,空间复杂度
-
画搜索树(第五章):
- 深度优先
- 宽度优先
- 活结点法
什么是算法?算法的定义?
- 通常把解决问题的确定方法和有限步骤称为算法,对于计算机科学来说,算法指的是对特定问题求解步骤的一种描述
算法的特性?
输入(有零个或多个输入)、输出(有一个或多个输出)、确定性(每条指令都必须明确的含义,无歧义)、有限性(每条指令的执行次数都是有限的)、可行性(可实现)
算法的描述方式(主要是伪码,高级语言的源代码),每种方式展开说
- 自然语言,如汉语、英语等等,优点:简单通俗易懂,缺点是不够严谨,繁琐且不能够被计算机执行
- 图形,如流程图、N-S图、PAD图,优点:直观形象、简洁明了,缺点:画起来费事,不易修改,且不能执行
- 程序设计语言:各种高级程序语言,如C、C++、Java、python等,优点是:描述的算法能直接被执行,缺点是抽象性差、不易理解、且有严格的格式要求和语法限制
- 伪代码:伪代码是介于自然语言与程序设计语言之间的一种用文字和符号结合的算法描述工具,他忽略了程序设计语言中一些严谨的语法规则与描述细节,因此他更容易被人理解,他比自然语言更贴近程序设计语言,更容易转化为程序设计语言
算法的一般过程
- 充分理解要解决的问题
- 数学模型拟制
- 算法详细设计
- 算法描述
- 算法思路的正确性验证
- 算法分析
- 算法的计算机实现和测试
- 文档资料的编制
算法分析的概念
- 对算法的复杂性进行分析,即对算法在运行过程中所需要的计算机资源的量
算法分析分析的是什么
- 时间复杂度与空间复杂度
时间复杂度、空间复杂度的概念:
-
时间复杂度:对算法运行时间长短的度量,度量方法通常有两种,事后统计法与事前分析估算法
-
空间复杂性:对一个算法在运行过程中所占用存储空间大小的度量
贪心的基本思想
- 从问题的某一个初始解出发,在每一个阶段都根据贪心策略来做出当前最优的决策,逐步逼近给定的目标,尽可能快的求得更好的解,即以逐步的局部最优,达到最终的全局最优
分治法的基本思想
- 把一个复杂的问题分成两个或更多的相同子问题,再把子问题分成更小的子问题,直到最后各个子问题可以简单的直接求解,对各个子问题的解进行合并即得原问题得解
动态规划的基本思想
实质是分治思想和解决冗余,因此它与分治法和贪心法类似,他们都是将待求解问题分解为更小得、更相同得问题,然后对子问题进行求解,最终产生一个整体最优解。适用于动态规划得问题,经分解得到得各个子问题往往不是相互独立得,在求解过程中,将已解决得子问题得解进行保存,在需要时可以轻松找出。
回溯法、分支限界法二点基本思想
- 回溯法:确定了解空间的组织结构后,回溯法从根节点出发,以深度优先搜索方式搜索整个解空间。回溯法以这种工作方式递归地在解空间中搜索,直到找到所要求的解或解空间所有解都被遍历过为止。
- 分支限界法:分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树
-
计算
- 时间复杂度的计算,复杂度化简,要有步骤,
- 代入法
- 递归树
- 注定理
- 猜测法
- 时间复杂度的计算,复杂度化简,要有步骤,
-
实例算法计算(第四章、动态规划)书上的题
- 画表格,表格填满,不用具体步骤
- 表格线可以不画,对齐即可
- 追溯解
- 追溯最优值