原文链接:https://www.yuque.com/cppdev/algo/loeps2

【回溯法】

  1. 有一类问题,我们不知道它明确的计算法则。而是先进行试探,试探到最终状况,发现不满足问题的要求,则回溯到上一个状态继续试探。这种不断试探和回溯的思想,称为回溯法(Backtrcking)
  2. 此类问题包括:求最优解、一组解、全部解。例如八皇后问题

【回溯的算法思想】一直往下走,然后再一步步往回走
面对一个问题,每一步有多种做法。先做其中一个做法,然后再此基础上一直做下去,把这个做法的所有可能全部做完,再回来,做第二种做法。

【例子】

  1. 深度优先搜索
  2. 求一个序列的幂集
  3. 八皇后问题
  4. 涂色问题

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

【回溯与递归的区别】回溯这个算法思想可以由递归这个算法结构来实现

递归 回溯
是一种算法结构 是一种算法思想,可以用递归来实现
递归即是自己调用自己或间接调用自己 回溯就是一种试探,类似于穷举,但是回溯比穷举少很多计算量,俗称剪枝
例如计算阶乘问题: n ! = ( n − 1 ) ! ∗ n n!=(n-1)!*n n!=(n−1)!∗n 例如求和问题:给定7个数字(1、2、3、4、5、6、7),在7个数字中选几个数字,令它们的和等于8
我们可以从小到大搜索,选择1+2+3+4=10>8,已经超过8,之后567就没必要继续了。此时就是一种搜索过程优化

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

[回溯法] 回溯法介绍-回溯与递归的区别相关推荐

  1. c语言 用回溯算法解决01背包问题,回溯法解决01背包问题

    <回溯法解决01背包问题>由会员分享,可在线阅读,更多相关<回溯法解决01背包问题(21页珍藏版)>请在人人文库网上搜索. 1.回溯法解决01背包问题,回溯法解决01背包问题, ...

  2. python回溯算法_什么是回溯法,Python解法交流?

    只有去多做题,才能慢慢掌握.力扣​leetcode-cn.com LeetCode 上的解释 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就 ...

  3. 算法设计与分析-TSP六种方法-贪心算法(最近邻点、最短链接)、蛮力法、动态规划法、回溯法、分支限界法、模拟退火

    旅行商问题,即TSP问题(Travelling Salesman Problem)又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径, ...

  4. 回溯和递归的区别(简述)

    回溯和递归的区别(简述) 前言 递归和回溯 最后 前言 最近在LeetCode上刷题刷到了递归实现的回溯算法,产生疑惑:这两者有什么区别呢?在网络上阅读了一些相关的文章,总结了一些: 递归和回溯 递归 ...

  5. 链表反转的四种方法(栈、头插法、三指针法、递归法)

    单链表反转或转置的四种方法 链表的反转实质上是反转链表上的内容: 若链表存储的数据是:1->2->3->4->5; 那么反转后则是:5->4->3->2-&g ...

  6. 数据结构与算法 | 快速排序:Hoare法, 挖坑法,双指针法,非递归, 优化

    前两章讲解了排序中的选择排序和插入排序,这次就来讲一讲交换排序中的快速排序. 快速排序时间复杂度:平均 O(nlogn) 最坏 O(n2) 快速排序,顾名思义,它的排序的效率是非常高的,在数据十分杂乱 ...

  7. php pcre回溯攻击,PHP利用PCRE回溯次数限制绕过某些安全限制 | 码农网

    *本文原创作者: phith0n ,本文属FreeBuf原创奖励计划,未经许可禁止转载 这次 Code-Breaking Puzzles 中我出了一道看似很简单的题目pcrewaf,将其代码简化如下: ...

  8. 荣耀战魂冥界回归服务器维护,荣耀战魂万圣节活动冥界的回归玩法及奖励介绍...

    荣耀战魂万圣节活动"冥界的回归"除了将现有玩法加入了万圣节节日气氛之外,还新增了"无限战场"的每周任务,并且更新了活动奖励,下面小编带来万圣节活动冥界的回归玩法 ...

  9. 【JY】推开土木工程振型求解之兰索斯法(Lanczos法)的大门

    一.写在文前 [前言]子空间迭代法可同时求解几个极端特征值和相应的特征向量,但它有收敛较慢,运算量较大,积累误差的缺点:随后,人们对其作了进一步的研究,出现了预处理子空间迭代法,这种方法的运算量较之子 ...

最新文章

  1. [hdu 1561] The more, The Better
  2. 网站出现大量死链时该如何进行处理?
  3. python:从入门到实践-----外星人入侵的图片问题
  4. 2016/11/10 kettle概述
  5. python第三方库文件传输_Python第三方库在Excel文件读写中的应用
  6. python no module named pandas_【原创】大叔经验分享(11)python引入模块报错ImportError: No module named pandas numpy...
  7. Linux下开源邮件系统Postfix+Extmail+Extman环境部署
  8. MySQL数据库基础理论
  9. ios 基础知识点总结
  10. idea安装插件时一直转解决方法
  11. C# CAD批量转换为图片
  12. 你对软件测试了解多少?这篇文章会给你不一样的启示!
  13. EBS系统打补丁(Patch)
  14. keil5里错误怎么解决Undefined symbol STM32_Control (referred from main.o).
  15. C++对象的底层原理都在这儿了,还敢说学不会?
  16. CButton类的继承+重写--本类来自孙鑫老师C++课堂
  17. 手机联系人信息获取(头像,电话,姓名)
  18. 面试:Art虚拟机和Davlik虚拟机简要对比
  19. 物联网大数据平台的主要功能和特点
  20. 《蓝桥杯Java组通关秘笈》

热门文章

  1. nginx可以用来做什么
  2. 【面试】Js面试题(一)
  3. LCQuAD2.0-问题数据集生成-论文阅读笔记
  4. 【java】-XX:-OmitStackTraceInFastThrow只有空指针,没有堆栈信息
  5. 完全二叉树 满二叉树
  6. 分布式系统中的Tracer
  7. WPF教程(五) XAML是什么?
  8. 2.vulnhub-Xerxes靶机复现
  9. linux运行jar的几种方式
  10. php函数库快速记忆法_史上最全的php函数大全