标签:算法
小o表示实际的时间复杂度,大O表示时间复杂度。将真实的时间复杂度中的每个式子的常数项设成1,并取多项式中单项最大的那个项,就成了大O
定义:一种直接或者间接调用自身的算法
两要素
分治算法,就是分而治之,将复杂的问题分解成简单的问题进行解决
动态规划和递归类似,但是用备忘录表示了中间结果,以免重复计算
要素
回溯法采用试错的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。回溯法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况:
在最坏的情况下,回溯法会导致一次复杂度为指数时间的计算。
典型应用:八皇后问题
把全部可行的解空间不断分割为越来越小的子集(称为分支),并为每个子集内的解的值计算一个下界或上界(称为定界)。在每次分支后,对凡是界限超出已知可行解值那些子集不再做进一步分支。这样,解的许多子集(即搜索树上的许多结点)就可以不予考虑了,从而缩小了搜索范围。这一过程一直进行到找出可行解为止,该可行解的值不大于任何子集的界限。因此这种算法一般可以求得最优解。
关键:剪枝,发现当前分支不可能是最优解的时候,则终止当前分支
两种分支界限法
怎样选择搜索树上的节点作为下次分枝的节点呢?有两种方法:
标签:算法
原文地址:http://blog.csdn.net/jiewuyou/article/details/44003505