1、算法概要
算法是用于计算、数据处理和自动推理使用的。算法主要是做精确计算和表示一个有限长列的有效方法。算法一般包含清晰定义的指令用于计算函数。基本上也属于一种思考最简洁的方式。
2、算法特征
算法主要包含五个特征
2.1、有穷性;
是指算法必须能在执行有限个步骤后终止;
2.2、确切性;
算法的每一个步骤必须有确切的定义;
2.3、输入项;
一个算法输入有0或多个输入,以刻画预算对象的初始情况,所谓0就是初始化条件;
2.4、输出项;
反馈对数据加工后的结果。没有输出的算法无意义。
2.5、可行性;
算法中执行的任何计算都可以分步骤进行,每个步骤并在有限时间内完成。
3、算法常用的设计模式
主要有十个设计模式
3.1、完全遍历法
在验证一个问题集合时,且以验证正确性和最优性的时候,就会采用完全遍历法。但在便利的过程中就会消耗大量的内存。
3.2、不完全遍历法
当便利时占用的内存空间特别庞大时,可以使用不完全遍历法来实现。例如各种规则算法和搜索算法即是。
3.3、分治法
把一个问题分区成互相独立的部分,分别求解。分治法的好处在于可以并行计算。
分治法所能解决的问题一般具有以下几个特征: (1) 该问题的规模缩小到一定的程度就可以容易地解决;
(2) 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;
(3) 利用该问题分解出的子问题的解可以合并为该问题的解;
(4) 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。
3.4、动态规划法
当问题整体的最优解是由局部最优解组成的时候,会经常采用这种规划方法。用于求解包含重叠子问题的最优化问题的方法。
3.5、贪婪算法(也叫贪心算法)
常见的近似求解思路。当问题的整体最优解不是(或无法证明是)由局部最优解组成,且对解的最优性没有要求的时候,可以采用的一种方法。
3.6、线性规则法
问题是目标函数和约束条件都是线性的最优化
3.7、简并法
把一个问题通过逻辑或数学推理,简化成与之等价或者近似的、相对简单的模型,进而求解的方法。
3.8、穷举法
穷举法,或称为暴力破解法,其基本思路是:对于要解决的问题,列举出它的所有可能的情况,逐个判断有哪些是符合问题所要求的条件,从而得到问题的解。它也常用于对于密码的破译。
3.9、分枝界限法
分枝界限法是一个用途十分广泛的算法,运用这种算法的技巧性很强,不同类型的问题解法也各不相同。分支定界法的基本思想是对有约束条件的最优化问题的所有可行解(数目有限)空间进行搜索
3.10、回溯法
运用这种算法的技巧性很强,不同类型的问题解法也各不相同。分支定界法的基本思想是对有约束条件的最优化问题的所有可行解(数目有限)空间进行搜索。
..... ....
【本次课程部分截图】
递归算法和备忘录算法实现裴波那契数列
动态规划算法实现裴波那契数列
空间换时间的经典案例
【网盘下载网盘链接回帖可见】
|