0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

五大常用算法之回溯法

C语言编程基础 来源:未知 作者:胡薇 2018-05-02 16:50 次阅读

1、概念

回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。

回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。

许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。

2、基本思想

在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。(其实回溯法就是对隐式图的深度优先搜索算法)。

若用回溯法求问题的所有解时,要回溯到根,且根结点的所有可行的子树都要已被搜索遍才结束。而若使用回溯法求任一个解时,只要搜索到问题的一个解就可以结束。

3、用回溯法解题的一般步骤:

(1)针对所给问题,确定问题的解空间:

首先应明确定义问题的解空间,问题的解空间应至少包含问题的一个(最优)解。

(2)确定结点的扩展搜索规则。

(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。

4、算法框架

(1)问题框架

设问题的解是一个n维向量(a1,a2,………,an),约束条件是ai(i=1,2,3,…..,n)之间满足某种条件,记为f(ai)。

(2)非递归回溯框架

(3)递归的算法框架

回溯法是对解空间的深度优先搜索,在一般情况下使用递归函数来实现回溯法比较简单,其中i为搜索的深度,框架如下:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 回溯算法
    +关注

    关注

    0

    文章

    10

    浏览量

    6563

原文标题:五大常用算法【回溯法】

文章出处:【微信号:xx-cyy,微信公众号:C语言编程基础】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    [推荐]安易ezsafe防火墙五大优点

      安易ezsafe防火墙五大优点 文章出自:http://blog.sina.com.cn/s/blog_5997675201009wyc.html优点一
    发表于 06-17 14:55

    2011年沙特吉达五大行业展|沙特建材展|吉达建材展|五大行业展|

    2011 沙特big 5 五大行业展(北京迈斯百特)展会时间:2011年02月27日—03月02日   展会地点:沙特吉达国际会展中心 &
    发表于 07-05 17:09

    回溯经典 (皇后问题) (算法)

    5皇后问题:在8*8的国际象棋棋盘上,放5个皇后,使它们控制整个棋盘,即在任何一格放一个棋子,都会马上被吃掉。下面介绍回溯解法定义一个表示点的数据结构: struct Pt {Int x,y
    发表于 08-16 14:56

    降低测量噪声的五大技巧

    降低测量噪声的五大技巧…………
    发表于 07-12 15:06

    经典算法大全(51个C语言算法+单片机常用算法+机器学十大算法

    、dynamic programming  四、BFS和DFS优先搜索算法  、红黑树算法的实现与剖析  (续)、教你透彻了解红黑树  六、教你从头到尾彻底理解KMP
    发表于 10-23 14:31

    电机控制常用算法概述(4)

    产生随时间变化的电压。其开关频率范围一般为10-20 KHz,以消除噪声。这一通用电机的控制方法可以获得更佳的电流控制和更佳的EMI性能,因此,效率更高。 本文相关文章1、 电机控制常用算法概述(1)2、电机控制
    发表于 10-26 11:00

    电机控制常用算法概述(3)

    和驱动顺序是不变的。未完待续!!本文相关文章1、 电机控制常用算法概述(1)2、电机控制常用算法
    发表于 10-29 16:45

    推荐常用算法——基于内容的推荐

    推荐常用算法-基于内容的推荐(转自-BreezeDeus博主)
    发表于 04-29 15:12

    分享几种较简单而常用的滤波算法

    在单片机开发中,经常需要对输入的数据进行过滤处理,如传感器数据输出,AD采样等,合适的滤波处理能达到更好效果。下面分享几种较简单而常用的滤波算法:文章目录@[toc]一、限幅滤波(又称程序判断滤波
    发表于 12-21 06:10

    基于回溯的RFID防冲撞算法

    针对RFID 系统中常见的冲撞问题,提出一种基于回溯的精简结点二叉树搜索防冲撞算法,在分析二进制搜索和动态二进制算法性能的基础上,得出了提高效率的关键所在,在达到
    发表于 12-18 12:06 18次下载

    模板方法模式在回溯算法中的应用

    描述了模板方法模式及回溯算法的模板方法模式的Java 语言实现,该实现使得回溯算法的实现达到了可扩展性、灵活性和可插入性三个目标,提高了算法
    发表于 01-15 16:48 20次下载

    模板方法模式在回溯算法中的应用

    描述了模板方法模式及回溯算法的模板方法模式的Java 语言实现,该实现使得回溯算法的实现达到了可扩展性、灵活性和可插入性三个目标,提高了算法
    发表于 01-15 16:51 0次下载

    Viterbi译码器回溯算法实现

    该文介绍了两种Viterbi 译码器回溯译码算法,通过对这两种算法硬件实现结构上的优化,给出了这两种算法的FPGA 实现方法,比较了两种实现方法的优缺点。最后将其应用在实际的Viter
    发表于 05-28 15:18 33次下载
    Viterbi译码器<b class='flag-5'>回溯</b><b class='flag-5'>算法</b>实现

    关于回溯算法的介绍与运用

    本文就来看一道非常经典的回溯算法问题,子集划分问题,可以帮你更深刻理解回溯算法的思维,得心应手地写出回溯函数。
    的头像 发表于 03-25 13:42 1442次阅读

    回溯算法技巧分析

    如果你不理解这三个词语的解释,没关系,我们后面会用「全排列」和「N 皇后问题」这两个经典的回溯算法问题来帮你理解这些词语是什么意思,现在你先留着印象。
    的头像 发表于 04-19 11:00 406次阅读
    <b class='flag-5'>回溯</b><b class='flag-5'>算法</b>技巧分析