- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
搜索基本算法2012.8
搜索基本算法
搜索是人工智能中的一种基本方法,利用计算机的高性能来有目的、有方法的穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法。在建立搜索算法时,首先需要关注的问题是,以什么作为状态?这些状态之间又有什么样的关系?其实,在这样的思考过程中,我们已经不知不觉地将一个具体的问题抽象成了一个图论的模型——树(如图所示)。即搜索算法的使用第一步在于搜索树的建立。
由上图可以知道,这样形成的一棵树叫搜索树(图)。初始状态对应着根结点,目标状态对应着目标结点。排在前的结点叫父结点,其后的结点叫子结点,同一层中的结点是兄弟结点,由父结点产生子结点叫扩展。完成搜索的过程就是找到一条从根结点到目标结点的路径,找出一个最优的解。这种搜索算法的实现类似于图或树的遍历,通常可以有两种不同的实现方法:深度优先搜索(DFS——Depth First search)和宽度优先搜索(BFS——First Search),下文对这两种方法分别进行讨论。
深度优先搜索
一.深度搜索
如算法名称那样,深度优先搜索所遵循的搜索策略是尽可能“深”地搜索树。它的基本思想是:为了求得问题的解,先选择某一种可能情况向前(子结点)探索,在探索过程中,一旦发现原来的选择不符合要求,就回溯至父亲结点重新选择另一结点,继续向前探索,如此反复进行,直至求得最优解。如迷宫问题(可以理解为遍历图的问题):进入迷宫后,先随意选择一个前进方向,一步步向前试探前进,如果碰到死胡同,说明前进方向已无路可走,这时,回到上一步,改变前进方向是否有路可走,如果有路可走,则沿该方向再向前试探;如果已无路可走,则再返回一步,再看其它方向是否还有路可走;如果有路可走,则沿该方向再向前试探。按此原则不断搜索回溯再搜索,直到找到新的出路或从原路返回入口处无解为止。
深度优先搜索在树(图)的遍历中也称作树(图)的先序遍历。对于树而言,深度优先搜索的思路可以描述为:
将根结点置为出发结点。
访问该出发结点。
依次将出发结点的子结点置为新的出发结点,进行深度优先遍历回溯(执行(2))。
回溯上一层的出发结点。
深度优先搜索的具体编程可用递归过程或模拟梯归来实现。他们各有各有优缺点。通常情况下采用递归方式实现搜索算法,因为递归形式的程序符合思维习惯,编写起来较容易。下面是深度优先搜索的用递归方式实现的程序框架:
Procedure dfs(i:integer);
Var k:integer;
Begin
If 所有阶段都已求解 then Begin
比较最优解并保存;
end
else begin
for k:=1 to i(同一深度可能决策的范围)do begin
穷举当前阶段所有可能的决策(方案、结点)k
if k方案可行 then begin
记录状态变化;
DFS(i+1); // 将子结点作为新的出发结点
状态恢复(现场恢复);
end
end;
end;
End. 二.例 题
1. 选择最短路径
【问题描述】
有如下所示的交通路线图,边上数值表示该道路的长度,现要求出从1号地点到达7号地点的最短的路径长度是多少,并输出该长度。
图1 图2
【问题分析】
首先需要把图1转化成搜索树模式。在建立搜索树之前,各节点之间的状态,结点与结点之间的关系。
结点状态:现有结点①~⑦号,每个结点存在两种状态,即已进入搜素路径或者未进入搜素路径,初始状态都是未进入搜索路径,两种状态可以用“1”和“0”表示。
结点之间关系:存在路劲或者不存在路径。存在路径有具体的数值表示,不存在路径可以用“-1”来代替。
在明确以上两点的基础上建立如图2所示的搜索树。求最短路径就是遍历该搜索树的过程。
首先从①号结点开始,在遍历①~⑦过程中,搜索到与结点②时存在路径,首先把结点②纳入路径,然后累加路径的长度同时判断该结点是否为结点⑦。继续调用以②为起点的搜索,开始继续遍历①~⑦中的结点,发现结点①、②已在路径中,结点③不存在连接,判断与结点④的连接,存在连接,同样把结点④纳入路径,累加路径的长度,同时判断该结点是否为结点⑦,……依次类推,形成一颗搜索树,一条完整的搜索路径:①-②-④-③-⑤-⑦。
完成第一条路径的搜索以后,即完成了第5层面的搜素,但是前面的4个层面还没有完成,这时回溯至第4层完成结点⑥和结点⑦的搜索,不存在连接,继续回溯至第3层,遍历至结点⑤,遍历结点①~⑦,发现结点①、结点②已经存在路径中,与结点③存在连接,同样把结点③纳入路径,累加路径的长度,同时判断该结点是否为结点⑦,然后以结点③为起点,遍历搜索结点①~⑦,发现无连接,这样宣布这条路
您可能关注的文档
最近下载
- 医疗机构内麻醉、精神药品使用与管理制度.docx VIP
- 重庆市房屋建筑与装饰工程计价定额2018-建筑工程.docx VIP
- 重庆市房屋建筑与装饰工程计价定额2018建筑工程.docx VIP
- 七年级语文第一次月考卷(全解全析)(苏州专用)-A4.docx VIP
- 周杰伦所有歌词(14张专辑-包括床边的故事)呕心沥血已经整理完毕可打印.doc VIP
- 中古时期郡望郡姓地理分布考论.docx VIP
- 机械工程材料完整全套教学课件.pptx
- 城市轨道交通运营管理毕业论文-关于铁路客运服务质量的调查与探讨.docx VIP
- 2025年高压电工证题库(附答案).docx
- 智慧工地整体解决方案(投标方案).docx
文档评论(0)