- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验5树的深度搜索.
实验5 树的深度搜索
一 实验原理
1、定义
在此搜索中,首先扩展最新产生的(即最深的)节点。深度相等的节点可以任意排列。
这种盲目(无信息)搜索叫做深度优先搜索(depth-first search)。
2、特点
首先,扩展最深的节点的结果使得搜索沿着状态空间某条单一的路径从起始节点向下进行下去;只有当搜索到达一个没有后裔的状态时,它才考虑另一条替代的路径。
3、深度界限
为了避免考虑太长的路径(防止搜索过程沿着无益的路径扩展下去),往往给出一个节点扩展的最大深度棗深度界限。任何节点如果达到了深度界限,那么都将把它们作为没有后继节点处理。
二 实验目的
掌握有关树的深度优先搜索和图的搜索算法
三 实验内容与结果
四 实验心得
5.1树的深度搜索
深度搜索
在人工智能领域,经常使用到搜索技术。常见的搜索方式有深度优先搜索与宽度优先搜索两种。
问题:树的搜索
树在计算机科学领域是一种数据结构的概念。例如下图就表示一棵树:
树中的字母表示树的节点,节点a叫做树的根,节点b、c、d叫做节点a的子节点。b、c、d又分别有它们的子节点。树的搜索的意思就是要找到一条连接两个节点的路径,例如连接节点a与g的路径是a-c-g。
上面的例子是显而易见的,不过要想让计算机也能够找到这条路径,就必须编程解决。下面介绍它的Prolog程序的编法。
树的表达
首先我们需要把上面的树翻译为Prolog的语言,这不难办到,只要使用事实就可以轻易地搞定:
上面的每一条事实对应树中的一条树枝。
树的搜索
先给出搜索程序:(事实框中输入)
树的深度搜索完整源程序:
测试用例及结果(目标框中输入):
route(a,f,L).
L = [c,f] ;
1 Solution
route(a,h,L)
L= [d,h]
1 Solution
我们可以看出,上面的route/3是使用递归的方法书写的。前两个参数为要考虑的节点,第三个参数储存找出来的路由表。route的第一个子句为边界条件;第二个子句递归调用route/3本身。
在这个程序中,当找到X的一个子节点后,系统就开始寻找这个子节点的子节点,一直到找到目标,搜索就成功地结束,而如果某个节点没有子节点,就会引起回溯,去寻找它的父节点的另一个子节点。这种搜索方式就叫做深度优先搜索。由于Prolog内建的自动回溯功能,使得我们可以非常容易地实现深度搜索。所以在一般情况下,通常使用深度搜索,而只在特殊的情况下才使用宽度搜索。
5.2 图的搜索-树的搜索拓展
有向图
如果在前面的事实中增加一条sub(d,g),那么g既是d的子节点,又是c得子节点。我们把这样的树叫做有向图。有向图的搜索与树的搜索过程是相同的。
图的搜索
图是最复杂的数据结构了。在图中不分什么父节点与子节点,每个节点都与一定数量的其它节点相连,一条连接叫做一条路经。每条路径都有不同的权值,从某个节点到另外的节点所走过的路径就叫做这两个节点之间的通路。图的搜索的目的就是要找出这些通路,有时还需要所有的权值加起来最小(后面实验将会涉及)。图的最典型的例子就是地理上的地图了,每个城市相当于一个节点,城市之间的道路就是路径了。搜索工作就是一个旅游向导,它能够帮助你决定到达另外一个城市所需的路径。
图的搜索和树的搜索是类似的,不过由于图中存在着环路,所以如果不加以控制,而直接使用前面的程序就会导致永远不会结束。(此处及以下的解决搜索主要是针对无向图)
解决环路的办法也很简单:使用一个列表储存已经考虑过的节点,如果正在考虑的节点已经在此列表中就表明没有必要再搜索此节点了。
下面是完整的Prolog程序。
上图为源程序及程序注解说明。
源程序备注说明:
谓词c/2
定义了图的信息,你也可以自己根据事实给出的信息在纸上画画此有向图。
findroad/4
findroad/4为寻找路由的谓词,它的调用方式为findroad(a,e,[],X)。
3.findroad(X,X,L,L).
第一个子句定义了边界条件,它用来把第三个参数传给第四个参数,第三个参数为临时的路由表,第四个参数为最终的路由表。
4.findroad(X,Y,L,L1):- % L为储存的路由表。
connect(X,Z),
not(member(Z,L)), % X所连接的节点Z不在已经储存的路由表中。
findroad(Z,Y,[Z|L],L1).
第二个子句先找出与X相连的节点Z,然后判断Z是否在临时的路由表中,如果不在,就把Z加入到临时路由表中,并且寻找从Z到Y的路由。
下面是运行结果:
findroad(a,e,[],L),write(L),nl,fa
您可能关注的文档
- 实验4-滤波器设计..doc
- 实验4.2测量超声波在空气中的传播速度..doc
- 实验407.步进电机控制..doc
- 实验4-电子商务相关的法律法规-11级..doc
- 实验4FIR数字滤波器的DSP编程实现..doc
- 实验44声光衍射法测定液体中的声速..docx
- 实验4Matlab程序设计1..doc
- 实验46个实验..doc
- 实验4shell脚本的编写(一)..doc
- 实验4PWM控制直流电机实验..doc
- 剧本杀行业报告:内容创作规范与剧本市场拓展策略.docx
- 剧本杀行业区域市场区域文化特色与市场潜力分析报告.docx
- 剧本杀行业区域市场拓展实战案例研究.docx
- 剧本杀行业区域市场拓展路径与模式探索报告.docx
- 剧本杀行业区域市场竞争态势与品牌差异化策略研究报告.docx
- 剧本杀行业2025年西北区域市场市场细分领域竞争态势与品牌竞争策略分析研究报告.docx
- 剧本杀行业2025年西北市场拓展前景预测报告.docx
- 剧本杀行业2025年长沙市场发展潜力分析报告.docx
- 剧本杀行业2025年长三角市场竞争策略与布局分析.docx
- 医疗行业数据合规:2025年数据安全法实施后的合规监管挑战与应对.docx
最近下载
- 2024新沪教版版九年级上册化学各章节必背知识点复习提纲.docx VIP
- 高中数学-思维导图(60图).pdf VIP
- 饮水机清洁技巧课件.pptx VIP
- 放学路上作文600字.docx VIP
- 应急大队档案培训.pptx
- 人体解剖学(第二版):消化系统PPT全套教学课件.pptx VIP
- 2012年下半年小学教师资格证考试真题《教育教学知识与能力》(附答案).pdf VIP
- 18.6审理旅游纠纷案件适用法律的规定(政策与法律法规 第7版).pptx VIP
- 作风建设专题党课讲稿2篇:加强作风建设,推动高质量发展.docx VIP
- (四升五)四年级语文暑假特色作业(可修改可打印).docx VIP
文档评论(0)