好文档 - 专业文书写作范文服务资料分享网站

算法设计与分析--回溯法哈密尔顿回路问题

天下 分享 时间: 加入收藏 我要投稿 点赞

回溯算法的应用

课程名称: 算法设计与分析 院 系: 学生姓名: 学 号: 专业班级: 指导教师:

年 月 日

回溯算法的应用

摘 要:回溯法是在包含问题的所有解的解空间树(或森林)中,按照深度优先的策

略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否满足问题的约束条件。如果满足进入该子树,继续按深度优先的策略进行搜索。否则,不去搜索以该结点为根的子树,而是逐层向其祖先结点回溯。其实回溯法就是对隐式图的深度优先搜索算法。

回溯法是一个既带有系统性又带有跳跃性的的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。

回溯法的优点在于其程序结构明确,可读性强,易于理解,而且通过对问题的分析可以大大提高运行效率。回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍才结束。而回溯法在用来求问题的任一解时,只要搜索到问题的一个解就可以结束。这种以深度优先的方式系统地搜索问题的解的算法称为回溯法,它适用于解一些组合数较大的问题。这就是以深度优先的方式系统地搜索问题解的回溯算法,它适用于解决一些类似n皇后问题等求解方案问题,也可以解决一些最优化问题。

关键词:回溯法 解空间树 深度优先搜索

目 录

第1章 绪论 ....................................................................................................... 1 1.1 回溯算法的背景知识 .............................................................................. 1 1.2 回溯法的前景意义 .................................................................................. 1 第2章 回溯算法的理论知识 ........................................................................... 2 2.1 回溯算法的基本思想 .............................................................................. 2 2.2 回溯算法设计过程 .................................................................................. 2 2.3回溯算法框架 ........................................................................................... 2 2.4 回溯算法的一般性描述 .......................................................................... 4 第3章 哈密尔顿问题 ....................................................................................... 5 3.1 问题描述 .................................................................................................. 5 3.2 问题分析 .................................................................................................. 5 3.3 算法设计 .................................................................................................. 5 3.4 测试结果与分析 ...................................................................................... 7 第4章 结论 ..................................................................................................... 11 参考文献 ............................................................................................................. 12

第1章 绪论

1.1 回溯算法的背景知识

回溯算法是尝试搜索算法中最为基本的算法,在递归算法中,其存在的意义是在递归知道可解的最小问题后,逐步返回原问题的过程。实际上是一个类似于枚举的搜索尝试方法,他的主题思想是在搜索尝试的过程中寻找问题的解,当发现不满足条件时就回溯返回,尝试别的路径。

简单的说就是:从问题的某一种初始状态出发,依次搜寻每一种可能到达的情况,当走到这条路的“尽头”时,回过头到上一个情况,看这个情况是否还有没有走过的路,依次进行下去,直到遍历完所有的情况。

回溯法实际上是一种深度优先搜索的方式。对于回溯法解决的问题,通常将其解空间组织成图或者树的形式。对于用回溯法求解的问题,首先要将问题进行适当的转化,得出状态空间树。这棵树的每条完整路径都代表了一种解的可能。通过深度优先搜索这棵树,枚举每种可能的解的情况;从而得出结果。但是,回溯法中通过构造约束函数,可以大大提升程序效率,因为在深度优先搜索的过程中,不断的将每个解与约束函数进行对照从而删除一些不可能的解,这样就不必继续把解的剩余部分列出从而节省部分时间。

1.2 回溯法的前景意义

在做题时,有时会遇到这样一类题目,它的问题可以分解,但是又不能得出明确的动态规划或是递归解法,此时可以考虑用回溯法解决此类问题。回溯法的优点在于其程序结构明确,可读性强,易于理解,而且通过对问题的分析可以大大提高运行效率。

通过运用回溯法,可以解决很多问题,譬如我们所熟知的“八皇后问题”、“0/1背包问题”,这只是在教学阶段中的运用,在实际运用中回溯法也能起到很大的作用。

回溯法适用于解决难以归纳一般规律解法的问题,其适用范围广,灵活性大,在解一些列举方法的问题时尤其可用。但是,其缺点也是明显的,即时间复杂度较大;因此在采用时我们应该因情况的不同而做出不同的选择。

第2章 回溯算法的理论知识

2.1 回溯算法的基本思想

回溯法是在包含问题的所有解的解空间树(或森林)中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否满足问题的约束条件。如果满足进入该子树,继续按深度优先的策略进行搜索。否则,不去搜索以该结点为根的子树,而是逐层向其祖先结点回溯。其实回溯法就是对隐式图的深度优先搜索算法。

2.2 回溯算法设计过程

(1)确定问题的解空间

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

(2)确定结点的扩展规则,如每个皇后在一行中的不同位置移动,而象棋中的马只能走“日”字等。 (3)搜索解空间

回溯算法从开始结点(根结点)出发,以深度优先的方式搜索整个解空间。这个开始结点就成为一个活结点,同时也成为当前的扩展结点。在当前的扩展结点处,搜索向纵深方向移至一个新结点。这个新结点就成为一个新的活结点,并成为当前扩展结点。如果在当前的扩展结点处不能再向纵深方向移动,则当前扩展结点就成为死结点。此时,应往回移动(回溯)至最近的一个活结点处,并使这个活结点成为当前的扩展结点。回溯法即以这种工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已没有活结点时为止。

2.3回溯算法框架

(1)问题框架

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

算法设计与分析--回溯法哈密尔顿回路问题

回溯算法的应用课程名称:算法设计与分析院系:学生姓名:学号:专业班级:
推荐度:
点击下载文档文档为doc格式
7s1jh57jd07b3ef97wu606i7k4ff8500zjs
领取福利

微信扫码领取福利

微信扫码分享