首页 > 编程知识 正文

回溯算法详解,不带回溯的递归子程序

时间:2023-05-06 09:36:13 阅读:135361 作者:2349

原文链接: https://www.Yu que.com/CPP dev/algo/loe PS2

【回溯法】

有某种问题,我们不知道那个明确的计算法则。 先试探,了解最终情况,发现不符合问题要求,继续试探。 这种不断探索和试探的思想称为回溯法(Backtrcking )。 这类问题包括求最优解、一组解和所有解。 例如,八皇后问题【追溯的算法思想】一直往下,然后又一步一步地往回走

面对一个问题,每个步骤都有各种各样的做法。 先做其中一种做法,然后在此基础上一直做下去,结束这种做法的所有可能性,然后回来,做第二种做法。

【例】

深度优先搜索求解一个序列幂集八皇后问题的涂色问题【溯法实质】其求解过程实质上是先走一个“状态树”的过程。 但是,此树不是在导线测量之前预先创建的,而是隐藏在导线测量过程中。 如果认识到这一点,很多问题的递归过程设计也可以解决。

【回溯与递归的不同】回溯这个算法思想可以通过递归这个算法结构来实现

递归回溯是指算法结构。 能够通过递归实现递归,就像是自己呼叫自己、间接呼叫自己是一种试探,类似于网罗。 但是,回溯的计算量比网罗少得多,俗称剪枝。 例如,计算阶乘问题。 n!=(n1 )! n!=(n-1 )! *n n!=(n1 )! 例如,求和问题:给定七个数字(1、2、3、4、5、6、7 ),从七个数字中选择一些数字,使它们的总和为8

我们从小到大搜索,选择1 2 3 4=108,已经超过了8,之后567就不需要继续了。 此时,是关于检索过程优化的博客https://blog.csdn.net/u 014772862/article/details/51789015

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。