盲目搜索算法,也称为无信息搜索,是一种只依据预定的搜索策略进行搜索,而不考虑问题特性的方法。通常适用于简单的问题求解,其中较为常见的包括宽度优先搜索算法和深度优先搜索。
启发式算法常见问题 启发式算法的概念
启发式算法常见问题 启发式算法的概念
启发式算法常见问题 启发式算法的概念
启发式算法常见问题 启发式算法的概念
宽度优先搜索算法(BFS)以队列实现,从根开始遍历,遍历完再按照同样的方式遍历下一层。其优点在于能够找到短路径,并且如果短路径存在,则可以保证找到。但其缺点在于可能需要遍历许多无用,导致时间开销高。
深度优先搜索算法(DFS)以栈实现,从根开始遍历至深层,直至找到目标或无可扩展为止。其优点在于空间复杂度低,但其缺点在于可能会漏掉短路径,因此不适合用于求短路径的问题。
启发式搜索算法则是基于具有启发性的搜索策略,例如利用问题领域知识,结合评估函数来指导搜索方向,从而更加高效地求解复杂问题。其中典型的启发式搜索算法包括A搜索算法等。
相比盲目搜索算法,启发式搜索算法具有更高的效率和准确性,但会涉及到问题领域的先验信息和评估函数设计等问题,因此也存在一些缺点和局限性,例如易受局部解影响、评估函数的不确定性和复杂度高等。
启发式算法与元启发式算法对区别在于是否存在“随机因素”。 对一个同样的问题,启发式算法(heuristics)只要给定了一个输入,那么算法执行的步骤就固定下来了,输出也因此固定,多次运算结果保持一致。
而元启发式算法(meta-heuristics)里面包括了随机因素,如GA中的交叉因子,模拟退火中的metropolis准则,这些随机因素也使得算法有一定概率跳出局部解而去尝试全局解,因此元启发式算法在固定的输入下,而输出是不固定的。
启发式算法(Heuristic Algorigthm)是一种基于直观或经验构造的算法,在可接受的花费(指计算时间、计算空间等)给出待解决优化问题的每一实例的一个可行解,该可行解与与解的偏离程度一般不可以事先预计。
启发式算法是一种技术,这种算法可以在可接受的计算费用内找到的解,但不一定能保证所得到解的可行性及性,甚至大多数情况下无法阐述所得解与解之间的近似程度。
元启发式算法(MetaHeuristic Algorigthm)是启发式算法的改进,它是随机算法与局部搜索算法相结合的产物,常见的启发式算法包括遗传算法、模拟退火算法、搜索算法及神经网络算法等。
新兴的元启发式算法有、粒子群优化算法、分进化算法,蚁群优化算法、萤火虫算法、布谷鸟算法、和声搜索算法、分进化算法、随机蛙跳算法、细菌觅食算法、蝙蝠算法的算法等。
什么是启发式算法
大自然是神奇的,它造就了很多巧妙的手段和运行机制。受大自然的启发,人们从大自然的运行规律中找到了许多解决实际问题的方法。对于那些受大自然的运行规律或者面向具体问题的经验、规则启发出来的方法,人们常常称之为启发式算法(HeuristicAlgorithm)。现在的启发式算法也不是全部来自然的规律,也有来自人类积累的工作经验。驾驶汽车到达某人的家,写成算法是这样的:沿167 号高速公路往南行至阳谷;从阳谷高速出口出来后往山上开4.5 英里;在一个杂物店旁边的红绿灯路口右转,接着在个路口左转;从左边褐色大房子的车道进去,就是某人的家。启发式方法来描述则可能是这样:找出上一次我们寄给你的信,照着信上面的寄出地址开车到这个镇;到了之后你问一下我们的房子在哪里。这里每个人都认识我们—顶肯定有人会很愿意帮助你的;如果你找不到人,那就找个公共电话亭给我们打电话,我们会出来接你。
什么是启发式算法
建议你去了解下a算法吧
简而言之就是会有一个评估函数进行评价以辅助选出接
经典的启发式算法包括哪些? 5分
蚁群,模拟退火,搜索,人工神经网络等。。。
教材《现代优化计算方法》第二版 邢文训,谢金星 清华大学出版社
另一本补充,《化理论与方法》 黄平 清华大学出版社
本教材网上有电子版,你自己搜下
对 启发式算法的理解
什么是启发式算法转自:p:
解决实际的问题,要建模型,在求解。求解要选择算法,只有我们对各种算法的优缺点都很熟悉后才能根据实际问题选出有效的算法。但是对各种算法都了如指掌是不现实的,但多知道一些,会使你的选择集更大,找出算法的概率越大。现在研一,要开题了些点文献综述,愿与大家分享。大自然是神奇的,它造就了很多巧妙的手段和运行机制。受大自然的启发,人们从大自然的运行规律中找到了许多解决实际问题的方法。对于那些受大自然的运行规律或者面向具体问题的经验、规则启发出来的方法,人们常常称之为启发式算法(Heuristic Algorithm)。现在的启发式算法也不是全部来自然的规律,也有来自人类积功的工作经验。启发式算法的发展:
启发式算法的计算量都比较大,所以启发式算法伴随着计算机技术的发展,取得了巨大的成就。
40年代:由于实际需要,提出了启发式算法(快速有效)。
50年代:逐步繁荣,其中 贪婪算法和局部搜索 等到人们的关注。
60年代: 反思,发现以前提出的启发式算法速度很快,但是解得质量不能保证,而且对大规
模的问题仍然无能为力(收敛速度慢)。启发式算法的不足和如何解决方法:
(水平有限 仅仅提出6点)
启发式算法目前缺乏统一、完整的理论体系。
很难解决! 启发式算法的提出就是根据经验提出,没有什么坚实的理论基础。
由于NP理论,启发式算法就解得全局性无法保证。
等NP?=P有结果了再说吧,不知道这个世纪能不能行。
各种启发式算法都有个自优点如何,完美结合。
如果你没有实际经验,你就别去干这个,相结合就要做大量尝试,或许会有意外的收获。
启发式算法中的参数对算法的效果起著至关重要的作用,如何有效设置参数。
还是那句话,这是经验活但还要悟性,只有try again………..
启发算法缺乏有效的迭代停止条件。
还是经验,迭代次数100不行,就200,还不行就1000…………
还不行估计就是算法有问题,或者你把它用错地方了………..
启发式算法收敛速度的研究等。
你会发现,没有完美的东西,要快你就要付出代价,就是越快你得到的解也就远。其中(4)集中反映了超启发式算法的克服局部的能力。虽然人们研究对启发式算法的研究将近50年,但它还有很多不足:1.启发式算法目前缺乏统一、完整的理论体系。2.由于NP理论,各种启发式算法都不可避免的遭遇到局部的问题,如何判断3.各种启发式算法都有个自优点如何,完美结合。4.启发式算法中的参数对算法的效果起著至关重要的作用,如何有效设置参数。5.启发算法缺乏有效的迭代停止条件。6.启发式算法收敛速度的研究等。
70年代:计算复杂性理论的提出,NP问题。许多实际问题不可能在合理的时间范围内找到全局解。发现贪婪算法和局部搜索算法速度快,但解不好的原因主要是他们只是在局部的区域内找解,等到的解没有全局性。
由此必须引入新的搜索机制和策略………..
Holland的遗传算法出现了(Genetic Algorithm)再次引发了人们研究启发式算法的
兴趣。
80年代以后:
模拟退火算法(Simulated Annealing Algorithm),人工神经网络(Artificial Neural Network),搜索(Tab......
什么是启发式算法(转)
启发式方法(试探法)是一种帮你寻求的技术,但它给出的是具有偶然性的(subjecttochance),因为启发式方法仅仅告诉你该如何去找,而没有告诉你要找什么。它并不告诉你该如何直接从A点到达B点,它甚至可能连A点和B点在哪里都不知道。实际上,启发式方法是穿着小丑儿外套的算法:它的结果不太好预测,也更有趣,但不会给你什么30
天无效退款的保证。
驾驶汽车到达某人的家,写成算法是这样的:沿167
号高速公路往南行至Puyallup;从SouthHillMall出口出来后往山上开4.5
英里;在一个杂物店旁边的红绿灯路口右转,接着在个路口左转;从左边褐色大房子的车道进去,就是NorthCedar路714号。
用启发式方法来描述则可能是这样:找出上一次我们寄给你的信,照着信上面的寄出地址开车到这个镇;到了之后你问一下我们的房子在哪里。这里每个人都认识我们——肯定有人会很愿意帮助你的;如果你找不到人,那就找个公共电话亭给我们打电话,我们会出来接你。
从上面的启发式算法的解释可以看出,启发式算法的难点是建立符合实际问题的一系列启发式规则。启发式算法的优点在于它比盲目型的搜索法要高效,一个经过仔细设计的启发函数,往往在很快的时间内就可得到一个搜索问题的解,对于NP问题,亦可在多项式时间内得到一个较优解。
启发式算法的短路径
所谓的短路径问题有很多种意思, 在这里启发式指的是一个在一个搜寻树的上定义的函数h(n),用于评估从此到目标的路径。启发式通常用于资讯充分的搜寻算法,例如优先贪婪算法与A。优先贪婪算为启发式函数选择代价的;A则会为g(n) + h(n)选择代价的,此g(n)是从起始到目前的路径的确实代价。如果h(n)是可接受的(admissible)意即h(n)未曾付出超过达到目标的代价,则A一定会找出佳解。能感受到启发式算法好处的经典问题是n-puzzle。此问题在计算错误的拼图图形,与计算任两块拼图的曼哈顿距离的总和以及它距离目的有多远时,使用了本算法。注意,上述两条件都必须在可接受的范围内。
什么启发式算法可以短时间求到解
马踏棋盘的问题很早就有人提出,且早在1823年,J.C.Warnsdorff就提出了一个有名的算法。在每个结点对其子结点进行选取时,优先选择‘出口’小的进行搜索,‘出口’的意思是在这些子结点中它们的可行子结点的个数
启发式算法的新算法
如何找到一个分叉率较少又通用的合理启发式算法,已被人工智能社群深入探究过。 他们使用几种常见技术:部分问题的解答的代价通常可以评估解决整个问题的代价,通常很合理。例如一个10-puzzle拼盘,解题的代价应该与将1到5的方块移回正确位置的代价不多。通常解题者会先建立一个储存部份问题所需代价的模式数据库(pattern database)以评估问题。 解决较易的近似问题通常可以拿来合理评估原先问题。例如曼哈顿距离是一个简单版本的n-puzzle问题,因为我们设可以移动一个方块到我们想要的位置,而暂不考虑会移到其他方块的问题。 给我们一群合理的启发式函式h1(n),h2(n),...,hi(n),而函式h(n) = max{h1(n),h2(n),...,hi(n)}则是个可预测这些函式的启发式函式。 一个在1993年由A.E. Prieditis写出的程式ABSOLVER就运用了这些技术,这程式可以自动为问题产生启发式算法。ABSOLVER为8-puzzle产生的启发式算法优于任何先前存在的!而且它也发现了个有用的解魔术方块的启发式程式。
启发式算法的概括内容
计算机科学的两大基础目标,就是发现可证明其执行效率良好且可得佳解或次佳解的算法。而启发式算法则试图一次提供一或全部目标。 例如它常能发现很不错的解,但也没办法证明它不会得到较坏的解;它通常可在合理时间解出,但也没办法知道它是否每次都可以这样的速度求解。有时候人们会发现在某些特殊情况下,启发式算得到很坏的或效率极,然而造成那些特殊情况的数据组合,也许永远不会在现实世界出现。因此现实世界中启发式算法常用来解决问题。启发式算法处理许多实际问题时通常可以在合理时间内得到不错的。有一类的通用启发式策略称为元启发式算法(metaheuristic),通常使用乱数搜寻技巧。他们可以应用在非常广泛的问题上,但不能保证效率。近年来随着智能计算领域的发展,出现了一类被称为超启发式算法(Hyper-Heuristic Algorithm)的新算法类型。近几年,智能计算领域的会议(GECCO 2009, CEC 2010,PPSN 2010)[1]分别举办了专门针对超启发式算法的workshop或session。从GECCO 2011开始,超启发式算法的相关研究正式成为该会议的一个领域(self search-new frontier track)。智能计算领域的两大期刊Journal of Heuristics和Evolutionary putation也在2010年和2012年分别安排了专刊,着重介绍与超启发式算法有关的研究进展。
什么是启发式
这两天在看关于民航调度的文章,很多文章中都提到“启发式”算法,感觉和智能算法类似,那到底算法呢?我找到如下的一些我认为比较好的解释:------------------------------------------------------------------------------------------------------------------------A heuristic (hyu-'ris-tik) is the art and science of discovery and invention. The word es from the same Greek root as "eureka" meaning "to find". A heuristic for a given problem is a way of directing your attention fruitfully to a solution. It is different from an algorithm in that a heuristic merely serves as a rule-of-thumb or guideline, as oped to an invariant procedure. Heuristics may not always achi the desired oute, but can be extremely valuable to problem-solving processes. Good heuristics can dramatically reduce the time required to solve a problem by eliminating the need to consider unlikely sibilities or irrelevant states. As such, it is particularly useful to those in the process of discovery and the are constantly rinking their strategies in the face of a stubborn unknown.--------------------------------------------------------------------------------------------------------------------------启发式方法(试探法)是一种帮你寻求的技术,但它给出的是具有偶然性的(subject to chance),因为启发式方法仅仅告诉你该如何去找,而没有告诉你要找什么。它并不告诉你该如何直接从A 点到达B 点,它甚至可能连A点和B点在哪里都不知道。实际上,启发式方法是穿着小丑儿外套的算法:它的结果不太好预测,也更有趣,但不会给你什么30 天无效退款的保证。 驾驶汽车到达某人的家,写成算法是这样的:沿167 号高速公路往南行至Puyallup;从South Hill Mall 出口出来后往山上开4.5 英里;在一个杂物店旁边的红绿灯路口右转,接着在个路口左转;从左边褐色大房子的车道进去,就是North Cedar 路714 号。用启发式方法来描述则可能是这样:找出上一次我们......
属于第2章。
常见的启发式的问题解决策略,心理学家阿莫斯·特韦尔斯基和丹尼尔·卡尼曼发现主要可以有两个来代表:一个是叫做代表性的启发式,另外一个叫做可用性的启发式。
代表性的启发式讲的是通常用一些特别鲜明的形象,来帮助我们做出思维和判断;另外一个启发式问题解决的方法,就是可用性的启发式,任何信息如果很快的进到我们的大脑里头,我们就会充分地使用这样的信息。
分类
现代启发式算法的各种具体实现方法是相对提出的,相互之间有一定的区别。从历史上看,现代启发式算法主要有:模拟退火算法(SA)、遗传算法(GA)、列表搜索算法(ST)、进化规划(EP)、进化策略(ES)、蚁群算法(ACA)、人工神经网络(ANN)。如果从决策变量编码方案的不同来考虑,可以有固定长度的编码(静态编码)和可变长度的编码(动态编码)两种方案。
在后端的物理实现中,一些复杂的步骤,比如说placement,则十分困难。要检查一致性是很容易的事情,而得到一个函数的解或者近似解是非常困难的事情,同时这个解的限制条件还很多,面积小,时序,功耗,可以绕线,符合工艺摆放要求。再在比如说,布局阶段产生的Congestion往往会恶化时序Timing,并影响设计的Routability,同时导致布线时可能产生Short或Detour,那么如何选取合适的布局和布线才能减少congestion?对于EDA工具的使用者——后端工程师而言,这些算法的优化效果往往就像玄学一样,很难选取合适的搜索步长,并且多次计算结果往往并不能得到同一个解,甚至有时候得到劣解。此外,让广大后端工程师苦不堪言的是,随着摩尔定律的推进,芯片中集成的晶体管数以亿计而且还在以指数级进行增长,由此导致数据的处理时间以小时为量级。
在机器学习算法引入之前,CAD领域通常都采用启发式算法对以上问题进行求解。启发式算法尝试基于随机选择,在可接受的代价(比如计算时间和空间)下给出待解决组合优化问题的可行解。常见的启发式算法包括搜索(Taboo Search)、模拟退火(Simulated Annealing)、遗传算法(Genetic Algorithm)、人工神经网络(Artificial Neural Networks)等。各种启发式算法在优化机制方面存在着一定的异,但在优化流程上十分相似。这些算法本身都是邻域搜索(Local Search)结构,即算法都是从一个或者一组初始解出发,在关键参数的控制下通过邻域函数产生若干个邻域解,根据一定的接受准则(比如确定性、概率性或混沌方式)来更新当前状态,而后根据当前状态调整关键参数。
版权声明:本文内容由互联。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发 836084111@qq.com 邮箱删除。