- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
计算机算法设计与分析第6章回溯法6.1.1深度优先搜索策略深度优先搜索(Depth-FirstSearch,DFS)策略是一种常用的图遍历搜索算法,用于在图或树结构中搜索特定的目标。基本思想是从起始结点开始,沿着一条路径一直向下搜索,直到无法继续下去,然后回溯到前一个结点,继续搜索其他路径,直到找到目标结点或者尝试了所有可能后确定最优解或确定没有解。深度优先实例ABCDEFABCDEF给定图G=(V,E),创建一个栈,用于存储待访问的结点;创建一个数组,用于存储每个结点访问状态。深度优先搜索策略的基本思想为:(1)初始化:任选一个结点v作为起始结点,将起始结点放入栈中。(2)当栈不为空时,执行以下步骤:①出栈--当前结点,访问当前结点其标记为已访问。②检查是否为目标结点,若是,则搜索结束,否则继续。③获取当前结点的所有邻居结点。④对于每个邻居结点,如果它未被访问,则将其放入栈中,并将其标记为已访问。(3)重复步骤(2),直到找到目标结点提前结束,或者栈为空且没找到目标结点而搜索失败结束。6.1.1深度优先搜索策略DFS的非递归伪代码DFS(start):beginstack.push(start)//将起始结点加入栈中visited[start]?true//标记相邻结点为已访问whilestackisnotemptydocurrent?stack.pop()//弹出栈顶元素,并用current记录 printcurrent//处理结点ifcurrent=objectthenreturnendif//若为目标结点,搜索结束foreachneighborincurrent.neighborsdo//遍历当前结点的相邻结点ifvisited[current]=falsethen//如果相邻结点未被访问过stack.push(neighbor)//将相邻结点加入栈中 isited[neighbor]?true//标记相邻结点为已访问endifendforendwhileend初始化,入栈,置访问标记栈非空循环出栈,访问并判断是否为目标对所有邻接点,未访问的入栈,并置访问标记DFS的递归伪代码DFS(start):beginvisited[start]?trueprintstartifstart=objectthen//若为目标结点,搜索结束returnendifforeachneighborinstart.neighborsthenifvisited[neighbor]=falsethenDFS(neighbor)endifendforend初始化,入栈,置访问标记对所有邻接点若未访问,则作为新出发点递归时间复杂度采用邻接表存储时,深度优先搜索的时间复杂度为O(|V|+|E|),其中|V|表示结点的数量,|E|表示边的数量。在最坏情况下,需要遍历所有的结点和边。采用邻接矩阵存储时,则其边集为n*n的矩阵,要遍历这个边集,时间复杂度为O(n2)。在深度优先递归搜索算法伪代码中,首先将出发点标记为已访问,并处理出发点。并判断其是否为目标点,若其为目标点,则搜索结束。接下来,遍历当前结点的所有邻居结点,并对每个未被访问的邻居结点递归调用DFS函数。这样,就能够按照深度优先的顺序遍历整个图或树。*在深度优先递归搜索算法伪代码中,首先将出发点标记为已访问,并处理出发点。并判断其是否为目标点,若其为目标点,则搜索结束。接下来,遍历当前结点的所有邻居结点,并对每个未被访问的邻居结点递归调用DFS函数。这样,就能够按照深度优先的顺序遍历整个图或树。*
您可能关注的文档
- 算法设计与分析 课件 第八章 线性规划.pptx
- 算法设计与分析 课件 第二章 蛮力法.pptx
- 算法设计与分析 课件 第六章 回溯法6.2.1 解空间树.ppt
- 算法设计与分析 课件 第六章 回溯法6.2.2 回溯法框架.ppt
- 算法设计与分析 课件 第六章 回溯法6.3.1 饲料投喂问题 -算法改进.ppt
- 算法设计与分析 课件 第六章 回溯法6.3.1 饲料投喂问题.ppt
- 算法设计与分析 课件 第六章 回溯法6.3.2 n皇后问题.ppt
- 算法设计与分析 课件 第六章 回溯法6.3.3 花草种植问题.ppt
- 算法设计与分析 课件 第六章 回溯法6.3.4 路线选择问题.ppt
- 算法设计与分析 课件 第七章 分支限界 7.1.1 BFS思想 .ppt
最近下载
- 2023款 kawasaki 川崎Ninja 1000S 用户使用手册 说明书 摩托车.pdf VIP
- 二年级上册综合实践活动全册教案.pdf VIP
- 提升水处理技术与工程的效率与可持续性.pptx
- 中国工商银行财务风险分析.doc VIP
- 第16课 会说话的手(一)(导学案)苏少版美术四年级上册.docx VIP
- 人教版2024年新教材七年级上册英语Unit 5学情评估测试卷(含答案).docx
- 14.+推进绿色发展(精品课件)-【中职专用】高一思想政治《中国特色社会主义》同步课堂精品课件(高教版2023·基础模块).pptx VIP
- 杭州师范大学2023-2024学年第1学期《高等数学(上)》期末考试试卷(A卷)附参考答案.pdf
- 新教科版五年级上册科学全册复习计划.doc
- 《酶联免疫分析法》课件.pptx VIP
文档评论(0)