4,回溯法
回溯法是一种优化的穷举法。所谓穷举法就是穷举问题的所有可能性,直到发现解决问题的最佳解为止。回溯法会有效地降低穷举法带来的高损耗。
举个栗子:
考虑对迷宫进行遍历
每当遇到十字路口时便向一个固定的方向前进。假设这个方向是左。对遇到的十字路口持续向左走,当遇到死胡同便回溯到前一个路口并直走(此路口的左边已被证实是走不通的)当直走并遇到路口后继续向左走,当直走并遇到死胡同时回溯到前一个路口(此时这个路口只剩下右边可以走了)。当向右走后仍遇到路口依然向左走,当向右走并遇到死胡同后仍然回溯到前一个路口。此时这个路口已经被证实是走不通的,于是再向前回溯一个路口。
如此循环下去直到找到迷宫的出口
以上是回溯法的基本思想
利用回溯法解决的问题有以下几个特点:
1. 问题可以划分为几个不相关的子问题
2.几个字问题有类似的求解方式
3. 如果子问题还可以划分,便继续对子问题进行划分
回溯法与分治法解决问题有相似之处,但回溯法的本质是深度优先搜索,在应用回溯法时需要建立一个栈保存搜索路径。而分治法实现的是递归。
回溯法的一个缺点是效率较低。
5.概率算法
与确定性算法相比,概率算法不能得到精确的结果。但这并不意味着概率算法得不到正确的结果,而且在某些场合概率算法得到的正确结果的效率要比精确算法高很多。
又举一个栗子:
如果一个国家要选举一位总统,假设这个国家的所有公民都要参与选举过程。那么如何在尽可能短的时间内选出这位总统呢?
这里有两种方式:
一种选举方式为全民投票选举,向所有公民发放选票,最后在集中起来进行统计,这种选举方式可以保证得到精确的选举结果。但这种方式最大的缺点就是周期过长,过程繁琐。
另一种方式是民意测验法,向公民发放民意调查表,调查总统候选人在人民当中的支持率。这种方法的好处是时间周期短,结果符合绝大多数选民的意愿,缺点是不够精确。但在此例子中,决定选出的总统与大多数选民的意愿有决定性,所以可以认为此方法得到的为合理的。在这个前提下,民意测验法可以说是一种又快又“准”的方法了。
概率算法涉及很多概率论与数理统计方面的知识
经典的概率算法有蒙特卡洛(Monte Carlo)算法和拉斯维加斯(Las Vegas)算法。