- 17
- 0
- 约9.05千字
- 约 11页
- 2017-02-09 发布于湖北
- 举报
深度优先搜索要点
深度优先搜索
一、搜索过程
深度优先搜索的搜索过程类似树的先序遍历,也叫回溯法。搜索过程如下:
从源节点开始发现有一节点v,如果v还有未探测到的边,就沿此边继续探测下去,当节点v的所有边都被探测过,搜索过程将回溯到最初发现v点的源节点。这一过程一直进行到已发现从源节点可达的所有节点为止。这显然是一个递归过程。
为了在遍历过程中区分顶点是否被访问,往往可以引入一个数组,如以mark[1..n]作为标记。数组的元素取0和1,初值为0。当节点被访问时,与节点相应得数组元素为1,每次访问节点时,都得先检查它的标记值,找0值得节点访问,并深度继续。深度大的先得到扩展,具有“后产生先扩展”的特点,因此在数据结构上采用堆栈来存储(新节点入栈,节点不能扩展时,栈定出栈)。
二、搜索特点
由于深度搜索过程中有保留已扩展节点,则不致于重复构造不必要的子树系统。
深度优先搜索并不是以最快的方式搜索到解,因为若目标节点在第i层的某处,必须等到该节点左边所有子树系统搜索完毕之后,才会访问到该节点,因此,搜索效率还取决于目标节点在解答树中的位置。
由于要存储所有已被扩展节点,所以需要的内存空间往往比较大。
深度优先搜索所求得的是仅仅是目前第一条从起点至目标节点的树枝路径,而不是所有通向目标节点的树枝节点的路径中最短的路径。
适用范围:适用于求解一条从初始节点至目标节点的可能路径的试题。若要存储所有解答路径,可以再建立其它空间,用来存储每个已求得的解。若要求得最优解,必须记下达到目前目标的路径和相应的路程值,并与前面已记录的值进行比较,保留其中最优解,等全部搜索完成后,把保留的最优解输出。
三、算法描述
1、算法数据结构描述:
深度优先搜索时,最关键的是结点扩展(OPEN)表的生成,它是一个栈,用于存放目前搜索到待扩展的结点,当结点到达深度界限或结点不能再扩展时,栈顶结点出栈,放入CLOSE表(存放已扩展节点),继续生成新的结点入栈OPEN表,直到搜索到目标结点或OPEN栈空为止。具体算法如下:
① 把起始结点S放到非扩展结点OPEN表中(后进先出的堆栈),如果此结点为一目标结点,则得到一个解。OPEN为一空表,则搜索失败退出。OPEN表最前面(栈顶)的结点,并把它放入CLOSED的扩展结点表中,并冠以顺序编号n。 ⑤ 否则,扩展结点n,产生其全部子结点,把它们放入OPEN表的前头(入栈),并配上指向n的返回指针;如果没有后裔,则转向2。 递归过程为: Procedure DEF-GO(step) for i:=1 to max do if 子结点符合条件 then if 子结点是目标结点 then 输出else DEF-GO(step+1); endif;enddo; Program DFS; DEF-GO(1); Program DEF(step);step:=0;repeat step:=step+1;j:=0;p:=falserepeat j:=j+1;if 结点符合条件 then 产生子结点入栈; if 子结点是目标结点 then 输出else p:=true;else if j=max then 回溯 p:=false;endif;until p=true;until step=0; Procedure BACK;step:=step-1;if step0 then 栈顶结点出栈else p:=true;--已知8个数的起始状态如图1(a),要得到目标状态为图1(b)。 1 6 4 8 ■ 4 7 ■ 5 7 6 5 (a) (b)
图1
求解时,首先要生成一棵结点的搜索树,按照深度优先搜索算法,我们可以生成图2的搜索树。图中,所有结点都用相应的数据库来标记,并按照结点扩展的顺序加以编号。其中,我们设置深度界限为5。粗线条路径表示求得的一个解。从图中可见,深度优先搜索过程是沿着一条路径进行下去,直到深度界限为止,回溯一步,再继续往下搜索,直到找到目标状态或OPEN表为空为止。
图 2图2设置深度界限为5A,B,C,D,E五人从事J1,J2,J3,J4,J5五项工作,每人只能从事一项,他们的效益如下
图 3
分析:每人选择五项工作中的一项,在各种选择的组合中,找到效益最高的的一种组合输出。: ⒈数据库:用数组f构成堆栈存放产生的结点;数组g存放当前最高效益结点的组合;数组p作为结点是否选择过的标志位。 ⒉结点的产生: (1)选择p(i)=0的结点
您可能关注的文档
- 深圳香港购物中心(11个)调查研究要点.ppt
- 深基坑工程课件要点.doc
- 深基坑工程钢板桩施工方案要点.doc
- 深基坑开挖安全专项方案要点.doc
- 深基坑开挖专项施工方案(专家论证)要点.doc
- 深基坑工程的发展1要点.ppt
- 深基坑开挖方案要点.doc
- 深基坑开挖施工方案要点.doc
- 深基坑支护工程要点.doc
- 深基坑支护施工方案要点.doc
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 部编版(26春)小学语文一年级下册教学设计全册.docx VIP
- 春节复工煤矿工人培训教案.pptx VIP
- Haier海尔蒸箱ST450-30S说明书.pdf
- Joyoung九阳电饭煲F30S-S160使用说明书.pdf
- 2025年新疆中考物理试题(含答案详解)原卷.pdf
- 79博客-目录书签跳转版.pdf VIP
- 计算智能 课件全套 第1--11章 绪论、模糊系统理论---新型群智能优化算法.pptx
- 2025年国庆节后煤矿复产复工'六个一'安全资料汇编.docx VIP
- 2023中国生物材料大会会议手册-ok.pdf VIP
- Midea 美的 ET1065QL-01SE嵌入式电烤箱 说明书.pdf
原创力文档

文档评论(0)