资源描述:
《回溯算法设计-new.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、16.2回溯算法设计《计算机导论与程序设计基础》1一.回溯算法的含义二.用回溯算法解决问题的一般步骤三.回溯法解题思路--应用递归函数求解提纲2一.回溯算法的含义以组合问题为例:找出从自然数1、2、……、n中任取r个数的所有组合(要求r个数从小到大排列)。例如n=5,r=3的所有组合为:(1)1,2,3(2)1,2,4(3)1,2,5(4)1,3,4(5)1,3,5(6)1,4,5(7)2,3,4(8)2,3,5(9)2,4,5(10)3,4,5一.回溯算法的含义3一.回溯算法的含义求n=5,r=3的所有组合算法1:使用前面学的穷举算法罗列出3个数字剔重之后的5×4
2、×3=60种候选解。利用限制条件(r个数从小到大排列)来剔除不符合要求的解。算法评价:计算量大,可能候选解中只有一小部分解是符合要求的解。4一.回溯算法的含义求n=5,r=3的所有组合算法2:使用回溯算法回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:在搜索问题的解时,从一条路往前走,能进则进,不能进则退(回溯)回来,换一条路再试。迷宫x1x2x3①②③④⑤③④⑤5一.回溯算法的含义二.用回溯算法解决问题的一般步骤三.回溯法解题思路--应用递归函数求解提纲6二.用回溯算法解决问题的一般步骤二.用回溯算法解决问题的一般步骤:针对所给问题,定
3、义问题的解空间,它至少包含问题的一个(最优)解。确定易于搜索的解空间结构,使得能用回溯法方便地搜索整个解空间。以深度优先的方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。问题的解空间通常是在搜索问题解的过程中动态产生的,这是回溯算法的一个重要特性。7第1步.定义问题的解空间。问题的解空间应至少包含问题的一个(最优)解。例:求n=5,r=3的所有组合二.用回溯算法解决问题的一般步骤解空间中共有5×4×3=60种可能的解,其中符合要求的解为(列举法):{(1,2,3),(1,2,4),(1,2,5),(1,3,4),(1,3,5),(1,4,5),(2,3,4)
4、,(2,3,5),(2,4,5),(3,4,5)}符合要求的解为(描述法):E={(x1,x2,x3)∣xi∈S,1≤i≤3,且x15、区别于集合的主要性质在于:(1)它可以多次含有某个对象;(2)对象按照一定顺序出现。9二.用回溯算法解决问题的一般步骤第2步.确定易于搜索的解空间结构。通常可以将解空间组织成一棵树,使得能用回溯法方便地搜索整个解空间。问题的解:{(1,2,3),(1,2,4),(1,2,5),(1,3,4),(1,3,5),(1,4,5),(2,3,4),(2,3,5),(2,4,5),(3,4,5)}x1x2x3①②③④⑤③④⑤②④⑤③④⑤④⑤③④⑤10二.用回溯算法解决问题的一般步骤树的定义:树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关
6、系称为父子关系。父子关系在树的结点之间建立了一个层次结构。在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点。①②③④⑤③④⑤④⑤根结点深度宽度11二.用回溯算法解决问题的一般步骤第3步.以深度优先的方式搜索解空间回溯法的基本思想:确定了解空间的组织结构后,回溯法就从开始结点(根结点)出发,以深度优先的方式搜索整个解空间。这个开始结点就成为一个活结点,同时也成为当前的扩展结点。在当前的扩展结点处,搜索向纵深方向移至一个新结点。这个新结点就成为一个新的活结点,并成为当前扩展结点。如果在当前的扩展结点处不能再向纵深方向移动,则当前扩展结点就成为死结点。此
7、时,应往回移动(回溯)至最近的一个活结点处,并使这个活结点成为当前的扩展结点。回溯法即以这种工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已没有活结点时为止。12搜索问题解,建立解空间-1x1x2x3①②③④⑤③④⑤②④⑤③④⑤④⑤③④⑤⑤⑤深度13一.回溯算法的含义二.用回溯算法解决问题的一般步骤三.回溯法解题思路--应用递归函数求解提纲14三.回溯法解题思路就是求所有满足条件D的n元组(x1,x2,…,xn)为求n元组(x1,x2,…,xn),可以先求出x1,然后再求n-1元组(x2,…,xn)。这样,求(x1,x2,…,xn)的问题被转化为规模