① 基本算法——深度优先搜索(DFS)和广度优先搜索(BFS)
深度优先搜索和广度优先搜索,都是图形搜索算法,它两相似,又却不同,在应用上也被用到不同的地方。这里拿一起讨论,方便比较。
一、深度优先搜索
深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法,英文缩写为DFS即Depth First Search。深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。一般用堆数据结构来辅助实现DFS算法。其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。
基本步奏
(1)对于下面的树而言,DFS方法首先从根节点1开始,其搜索节点顺序是1,2,3,4,5,6,7,8(假定左分枝和右分枝中优先选择左分枝)。
(2)从stack中访问栈顶的点;
(3)找出与此点邻接的且尚未遍历的点,进行标记,然后放入stack中,依次进行;
(4)如果此点没有尚未遍历的邻接点,则将此点从stack中弹出,再按照(3)依次进行;
(5)直到遍历完整个树,stack里的元素都将弹出,最后栈为空,DFS遍历完成。
二、广度优先搜索
广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历算法这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。基本过程,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。如果所有节点均被访问,则算法中止。一般用队列数据结构来辅助实现BFS算法。
基本步奏
(1)给出一连通图,如图,初始化全是白色(未访问);
(2)搜索起点V1(灰色);
(3)已搜索V1(黑色),即将搜索V2,V3,V4(标灰);
(4)对V2,V3,V4重复以上操作;
(5)直到终点V7被染灰,终止;
(6)最短路径为V1,V4,V7.
② 谈谈几种接触搜索算法的比较麻烦告诉我
接触分析计算主要是接触界面的搜寻方法和法向接触力的计算问题.
常见的有主从面法、级域法和一体化算法 是接触点的搜索算法,这三种算法中,最早的是主从面法,主从面法中从节点不允许穿透主动面,但主动面上的接触点可以穿透从动面。故主从面法只需搜寻与主动面接触的节点。主从面法的一个缺陷是——不能处理同一个接触面内发生的情况,比如子接触问题。与其他两种方法相比,主从面法只考虑接触体中一半的接触点,所以其计算工作量是比较小的。级域法在相互靠近的接触块中寻找接触对;一体化算法总是在所有的接触块中寻找。由于计算方法的不同,这三种方法计算时间依赖于接触面的大小。另一方面主从法之所以被广泛采用,是他的缺桐算法很成熟,编程也容易,而级域法需要从高到低逐级进行,编程就很困难,而且其矢量化运算能凳扮凯力也不行。
所以总体来说,一体化算法是最优越的。
除了这三种算法,还有一些别的算法:比如 BCM,边界搜索,近些年一些智能算法也被广泛引入进来!
除了接触点的搜寻算法,常用的接触力算法为:拉格朗日乘子法和罚函数法。拉格朗日乘子法不允许接触边界的互相穿透,能准确描述几何约束条件,是一种精确的接触力算法,但它与显式算法不相容,要求特殊的数值处理。但该方法在枣唤每个接触点处要求引入乘子,导致系统自由度的增加,使计算效率降低。而罚函数法允许接触面之间的互相穿透,并通过罚子将接触力大小和接触边界的穿透量联系起来,接触力正比于边界穿透量。此方法比较简单单也适合于显式算法,能在系统自由度不增加的情况下进行数值求解。但它影响显式算法中的临界时间步长。罚因子的好坏还影响计算结果的可靠性。
③ 深度优先搜索和广度优先搜索、A星算法三种算法的区别和联系
1、何谓启发式搜索算法
在说它之前先提提状态空间搜索.状态空间搜索,如果按专业点的说法就是将问题求解过程表现为从初始状态到目标状态寻找这个路径的过程.通俗点说,就是 在解一个问题时,找到一条解题的过程可以从求解的开始到问题的结果(好象并不通俗哦).由于求解问题的过程中分枝有很多,定性,不完备性造成的,使得求解的路径很多这就构成了一个图,我们说这个图就是状态空间.问题的求解实际上就是在这个图中找到一条路径可以从开始到结果.这个寻找的过程就是状态空间搜索.
常用的状态空间搜索有深度优先和广度优先.广度优先是从初始状态一层一层向下找,直到找到目标为止.深度优先是按照一定的顺序前查找完一个分支,再查找另一个分支,以至找到目标为止.这两种算法在数据结构书中都有描述,可以参看这些书得到更详细的解释.
前面说的广度和深度优先搜索有一个很大的缺陷就是他们都是在一个给定的状态空间中穷举.这在状态空间不大的情况下是很合适的算法,可是当状态空间十分大,且不预测的情况下就不可取了.他的效率实在太低,甚至不可完成.在这里就要用到启发式搜索了.
启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标.这样可以省略大量无畏的搜索路径,提 到了效率.在启发式搜索中,对位置的估价是十分重要的.采用了不同的估价可以有不同的效果.我们先看看估价是如何表示的.
启发中的估价是用估价函数表示的,如:
f(n) = g(n) + h(n)
其中f(n) 是节点n的估价函数,g(n)实在状态空间中从初始节点到n节点的实际代价,h(n)是从n到目标节点最佳路径的估计代价.在这里主要是h(n)体现了搜 索的启发信息,因为g(n)是已知的.如果说详细点,g(n)代表了搜索的广度的优先趋势.但是当h(n) >> g(n)时,可以省略g(n),而提高效率.这些就深了,不懂也不影响啦!我们继续看看何谓A*算法.
2、初识A*算法
启发式搜索其实有很多的算法,比如:局部择优搜索法、最好优先搜索法等等.当然A*也是.这些算法都使用了启发函数,但在具体的选取最佳搜索节点时的 策略不同.象局部择优搜索法,就是在搜索的过程中选取“最佳节点”后舍弃其他的兄弟节点,父亲节点,而一直得搜索下去.这种搜索的结果很明显,由于舍弃了 其他的节点,可能也把最好的节点都舍弃了,因为求解的最佳节点只是在该阶段的最佳并不一定是全局的最佳.最好优先就聪明多了,他在搜索时,便没有舍弃节点 (除非该节点是死节点),在每一步的估价中都把当前的节点和以前的节点的估价值比较得到一个“最佳的节点”.这样可以有效的防止“最佳节点”的丢失.那么 A*算法又是一种什么样的算法呢?其实A*算法也是一种最好优先的算法.只不过要加上一些约束条件罢了.由于在一些问题求解时,我们希望能够求解出状态空 间搜索的最短路径,也就是用最快的方法求解问题,A*就是干这种事情的!我们先下个定义,如果一个估价函数可以找出最短的路径,我们称之为可采纳性.A* 算法是一个可采纳的最好优先算法.A*算法的估价函数可表示为:
f'(n) = g'(n) + h'(n)
这里,f'(n)是估价函数,g'(n)是起点到终点的最短路径值,h'(n)是n到目标的最断路经的启发值.由于这个f'(n)其实是无法预先知道 的,所以我们用前面的估价函数f(n)做近似.g(n)代替g'(n),但 g(n)>=g'(n)才可(大多数情况下都是满足的,可以不用考虑),h(n)代替h'(n),但h(n)
④ 百度和Google的搜索算法,技术有何差异
网络是中国的,谷歌是美国的。各有侧重不能不可比较。技术都是一样的侧重不同罢了。网络侧重的是中国民俗,谷歌是侧重美国民俗。因为国情国法不同所以无可能比较量级。【搜索引擎技术是硬件加软件。硬件是实际使用的机器,软件是程序编程】搜索产品搜索引擎产品其实包括很多种类,并不限于我们最熟悉的全网搜索引擎。简单分类罗列一下:*全网搜索:包括市场份额最高的几大搜索引擎巨头,Google,Yahoo,Bing。*中文搜索:在中文搜索市场中,网络一家独大,其它几家如搜狗、搜搜、有道,市场份额相对还比较小。*垂直搜索:在各自的垂直领域成为搜索入口的,购物的淘宝,美食的大众点评,旅游的去哪儿,等等。*问答搜索:专注于为问句式提供有效的答案,比如Ask.com;其它的如问答社区像Quora和国内的知乎,应该也会往这方面发展。*知识搜索:典型代表就是WolframAlpha,区别于提供搜索结果列表,它会针对查询提供更详细的整合信息。*云搜索平台:为其它产品和应用提供搜索服务托管平台(SaaS或是PaaS),Amazon刚刚推出它的CloudSearch,IndexTank在被Linkedin收购之前也是做这项服务。*其它:比始DuckDuckGo,主打隐私保护,也有部分用户买帐。各种搜索产品在各自领域都需要解决特定的技术和业务问题,所以也可以建立相对通用搜索的优势,来得到自己的市场和用户。搜索技术搜索引擎所涉及和涵盖的技术范围非常广,涉及到了系统架构和算法设计等许多方面。可以说由于搜索引擎的出现,把互联网产品的技术水平提高到了一个新的高度;搜索引擎无论是在数据和系统规模,还是算法技术的研究应用深度上,都远超之前的简单互联网产品。列举一些搜索引擎所涉及到的技术点:*爬虫(Crawling)*索引结构(InvertedIndex)*检索模型(VSM&TF-IDF)*搜索排序(RelevanceRanking&Evaluation)*链接分析(LinkAnalysis)*分类(Document&QueryClassification)*自然语言处理(NLP:Tokenization,Lemmatization,POSTagging,NER,etc.)*分布式系统(DistributedProcessing&Storage)*等等虽然搜索引擎涉及的技术方方面面,但归结起来最关键的几点在于:*系统:大规模分布式系统,支撑大规模的数据处理容量和在线查询负载*数据:数据处理和挖掘能力*算法:搜索相关性排序,查询分析,分类,等等系统搜索引擎系统是一个由许多模块组成的复杂系统。核心模块通常包括:爬虫,索引,检索,排序。除了必需的核心模块之外,通常还需要一些支持辅助模块,常见的有链接分析,去重,反垃圾,查询分析,等等。[附图:搜索系统架构概念模型]*爬虫从互联网爬取原始网页数据,存储于文档服务器。*文档服务器存储原始网页数据,通宵是分布式Key-Value数据库,能根据URL/UID快速获取网页内容。*索引读取原始网页数据,解析网页,抽取有效字段,生成索引数据。索引数据的生成方式通常是增量的,分块/分片的,并会进行索引合并、优化和删除。生成的索引数据通常包括:字典数据,倒排表,正排表,文档属性等。生成的索引存储于索引服务器。*索引服务器存储索引数据,主要是倒排表。通常是分块、分片存储,并支持增量更新和删除。数据内容量非常大时,还根据类别、主题、时间、网页质量划分数据分区和分布,更好地服务在线查询。*检索读取倒排表索引,响应前端查询请求,返回相关文档列表数据。*排序对检索器返回的文档列表进行排序,基于文档和查询的相关性、文档的链接权重等属性。*链接分析收集各网页的链接数据和锚文本(AnchorText),以此计算各网页链接评分,最终会作为网页属性参与返回结果排序。*去重提取各网页的相关特征属性,计算相似网页组,提供离线索引和在线查询的去重服务。*反垃圾收集各网页和网站历史信息,提取垃圾网页特征,从而对在线索引中的网页进行判定,去除垃圾网页。*查询分析分析用户查询,生成结构化查询请求,指派到相应的类别、主题数据服务器进行查询。*页面描述/摘要为检索和排序完成的网页列表提供相应的描述和摘要。*前端接受用户请求,分发至相应服务器,返回查询结果[附图:爬虫系统架构]爬虫系统也是由多个模块构成:*URLScheler存储和高度待爬取的网页地址。*Downloader根据指定的网页列表爬取网页内容,存储至文档服务器。*Processer对网页内容进行简单处理,提取一些原始属性,为爬取的后续操作服务。*TrafficController爬取流量控制,防止对目标网站在短时间内造成过大负载[附图:搜索系统架构实例:Google这是Google早期的一张系统架构图,可以看出Google系统的各模块基本和前面概念模型一致。所以一个完整的全网搜索系统的大致系统架构是类似的,区别和竞争力体现在细节实现和优化上。数据除了搜索引擎系统提供了系统支撑外,搜索结果质量很大程度上依赖于源数据的数量和质量,以及数据处理的能力。全网数据的主要来源通常是从互联网上进行自动爬取,从一些高质量的种子站点开始,并沿网页链接不断,收集巨量的网页数据;这通常能达到数据在数量的要求,但也不可避免混入了大量的低质量网页。除了自动爬取来的数据外,搜索引擎的数据来源还可以来自人工收集、合作伙伴提供、第三方数据源和API、以及购买;这些来源通常会有更好的质量保证,但在数量规模和覆盖率上会相对少一些,可以和爬取的数据形成有效的互补。收集到足量的原始数据后,需要进行各种数据处理操作,把原始数据转换成在线检索需要的数据。这个过程通常包括:网页分析,数据抽取,文本处理和分词,索引及合并;最终生成的数据会包括:词典,倒排表,正排表,文档权重和各种属性。最终生成的数据要布署上相应的在线检索服务器上,通常会进行数据分区和分片布署,数据内容更丰富时还可能根据内容分类和主题进行分别布署,比如新闻时效类的网页可能就会独立布署,针对性地响应时效类的查询[附图:索引数据:字典、倒排表、正排表]这张图来源于Google早期的索引数据结构,包括词典、倒排表、正排表。算法有了相当数量的高质量数据之后,搜索结果的质量改进就取决于搜索算法的准确性上。现在的搜索引擎通常通过向量空间模型(VSM=VectorSpaceModel)来计算查询和各文档之间的文本相似性;即把查询或文档抽象成一个词向量,然后再计算向量在向量空间中的夹角,可以用余弦公式得出,作为文本相似度的度量值。在基本的向量空间模型基础上通常会进一步加入词的权重值进行改进,通过经典的TF-IDF公式得出,即词频(TF)乘上逆文档频率(IDF);其中TF=TermFrequency,即该词在所在文档中的出现次数;IDF=InvertDocumentFrequency,即包含该词的文档数除以总文档数,再取反,通常还会取对数来降维,这个值值越大表示这个词越能代表文档特征。除了通过向量空间模型得出的文本匹配评分外,每个文档还会有自己本身的质量评分,通常由网页链接数据计算得出,代表了该网页本身的流行度权重。最终的评分会以文本匹配的查询时动态评分和文档静态评分为基础计算得出;搜索引擎的评分计算都会考虑很多因素,但这两项通常是评分计算的基础。有了确定的排序算法后,另一个重要的任务就是评估搜索结果的质量。由于搜索结果的好与坏是一个比较主观的过程,所以进行定量的评估并不容易。常见的做法是通过事先选定一批查询,通过人工评估或是预先设定标准值的方式,逐个评估每个设定查询搜索结果,最终得到一个统计结果,作为搜索算法的评估度量。另一类做法是直接通过线上的用户点击数据来统计评估搜索结果质量,或是通过A/B测试来比较两种排序算法的点击效果来衡量。合理而有效的评估方法,是搜索算法可以不断改进和比较的前提。查询分析是另一个对搜索结果影响很大的方面,主要任务是把用户的查询文本转换成内部的结构化的搜索请求。涉及的处理可能包括基本的分词处理,专有名词的识别和提取,或是查询模式的识别,或是查询分类的识别。这些处理的准确性将能极大地改进搜索请求的方式,进一步影响搜索结果的相关性和质量。开源方案近年来在搜索公司内部搜索系统和技术的改进和发展的同时,一批开源的搜索系统和解决方案也逐渐发展和成熟起来。当然开源系统在功能全面性、复杂性和规模上都不能与专业的搜索引擎系统相比,但对于中小企业的搜索应用来说应该已经能很好地满足需求,而且也成功应用到了一些大规模的产品系统中(比如Twitter的搜索就使用和改进了Lucene)。现在比较常见的开源搜索解决方案有:*LuceneLucene自然是现在最流行,使用度最高的搜索开源方案。它用Java开发,以索引和检索库的方式提供,可以很容易地嵌入需要的应用中。*Solr&SolrCloudSolr是Lucene的子项目,同属Apache软件基金会项目;它是基于Lucene之上实的一个完整的搜索服务应用,提供了大量的搜索定制功能,可以满足大部分的搜索产品需求。SolrCloud是Solr为了加强其分布式服务能力而开发的功能,目前还在开发阶段,将在Solr4.0发布。*Zoie&Sensei(Linkedin)Zoie是Linkedin公司在Lucene基础上实现的准实时索引库,通过加入额外的内存索引,来达到准实时索引的效果。Sensei是Linkedin公司在Zoie基础上实现的分布式搜索服务,通过索引分区来实现分布式搜索服务。*ElasticSearchElasticSearch也是刚推出不久的一个基于Lucene实现的分布式搜索服务,据说在分布式支持和易用性上都有不错的表现。因为还比较年轻,真实的应用应该还不多,需要观察。因为也是基于Lucene的分布式开源搜索框架,基本上会与SolrCloud和Sensei形成正面竞争关系。*其它开源产品除了Lucene家族以外,还有一些其它的开源产品,比如Sphinx和Xapian,也有不少的应用;但近年来的更新频率和社区活跃度都不太能和Lucene系的产品相比。*托管平台除了开源产品外,现在还出现了一些基于云计算和云服务的搜索服务,比如Amazon新近推了的CloudSearch,还有更早一些的IndexTank(已被Linkedin收购)。这类服务无需自己布置搜索系统,直接使用在线服务,按需付费,所以也将是开源产品的替代方案和竞争对手。附几张上面提到的开源系统的概念模型和架构图:[附图:Lucene概念模型][附图:Lucene工作流程][附图:Sensei系统架构][附图:SolrCloud系统架构]现状与未来:传统的搜索引擎经过了十几年的发展,目前在技术和产品上都已走向逐渐稳定和成熟,通用搜索的市场也基本进入饱和,不像早些年一直呈现高增长率。同时,在各个垂直领域,也出现了很多和产品结合的很好的垂直搜索产品,比如淘宝的购物搜索,大众点评的美食搜索,去哪儿和酷讯的旅游搜索等,也都在各自领域占据了相当大的市场,成为除了通用搜索引擎之外的重要的用户入口。在开源领域,各种开源产品和解决方案也逐渐发展成熟,通用搜索技术不再为大公司所专有,中小企业能够以较低的成本实现自己的搜索应用。现在搜索引擎产品之间的竞争的在数据、应用方式和产品形态上,在系统架构和基本算法上区分并不大。搜索引擎在未来发展上,一是搜索将不仅仅以独立产品的形式出现,的会作为搜索功能整合到的产品和应用中。在产品形态上,基于传统的搜索引擎,会演化出像推荐引擎,知识引擎,决策引擎等形式的产品,更好地满足和服务用户需求。而搜索引擎所涉及和发展起来的各种技术,会更广泛地应用到各种基它产品上,比如自然语言处理,推荐和广告,数据挖掘,等等。总之,搜索引擎对互联网技术和产品带来的影响是巨大的,未来也仍将有很大的发展和应用空间。
⑤ 几种搜索引擎算法研究
2.1Google和PageRank算法
搜索引擎Google最初是斯坦福大学的博士研究生Sergey Brin和Lawrence Page实现的一个原型系统[2],现在已经发展成为WWW上最好的搜索引擎之一。Google的体系结构类似于传统的搜索引擎,它与传统的搜索引擎最大的不同处在于对网页进行了基于权威值的排序处理,使最重要的网页出现在结果的最前面。Google通过PageRank元算法计算出网页的PageRank值,从而决定网页在结果集中的出现位置,PageRank值越高的网页,在结果中出现的位置越前。
2.1.1PageRank算法
PageRank算法基于下面2个前提:
前提1:一个网页被多次引用,则它可能是很重要的;一个网页虽然没有被多次引用,但是被重要的网页引用,则它也可能是很重要的;一个网页的重要性被平均的传递到它所引用的网页。这种重要的网页称为权威(Authoritive)网页。
前提2:假定用户一开始随机的访问网页集合中的一个网页,以后跟随网页的向外链接向前浏览网页,不回退浏览,浏览下一个网页的概率就是被浏览网页的PageRank值。
⑥ 禁忌搜索算法与传统优化算法的区别
背景:禁忌搜索算法(Tabu Search)是由美国科罗拉多州大学的Fred Glover教授在1986年左右提出来的,是一个用来跳出局部最优的搜寻方法。在解决最优问题上,一般区分为两种方式:一种是传统的方法,另一种方法则是一些启发式搜索算法。
使用传统的方法,我们必须对每一个问题都去设计一套算法,相当不方便,缺乏广泛性,优点在于我们可以证明算法的正确性,我们可以保证找到的答案是最优的;而对于启发式算法,针对不同的问题,我们可以套用同一个架构来寻找答案,在这个过程中,我们只需要设计评价函数以及如何找到下一个可能解的函数等,所以启发式算法的广泛性比较高,但相对在准确度上就不一定能够达到最优,但是在实际问题中启发式算法那有着更广泛的应用
⑦ 百度和Google的搜索算法,技术有何差异
我们直接分析博百优在网络和谷歌首页排名情况,就可以知道,网络与谷歌的排名算法有较大的出入,不过随着时间的推移,这种差异会越来越小,毕竟搜索引擎排名的核心思想都是差不多的,都是给用户提供最实用的信息。
一、分析谷歌与网络的细节异同
1、从这次比赛看来,谷歌对新站有特别照顾机会,前期会获得不错的排名,不过,慢慢的又会降下来,网络虽然对新站也有特别照顾机会,不过和老网站比起来,这些机会几乎看不到了。
2、网络的老站权重继承
很明显,这次比赛,大部分人都是通过修改标题形式参赛,所以在短时间内都在网络获得不错的排名,这都利益于老站权重的继承,看谁原站的权重高,在前期就排的最前面,谷歌似乎这种情况不太明显,改了标题后,就会从新对你考察,考察你的相关内容是否丰富,是否相关性很强,在决定你的排名情况,而不考虑以前权重有多高。
3、虽然网络和谷歌对外链的数量和质量影响网站权重的重要因素,但谷歌更注重外链的质量上,如果你的站外链质量非常多,一般都能获得不错的排名。
4、对原创文章的分析上,谷歌分析水平比网络更高,对原创质量要求更高,伪原创分辩能力更强。这一点不得不承认谷歌技术的先进。
5、谷歌对主域名排名更具有优先权,博百优官方网子论坛,虽然外链和内容上都远远超过其它参赛站点,但在谷歌前几页都找不到博百优官方网子论坛,期重要原因是谷歌对主域名具有更高的权重。
二、分析以下几个重要因素的异同
1、原创方面
网络和谷歌对原创都非常看重,内容为王,这是永久的真理,不过谷歌对原创文章质量分析能力更强。
2、外链方面
无论是网络和谷歌,外链绝对是影响排名的重要因素,质量比数量更重要,但谷歌更看重高质量的外链,对排名的作用会更大一些。
3、内容相关性方面
无论哪个搜索引擎,内容与主题越相关,排名肯定更有优势,,但放在一起对比,发现,谷歌对内容高度相关的站点,更具有排名优先权。而网络可能还会去考察其它因素。
4、快照方面
这一点二者都一样,快照越新,相应权重会越高一些,但要在其它重要因素的前提下才能发挥作用。这个分析并不是很权威,有些可能和大家所想的有出入,不过没关系,这个分析是初版,以后会总结和分析出更完美版,请关注!
⑧ 搜索算法中,A算法A*算法的区别(急)
a*算法:a*(a-star)算法是一种静态路网中求解最短路径最有效的直接搜索方法。估价值与实际值越接近,估价函数取得就越好
a*
(a-star)算法是一种静态路网中求解最短路最有效的直接搜索方法。
注意是最有效的直接搜索算法。之后涌现了很多预处理算法(alt,ch,hl等等),在线查询效率是a*算法的数千甚至上万倍。
公式表示为:
f(n)=g(n)+h(n),
其中
f(n)
是从初始点经由节点n到目标点的估价函数,
g(n)
是在状态空间中从初始节点到n节点的实际代价,
h(n)
是从n到目标节点最佳路径的估计代价。
保证找到最短路径(最优解的)条件,关键在于估价函数f(n)的选取:
估价值h(n)<=
n到目标节点的距离实际值,这种情况下,搜索的点数多,搜索范围大,效率低。但能得到最优解。并且如果h(n)=d(n),即距离估计h(n)等于最短距离,那么搜索将严格沿着最短路径进行,
此时的搜索效率是最高的。
如果
估价值>实际值,搜索的点数少,搜索范围小,效率高,但不能保证得到最优解。