《算法设计与分析》概念题总结

第一章 算法概述

算法

  概念:算法是指解决问题的一种方法或者一个过程。

  性质:

    1. 输入:有零个或多个输入

    2. 输出:有至少一个输出

    3. 确定性:组成算法的每条指令是清晰的,无歧义的

    4. 有限性:算法中的每条指令的执行次数是有限的,执行每条指令的时间也是有限的。

程序

  程序是算法用来某种程序设计语言的具体实现。  

算法与程序的不同

  算法是用来给人读的,机器不能直接运行。

  程序可以不满足算法的h第四条性质——有限性。

算法的复杂性

  算法复杂性的高低体现在运行该算法所需要的计算机资源的多少上,所需资源越多,该算法的复杂性越高;反之越低。

第二章 递归与分治策略

递归算法

  直接或间接调用自身的算法称为递归算法

递归函数

  用函数自身给出定义的函数

分治法  

  将一个规模为 n 的问题分解为 k 个规模较小的子问题,这些子问题互相独立且与原问题相同,然后递归求解子问题,最后将子问题的解合并得到原问题的解。

分治法所能解决的问题的特征

  1. 问题规模缩小到一定程度时可以很容易解决

  2. 该问题可分解为若干个规模较小的子问题,即具有“最优子结构”性质

  3. 利用子问题的解可合并成原问题的解

  4. 子问题相互独立,即子问题之间不包含公共的子问题

第三章 动态规划

备忘录法

  备忘录法是动态规划算法的变形。备忘录法的递归方式是自顶向下的,求解过程中记录每个子问题的解,这样的好处是在求解共同问题避免了重复求解。

动态规划

  将原问题分解成若干个子问题,先求解子问题,并记录解,然后从这些子问题的解得到原问题的解。  

动态规划与分治法的相同点与不同点

  相同点:

  不同点

第四章 贪心算法

第五章 回溯法

第六章 分支限界法

猜你喜欢

转载自www.cnblogs.com/Bw98blogs/p/9253261.html