`
endual
  • 浏览: 3566267 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

算法设计与分析_回溯法分析

 
阅读更多

回溯法 有通用的解题法之称。用它可以系统的搜索问题的所有解。回溯法是一个既带有系统性

又带有跳跃性的搜索算法。它在问题的解空间树中,按深度优先策略,从根节点出发搜索解空间树,算法

搜索到解空间的任一节点时,先判断该节点是否包含问题的解。如果肯定不包含,那么跳过对该

节点为树的子树的搜索的,逐层向其祖先节点回溯,否则进入该子树,继续按深度优先策略搜索,回溯

法求问题的一个子解时,只要搜索到问题的一个解就可以结束了。这种以深度优先方式系统搜索问题解的算法称

为回溯法。它适应用解组合数较大的问题。

 

1.回溯法的算法框架

 

用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含问题的一个最优解。例如,对于有n种可选择物品的

0 1 背包问题,其解空间由长度为n的01 向量组成的,该解空间包含对遍历的所以01赋值

 

回溯法搜索解空间树时,通常才用两种策略避免无效的搜索,提高回溯法的搜索效率。其一是用约束函数在扩展节点处

剪去不满足约束的子树,其二是用限界函数剪去得不到的最优解的子树,这两类函数通常称为剪纸函数。

 

回溯法求解的三个步骤

1.针对问题,定义问题的解空间

2.确定容易搜索的解空间结构

3.以深度优先方式搜索解空间,并在搜索过程中用剪纸函数避免无效的搜索结果

 

方法1.递归回溯(递归调用函数本身)

回溯法对解空间进行深度优先的搜索,因此,在一般的情况下可用递归方法实现回溯法。

 

方法2.迭代回溯 (一般使用while或者for循环,将问题慢慢扩展到全部,前一次的结果被后一次的结构使用)

采用树的非递归深度优先遍历算法,可将回溯法表示为一个非递归迭代过程

用回溯法解题的一个显著特征是在搜索过程中动态产生问题的解空间,在任何时刻,算法只是保存从根节点到当前扩展节点

的路径。如果解空间树中从根节点到叶节点的最长路径的长度为h(n),则回溯法所需的计算空间通常为o(h(n)),而显式地存储整个解空间

那么需要O(h(n)!)

 

子集树与排列树

 

当所给的问题是从n个元素的集合S中找出S满足某种性质的子集时,相应的解空间称为子集树。比如,n个物品的0-1背包问题所相应的解空间

树是一颗子集树,这类子集树通常有2^n个叶节点,其节点总个数有2^n-1,遍历子集树的算法需要  2^n的空间复杂度

 

    当所给问题是确定n个元素满足某种性质的排列时,相应的解空间树称为树排列树通常有n!个叶节点,因此遍历排列树需要n!空间复制度。

 

 

 

分享到:
评论

相关推荐

    算法设计与分析-回溯法地图填色源代码.cpp

    算法设计与分析-回溯法地图填色源代码.cpp (1) 回溯法算法设计思想。 (2) 地图填色问题的回溯法解法。 (1) 通过本次实验,我了解到回溯法的基本思想: 不断尝试每一条可行路径,出错时回退,直到找到可行解或全部...

    算法设计技巧与分析_第13章__回溯法.ppt

    算法设计技巧与分析_第13章__回溯法.ppt

    算法设计与分析——回溯法

    回溯法的分析,讲述回溯法的原理和算法,并有例题运用回溯法

    算法分析与设计实验三:回溯法.doc

    回溯法是一种在解决问题时,通过试探性地做出选择,并逐步深入到可能的解空间,如果发现当前选择无法导出有效解,则退回一步,改变之前的选择,继续探索其他可能的分支,直到找到满足条件的解或者证明无解的搜索算法...

    回溯法搜索排列树算法园排列问题.rar_Backtracking Search_回溯树_回溯法_算法设计与分析

    在设计回溯法的算法时,我们需要遵循以下步骤: 1. 定义解空间:确定所有可能的解的集合。 2. 规定搜索顺序:定义如何遍历解空间的节点。 3. 建立约束函数:检查当前选择是否符合问题的约束。 4. 建立剪枝函数:避免...

    【算法设计与分析】回溯法

    【算法设计与分析】回溯法

    算法设计与分析回溯法

    回溯法是一种强大的算法设计策略,常用于解决复杂的组合优化问题。它的核心思想是在问题的解空间中进行深度优先搜索,逐步构建潜在的解决方案,并在过程中应用剪枝策略以避免无效的计算。当发现当前路径无法导出有效...

    计算机算法设计与分析:第八章_回溯法.ppt

    计算机算法设计与分析:第八章_回溯法.ppt

    中科大_研究生_算法设计与分析_最新期末复习资料19助教算法问题第1题解答参考.rar

    此压缩包文件“中科大_研究生_算法设计与分析_最新期末复习资料19助教算法问题第1题解答参考.rar”包含了中国科学技术大学研究生课程《算法设计与分析》的最新期末复习材料,特别是针对助教所提出的算法问题第一题的...

    南京邮电大学 算法设计与分析 陈慧南 实验三回溯法实验报告

    ### 南京邮电大学 算法设计与分析 陈慧南 实验三回溯法实验报告 #### 实验目的 本次实验旨在通过实践掌握并深入理解回溯法的基本原理及其应用。具体目标包括: - 学习如何通过编程实现深度优先搜索状态空间树来...

    中科大_研究生_算法设计与分析_最新期末复习资料15年试卷答案.rar

    《算法设计与分析》是计算机科学领域一门至关重要的课程,主要关注如何有效地解决问题,并通过算法的设计、实现和分析来优化计算过程。这份来自中国科学技术大学(中科大)研究生课程的最新期末复习资料,包含了15年...

    19854813计算机算法设计与分析_苏德富等.rar

    在本压缩包中,包含了两份重要的资源:一份可能是关于该书的介绍或链接的www.pudn.com.txt文件,另一份则是主教材《计算机算法设计与分析_苏德富等》的电子版。 首先,我们要理解算法设计的重要性。在计算机科学中...

    算法设计与分析 回溯法 n皇后问题

    回溯法是一种重要的算法设计与分析技术,常用于解决组合优化问题,如寻找所有可能的解或找到最优解。在本例中,我们关注的是一个经典的计算机科学问题——n皇后问题。n皇后问题是一个在n×n棋盘上放置n个皇后,使得...

    算法设计与分析回溯

    在本资源中,你将找到关于算法设计与分析,特别是回溯法的学习代码和解析,这对于深入理解这一算法及其应用非常有帮助。 回溯法是一种试探性的解决问题的方法,它尝试逐步构建解决方案,如果在某一步发现当前路径...

    _2020算法设计与分析_.zip

    **算法设计与分析** 在计算机科学中,算法设计与分析是至关重要的领域,它涉及到创建高效、可理解和可实现的算法,并对它们的性能进行评估。武汉科技大学的这门课程,"算法设计与分析",显然是为了教育学生掌握这一...

    中科大_研究生_算法设计与分析_最新期末复习资料算法整理.zip

    【算法设计与分析】是计算机科学中的核心课程之一,它主要关注如何有效地解决问题,并通过创建高效、可理解和可实现的算法来达成这一目标。在中国科学技术大学(中科大)的研究生课程中,这门课通常会深入探讨各种...

    算法设计与分析 回溯法

    在《算法设计与分析》的课件中,可能涵盖了回溯法的基本概念、原理、实现步骤、应用实例以及如何设计有效的剪枝函数等内容。通过深入学习和理解这些知识,可以提高解决复杂问题的能力,并掌握一种重要的算法设计技巧...

Global site tag (gtag.js) - Google Analytics