- 1、本文档共68页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
人工智能69067246
西南科技大学 信息工程学院 5.1 搜索的概念及种类 搜索是人工智能的一个基本问题,是推理不可分割的一部分。一个问题的求解过程其实就是搜索过程,所以搜索实际上就是求解问题的一种方法。与搜索技术相对应的知识表示法一般有两种:状态空间表示法、另一种是与/或树表示法。 路径的长度。然而,在实际问题求解中,往往是将一个状态变换成另一个状态时所付出的操作代价(或费用)是不一样的,也就是状态空间图中各有向边的代价是不一样的。那么应该采取何种搜索策略,以保证付出的代价(或费用)是最小呢? 像前面所说的一样,不可能将状态空间图的全部状态节点输入到计算机,而是仅仅存储逐步扩展过程种所形成的搜索树。 代价搜索树:有向边上标有代价的搜索树称为代价搜索树,简称代价树。 在代价树种,从节点i到其后继节点j的连线之代价记为C(i,j),而把从初始节点S0到任意节点x的路径代价记为g(x),则g(j)=g(i)+C(i,j)。 代价树宽度优先搜索的基本思想是: 每次从OPEN表中选择一个代价最小的节点,移入CLOSED表。因此,每当对一节点扩展之后,就要计算它的所有后继节点的代价,并将它们与OPEN表中已有的待扩展的节点按代价的大小从小到大依次排序。从而OPEN表选择被扩展节点时即选择排在最前面的节点(代价最小)。 其搜索算法如下: 算法5:代价树的宽度优先搜索算法 Step1:把初始节点S0放入OPEN表中,令g(S0)=0。 Step2:如果OPEN表为空,则问题无解,退出。 Step3:把OPEN表中代价最小的节点,即排在前端的第一个节点(即为节点n),移入到CLOSED表中。 Step4:如果节点n是目标节点,则求得问题的解,退出;否则继续。 Step5:判断节点n是否可扩展,若不可扩展则转Step2;否则转Step6。 Step6:对节点n进行扩展,将它们所有的后继节点放入OPEN表中,并对每个后继节点j计算其代价g(j)=g(i)+C(i,j),为每个后继节点设置指向节点n的指针。然后,根据节点的代价大小对OPEN表中的所有节点进行从小到大的排序。 Step7:转向Step2。 代价树宽度优先搜索的框图如图12所示。 Y Y N N Y 开 始 把S0送入OPEN表,令g(S0)=0 把OPEN表中的第一个节点移入CLOSED表(记为节点n) 对节点n进行扩展,并对每个后继节点j计算其代价g(j)=g(i)+C(i,j),并将它们放入OPEN表,为每个后继节点设置指向n的指针 对OPEN表中的所有节点按其代价从小到大排序 问题无解,退出 OPEN空表吗? 节点n为目标节点吗? 节点n可扩展吗? N 成功,退出 图12 代价树宽度优先搜索算法框图 例4:推销员旅行问题 假设A、B、C、D和E是五个城市,推销员从城市A出发,到达城市E,走怎样的路线费用最省?五个城市间的交通图及每个城市间的旅行费用如图13所示,图中的数字即是旅行费用。 解:由于涉及旅行费用,所以利用代价树宽度优先搜索方法求解。为此,首先将旅行交通图转换为代价树如图14所示。 图13 旅行交通图 A B C E D 6 10 5 7 6 8 转换的方法如下:从初始节点 A开始,把与它直接相邻的节点作为它的后继节点,对其他节点也作同样的扩展。但若一个节点已作为某节点的前驱节点的话,则它就不能再作为该节点的后继节点。例如,与节点B相邻的节点有A和D,但由于在代价树中,A已作为B的前驱节点出现,则它就不能再作为B的后继节点。另外,图中的节点除了初始节点A外,其他的节点都有可能在代价树中多次出现,为了区分它的多次出现,分别用下标1,2,…标出,但它们却是图中的同一个节点。例如,C1和C2都代表图中的节点C。 利用代价树的宽度优先搜索策略对代价树进行搜索,可得最优解为: A B1 D1 E2 6 5 6 图14 旅行交通图的代价树 A B1 C1 C2 E2 D2 E1 E4 D1 B2 E3 6 10 5 7 8 7 6 8 5 6 其代价是17。因而,从城市A向城市E旅行,费用最省得路线为: A→B→D→E 六.代价树的深度优先搜索 代价树的深度优先搜索和宽度优先搜索的区别: 宽度优先搜索法每次从OPEN表中的全体节点中选择代价最小的节点移入CLOSED表,并对这一节点进行扩展或判断(是否为目标节点),而深度优先搜索法则是从刚刚扩展的节点之后继节点中选择一个代价最小的节点移入CLOSED表,并进行扩展或判断。 代价树的深度优先搜索算法如下: 算法6:代价树的深度优先搜索算法 Step1:把初
文档评论(0)