1、递归法
所谓递归,就是指如果需要求解当前状态就需要求解其依赖的迁移状态。
一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
采用递归描述的算法通常有这样的特征:
1)为求解规模为N的问题,设法将它分解成规模较小的问题;
2)然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模较大问题的解。
3)这样的分解方法具有收敛性。即存在一个递归返回状态。
例1.1 求最大公约数--欧几里德算法
2、穷举法
所谓穷举法就是遍历所有可能的状态。
例如:密码的暴力破解法就是采用这种方法。
3、化归法
所谓化归法是指,不直接解决原问题,而是把所要解决的问题,经过某种变化,使之归结为另一个(问题*),再通过(问题*)的求解,把解得结果作用于原有问题,从而使原有问题得解。
化归的原则是以已知的、简单的、具体的、特殊的、基本的知识为基础,将未知的化为已知的,复杂的化为简单的,抽象的化为具体的,一般的化为特殊的,非基本的化为基本的,从而得出正确的解答.
此在数学上的应用非常常见。同时,一个逻辑问题的解决的一些列子步骤不正是化归法的体现吗?
4、迭代法
迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。
最常见的迭代法是牛顿法。其他还包括最速下降法、共轭迭代法、变尺度迭代法、最小二乘法、线性规划、非线性规划、单纯型法、惩罚函数法、斜率投影法、遗传算法、模拟退火等等。
利用迭代算法解决问题,需要做好以下三个方面的工作: