摘 要: 代价树深度优先搜索算法是代价树搜索的常用方法之一,但在没有限制条件的情况下,可能陷入死循环或者大量无效搜索,存在搜索不完备以及所找的解未必是最优解的问题。针对深度优先搜索的缺点,在搜索过程中设计一定的剪枝条件,以提高搜索效率避免陷入死循环,并尽量返回代价更低的解。
关键词 : 代价树;搜索;深度优先;
Abstract: The depth first search algorithm for cost tree is one of the common methods of cost tree search. It may fall into an endless loop or a large number of invalid searches in the case of no constraints.The depth first search may be not complete and the solution may be not optimal. Aiming to solve the shortcomings of depth first search, some pruning conditions are designed in the search process to improve the search efficiency and avoid falling into the dead loop and return the solution with lower.
Keyword: cost tree; search; depth first;
搜索是人工智能学科重要的研究内容之一,指从当前状态出发,根据一定的条件及规则搜索到达目标状态路径的过程,包括盲目搜索和启发式搜索[1]。其中盲目搜索指在搜索中每一步都根据既定的规则和策略进行搜索,启发式搜索则是指在搜索过程中的每一步都根据估价函数或一定的方法选择离目标状态预测更优的路径继续搜索[2]。
代价树是代价搜索树的简称,指有向边上标有代价(或花费)的搜索树。代价树的搜索与普通搜索的区别在于搜索过程中要考虑当前搜索路径代价并选择较低代价的路径继续搜索[3]。
1 、代价树深度优先搜索算法
1.1、 算法介绍
代价树的深度优先搜索主要是从根节点S0开始进行扩展,并从后继节点中选择代价最小的节点继续扩展,并以此类推,直到节点无法扩展且没有找到解时进行回溯,若找到解,则返回。
代价树深度优先搜索需要定义2个队列,OPEN队列代表未扩展节点的队列,CLOSED队列代表已扩展节点的队列。
定义节点j的代价f(j)=f(i)+c(i,j),其中c(i,j)代表边节点i到其后继节点j的代价。
算法的流程如下。
(1)将节点S0放入OPEN表中,CLOSED表置空。
(2)判断OPEN表是否为空,若空则返回,若不为空则从OPEN表的首部拿出第一个节点n放入CLOSED表中。
(3)判断节点n是否目标节点,若是,则返回。
(4)判断节点n是否可扩展,若不可扩展,则返回步骤(2)。
(5)若节点n可扩展,则对节点n进行扩展,计算后继节点代价并按从小到大的顺序排序后加入到OPEN表的首部,返回步骤(2)。
1.2、 算法缺点分析
(1)算法在对节点进行扩展时,没有考虑后继节点是否在祖先节点中出现过,导致可能出现死循环。
(2)算法在扩展节点时没有考虑该节点是否是已搜索过的无效节点。
(3)算法在执行复杂搜索时由于没有限制条件导致可能在无解路线上浪费大量时间。
(4)算法返回的搜索结果不一定是最优解。
2、 代价树深度优先搜索优化
2.1、 算法优化
针对代价树深度优先搜索的缺点,对算法进行相应改进。
(1)根据具体问题对深度优先搜索算法进行搜索层数限制,当搜索达到规定的层数后,即视为无法扩展。若搜索完毕后依然没有找到解,则提高限制层数。
(2)对节点n进行扩展时,判断其是否出现在CLOSED表中,若存在则丢弃节点n。
(3)对节点n进行扩展时,判断相应的后继节点是否出现在OPEN表中,若存在则比较其代价,若后继节点代价低则丢弃OPEN表中的相应节点,若节点n后继节点代价高则丢弃相应的后继节点。
2.2、 改进算法应用分析
推销员旅行问题,设有7个城市A、B、C、D、E、F、G,交通路线如图1所示,图中数字代表所需路费,推销员要从A城市到达G城市,怎么样去搜索一条花费更低的路线?
图1 推销员旅行问题路线图
2.2.1、 深度优先搜索过程
按照深度优先搜索方法,遍历顺序如图2所示。
(1)首先从节点A出发扩展,将节点B、节点C加入OPEN表中,将节点A加入CLOSED表中。
图2 深度优先搜索过程
(2)选择代价更小的B节点扩展,从OPEN表中取出节点B并将节点B加入CLOSED表中,扩展节点B,将节点C、节点E加入OPEN表中。
(3)选择代价更小的C节点扩展,从OPEN表中取出节点C并将节点C加入CLOSED表中,扩展节点C,将节点E、节点D加入OPEN表中。
(4)选择代价更小的E节点扩展,从OPEN表中取出节点E并将节点E加入CLOSED表中,扩展节点E,此时后继节点中B为代价最小的节点,搜索将会陷入死循环。
2.2.2 、改进深度优先搜索过程
因城市数量较少,可以不通过设置层数限制搜索深度,按照改进的深度优先搜索方法,遍历顺序如图3所示。
图3 改进深度优先搜索过程
(1)首先从节点A出发扩展,将节点B、节点C加入OPEN表中,将节点A加入CLOSED表中。
(2)选择代价更小的B节点扩展,从OPEN表中取出节点B并将节点B加入CLOSED表中,扩展节点B,因节点C已经在OPEN表中存在且原节点代价更小故丢弃,将节点E加入OPEN表中。
(3)选择节点E扩展,从OPEN表中取出节点E并将节点E加入CLOSED表中,扩展节点E,将节点F加入OPEN表中。
(4)选择节点F扩展,从OPEN表中取出节点F并将节点F加入CLOSED表中,扩展节点F,节点F不可扩展。
(5)选择节点C扩展,从OPEN表中取出节点C并将节点C加入CLOSED表中,扩展节点C,将节点E和D加入OPEN表中。
(6)选择节点E扩展,因节点E在CLOSED表中已经存在,是无效节点,故丢弃。
(7)选择节点D扩展,找到解,搜索结束。
3 、结语
经过推销员旅行问题的验证,改进后的算法避免了搜索陷入死循环,提高了搜索效率。但依然存在找到的解未必是最优解的问题,搜索到的解相比普通深度优先搜索更优。
参考文献
[1] Lu Kai, Tang Tao, Gao Chunhai. The Depth-First Optimal Strategy Path Generation Algorithm for Passengers in a Metro Network[J]. Sustainability, 2020, 12(13):1-16.
[2]龚建华深度优先搜索算法及其改进[]现代电子技术2007(22):90-92.
[3]张建旭,蒋燕,刘兴国基于深度优先反向搜索算法确定有效路径集合[J].重庆交通大学学报自然科学版2015, 34(3):93-98.
经过3~5年的飞速发展,目前桌面搜索和移动搜索几乎各占半壁江山,移动搜索大有赶超桌面搜索,成为主要搜索途径之势。2013~2014年中国搜索引擎行业竞争持续升级,百度独领风骚的同时,几大追随者毫不懈怠,持续练就内功,同时借助外力,以期对百度构成威胁...
本文从卷烟企业对信息数据检索的需求出发,论述了基于Solr开发出符合自身企业的搜索引擎的可行性,介绍了有关搜索引擎及Solr的相关知识。...
0引言信息检索系统主要为互联网用户提供对资源的检索服务,用户通过输入自己想要寻找的资源信息(诸如资源的部分名称,资源内容中相关关键词等),信息检索系统根据用户提供的检索需求进行资源匹配和资源定位,并按照一定的顺序将匹配的资源反馈给用户。搜...
1引言互联网的深入发展带来了各种类型信息资源数量的快速膨胀。截至2014年6月,我国拥有273万个网站,3.3亿个IPv4地址[1].面对浩瀚巨量的网络资源,用户通过搜索引擎快速获取所需信息尤为重要。目前,我国搜索引擎用户达4.9亿;网民平均使用...
1引言在线社交网络是一种在信息网络上由社会个体集合及个体之间的连接关系构成的社会性结构。在线社交网络可分为4类:1)即时消息类应用,是一种提供在线实时通信的平台,如QQ、微信等;2)在线社交类应用,是一种提供在线社交关系的平台,如Facebook...
1、引言近年来,随着数字化教育浪潮的不断推进,我国在教育资源建设方面已经取得了巨大的成就,各类教育资源的数量巨大且呈现几何级数增长。随着搜索引擎技术的发展,通用搜索引擎的功能变得日益强大,取得了很大的成功,但其仍有局限性,如搜索的深度不够,...
上世纪中页,传播学家麦克卢汉曾在《理解媒介:论人的延伸》中提出:媒介是人感觉能力的延伸或扩展。这一经典概念的重要意义,在于将人的单一感官和媒体的传播特征进行了对应。例如,从视角延伸到印刷媒介,从听觉延伸到广播以及视、听觉共同延伸到电视。而...
搜索引擎经历近30年的发展,目前在使用的有几种类型,如全文搜索引擎、分类目录搜索引擎、多元搜索引擎、集成搜索引擎等。但这些都是网络上的公用商业搜索引擎,它们往往不能满足企业的需要。...
第4章模型构建及假设提出。本章在前两章文献综述和理论分析的基础上,结合访谈的结果提出了搜索引擎优化方法和效果的维度,并构建了两者的概念模型,提出了各研究变量之间的假设关系。4.1访谈。访谈法是指研究者通过面对面、QQ等访谈方式,与受访者...
在搜索引擎技术的发展之下,智能检索作为一个新型的检索方式已经渗透到了网络数据的设计中,该种检测方式能够帮助人们检测出高质量的信息,是检索方式发展的一种必然需求,将数据挖掘技术应用在网络资源可以实现智能检索的发展,也能够为人们提供出更加具有针对性...