学习电脑信息五大常用算法之四:回溯法_第1页
学习电脑信息五大常用算法之四:回溯法_第2页
学习电脑信息五大常用算法之四:回溯法_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Page3五大常用算法之四:回溯法五大常用算法之四:回溯法1、概念

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

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

很多困难的,规模较大的问题都可以运用回溯法,有“通用解题方法”的美称。2、基本思想

在包含问题的全部解的解空间树中,根据深度优先搜寻的策略,从根结点动身深度探究解空间树。当探究到某一结点时,要先推断该结点是否包含问题的解,假如包含,就从该结点动身接着探究下去,假如该结点不包含问题的解,则逐层向其祖先结点回溯。(其实回溯法就是对隐式图的深度优先搜寻算法)。

若用回溯法求问题的全部解时,要回溯到根,且根结点的全部可行的子树都要已被搜寻遍才结束。

而若运用回溯法求任一个解时,只要搜寻到问题的一个解就可以结束。3、用回溯法解题的一般步骤:

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

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

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

(3)以深度优先方式搜寻解空间,并在搜寻过程中用剪枝函数避开无效搜寻。4、算法框架

(1)问题框架

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

(2)非递归回溯框架1:inta[n],i;2:初始化数组a[];3:i=1;4:while(i>0(有路可走)and(未达到目标))//还未回溯到头5:{6:if(i>n)//搜寻到叶结点7:{8:搜寻到一个解,输出;9:}10:else//处理第i个元素11:{12:a[i]第一个可能的值;13:while(a[i]在不满意约束条件且在搜寻空间内)14:{15:a[i]下一个可能的值;16:}17:if(a[i]在搜寻空间内)18:{19:标识占用的资源;20:i=i+1;//扩展下一个结点21:}22:else23:{24:清理所占的状态空间;//回溯25:i=i–1;26:}27:}

(3)递归的算法框架

回溯法是对解空间的深度优先搜寻,在一般状况下运用递归函数来实现回溯法比较简洁,其中i为搜寻的深度,框架如下:1:inta[n];2:try(inti)3:{4:if(i>n)5:输出结果;6:else7:{8:for(j=下界;j<=上界;j=j+1)//枚举i全部可能的路径9:{10:if(fun(j))//满意限界函数和约束条件11:{12:a[i]=j;13:...//其他操作14:try(i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论