[回溯法] 0 回溯法介绍-回溯与递归的区别

版权声明:本文为博主原创文章,若有错误之处望大家批评指正!转载需附上原文链接,谢谢! https://blog.csdn.net/summer_dew/article/details/83921581

【回溯法】有相当一类求一组解、或求全部解或求最优解的问题,例如读者熟悉的八皇后问题等,不是根据某种确定的计算法则,而是利用试探的回溯(Backtrcking)的搜索技术求解

【实质】它的求解过程实质上是一个先序遍历一棵“状态树”的过程,只是这棵树不是遍历前预先建立的,而是隐含在遍历过程中,但如果认识到这点,很多问题的递归过程设计也就迎刃而解了。

【回溯与递归的区别】

  1. 递归是一种算法结构,递归会出现在子程序中自己调用自己或间接地自己调用自己。最直接的递归应用就是计算连续数的阶乘,计算规律:n!=(n-1)!*n。
  2. 回溯是一种算法思想,可以用递归实现。通俗点讲回溯就是一种试探,类似于穷举,但回溯有“剪枝”功能,比如求和问题。给定7个数字,1 2 3 4 5 6 7求和等于7的组合,从小到大搜索,选择1+2+3+4 =10>7,已经超过了7,之后的5 6 7就没必要在继续了,这就是一种搜索过程的优化。如果还有不清楚的可以看一下8皇后问题。

博客:https://blog.csdn.net/u014772862/article/details/51789015

猜你喜欢

转载自blog.csdn.net/summer_dew/article/details/83921581