- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C算法一8.广度优先搜索
第八章 广度优先搜索 广度优先搜索的过程 广度优先搜索算法(又称宽度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。 广度优先算法的核心思想是:从初始节点开始,应用算符生成第一层节点,检查目标节点是否在这些后继节点中,若没有,再用产生式规则将所有第一层的节点逐一扩展,得到第二层节点,并逐一检查第二层节点中是否包含目标节点。若没有,再用算符逐一扩展第二层的所有节点……,如此依次扩展,检查下去,直到发现目标节点为止。即 ⒈从图中的某一顶点V0开始,先访问V0; ⒉访问所有与V0相邻接的顶点V1,V2,......,Vt; ⒊依次访问与V1,V2,......,Vt相邻接的所有未曾访问过的顶点; ⒋循此以往,直至所有的顶点都被访问过为止。 这种搜索的次序体现沿层次向横向扩展的趋势,所以称之为广度优先搜索。 广度优先搜索算法描述: int Bfs() { 初始化,初始状态存入队列; 队列首指针head=0; 尾指针tail=1; do { 指针head后移一位,指向待扩展结点; for (int i=1;i=max;++i) //max为产生子结点的规则数 { if (子结点符合条件) { tail指针增1,把新结点存入列尾; if (新结点与原已产生结点重复) 删去该结点(取消入队,tail减1); else if (新结点是目标结点) 输出并退出; } } }while(headtail); //队列为空 } 广度优先搜索注意事项: 1、每生成一个子结点,就要提供指向它们父亲结点的指针。当解出现时候,通过逆向跟踪,找到从根结点到目标结点的一条路径。当然不要求输出路径,就没必要记父亲。 2、生成的结点要与前面所有已经产生结点比较,以免出现重复结点,浪费时间和空间,还有可能陷入死循环。 3、如果目标结点的深度与“费用”(如:路径长度)成正比,那么,找到的第一个解即为最优解,这时,搜索速度比深度搜索要快些,在求最优解时往往采用广度优先搜索;如果结点的“费用”不与深度成正比时,第一次找到的解不一定是最优解。 4、广度优先搜索的效率还有赖于目标结点所在位置情况,如果目标结点深度处于较深层时,需搜索的结点数基本上以指数增长。 下面我们看看怎样用宽度优先搜索来解决八数码问题。 例如 图2给出广度优先搜索应用于八数码难题时所生成的搜索树。搜索树上的所有结点都标记它们所对应的状态,每个结点旁边的数字表示结点扩展的顺序。粗线条路径表明求得的一个解。从图中可以看出,扩展第26个结点,总共生成46个结点之后,才求得这个解。此外,直接观察此图表明,不存在有更短走步序列的解。 【例1】图4表示的是从城市A到城市H的交通图。从图中可以看出,从城市A到城市H要经过若干个城市。现要找出一条经过城市最少的一条路线。 【算法分析】 看到这图很容易想到用邻接距阵来表示,0表示能走,1表示不能走。如图。 首先想到的是用队列的思想。a数组是存储扩展结点的队列,a[i]记录经过的城市,b[i]记录前趋城市,这样就可以倒推出最短线路。具体过程如下: (1) 将城市A入队,队首为0、队尾为1。 (2)将队首所指的城市所有可直通的城市入队(如果这个城市在队列中出现过就不入队,可用一布尔数组s[i]来判断),将入队城市的前趋城市保存在b[i]中。然后将队首加1,得到新的队首城市。重复以上步骤,直到搜到城市H时,搜索结束。利用b[i]可倒推出最少城市线路。 【参考程序】 #includeiostream #includecstring using namespace std; int ju[9][9]={{0,0,0,0,0,0,0,0,0}, {0,1,0,0,0,1,0,1,1}, {0,0,1,1,1,1,0,1,1}, {0,0,1,1,0,0,1,1,1}, {0,0,1,0,1,1,1,0,1}, {0,1,1,0,1,1,1,0,0},
您可能关注的文档
- a一一一z英文谚语.docx
- A一04下颌运动障碍的治疗.ppt
- A中国城建史一2秦汉.ppt
- A书法{一、姿势与执笔、二讲运腕与用笔}.ppt
- A中国教育史第一章原始社会时期教育.ppt
- A传统工业区和新兴工业区2.ppt
- ASUS A8LE待机偏大简单维修.docx
- ARDS和呼吸机.ppt
- A中国城建史一3三国到隋唐.ppt
- A型行为和健康.pptx
- 2024年火电电力职业鉴定综合提升测试卷含完整答案详解(考点梳理).docx
- 2024年火电电力职业鉴定综合提升测试卷含答案详解【名师推荐】.docx
- 2024年火电电力职业鉴定综合提升测试卷含答案详解【预热题】.docx
- 2024年火电电力职业鉴定综合提升测试卷及答案详解参考.docx
- 2024年火电电力职业鉴定综合提升测试卷附参考答案详解【黄金题型】.docx
- 2024年火电电力职业鉴定综合提升测试卷及完整答案详解(名校卷).docx
- 2024年火电电力职业鉴定综合提升测试卷含完整答案详解【全优】.docx
- 2024年火电电力职业鉴定经典例题附答案详解(培优A卷).docx
- 2025年01月山东省兰陵县事业单位2025年度公开招聘169名医疗卫生岗位工作人员(一)笔试历年专业考点(难、易错点荟萃)附带答案详解.docx
- 2024年火电电力职业鉴定经典例题附完整答案详解【夺冠系列】.docx
最近下载
- 高中数学第四章定积分4.3定积分的简单应用4.3.2简单几何体的体积教案.docx VIP
- TZSQX008-2020建设工程全过程质量行为导则.docx VIP
- 2024年山东省高中学业水平合格考生物试卷试题(含答案详解).docx VIP
- 高级教师职称评审答辩简答题.doc VIP
- 禁毒情报学习通超星期末考试答案章节答案2024年.docx VIP
- 北京市2024年艺术类专业考生综合分分数分布(一分一段表).pdf VIP
- 2025年乳腺癌诊疗指南(doc14页) .pdf VIP
- 篮球的起源与发展ppt课件.pptx VIP
- 网上调查赚钱经验及技巧总结.doc VIP
- ALPHA AS100说明书-V102用户手册.pdf
文档评论(0)