㈠ 启发式搜索算法一定能找到最优解吗
看情况。具体算法具体分析,有些可以,有些不一定。
㈡ 启发式搜索算法的产生背景
何谓启发式搜索算法
在说它之前先提状态空间搜索。状态空间搜索,如果按专业点的说法就是将问题求解过程表现为从初始状态到目标状态寻找这个路径的过程。通俗点说,两点之间求一线路,这两点是求解的开始和问题的结果,而这一线路不一定是直线,可以是曲折的。由于求解问题的过程中分枝有很多,主要是求解过程中求解条件的不确定性,不完备性造成的,使得求解的路径很多这就构成了一个图,我们说这个图就是状态空间。问题的求解实际上就是在这个图中找到一条路径可以从开始到结果。这个寻找的过程就是状态空间搜索。
常用的状态空间搜索有深度优先和广度优先。深度优先是从初始状态一层一层向下找,直到找到目标为止。广度优先是按照一定的顺序前查找完一个分支,再查找另一个分支,以至找到目标为止。这两种算法在数据结构书中都有描述,可以参看这些书得到更详细的解释。
前面说的广度和深度优先搜索有一个很大的缺陷就是他们都是在一个给定的状态空间中穷举。这在状态空间不大的情况下是很合适的算法,可是当状态空间十分大,且不预测的情况下就不可取了。他的效率实在太低,甚至不可完成。在这里就要用到启发式搜索了。
㈢ 贪心算法是不是启发式搜索
使用网络Hi可以第一时间收到“提问有新回答”“回答被采纳”“网友求助”的通知。查看详情
您想在自己的网站上展示网络“知道”上的问答吗?来获取免费代码吧!
投诉或举报,请到网络知道投诉吧反馈。
功能意见建议,请到知道意见社吧反馈。
㈣ 什么是启发式算法(转)
启发式方法(试探法)是一种帮你寻求答案的技术,但它给出的答案是具有偶然性的(subjecttochance),因为启发式方法仅仅告诉你该如何去找,而没有告诉你要找什么。它并不告诉你该如何直接从A点到达B点,它甚至可能连A点和B点在哪里都不知道。实际上,启发式方法是穿着小丑儿外套的算法:它的结果不太好预测,也更有趣,但不会给你什么30
天无效退款的保证。
驾驶汽车到达某人的家,写成算法是这样的:沿167
号高速公路往南行至Puyallup;从SouthHillMall出口出来后往山上开4.5
英里;在一个杂物店旁边的红绿灯路口右转,接着在第一个路口左转;从左边褐色大房子的车道进去,就是NorthCedar路714号。
用启发式方法来描述则可能是这样:找出上一次我们寄给你的信,照着信上面的寄出地址开车到这个镇;到了之后你问一下我们的房子在哪里。这里每个人都认识我们——肯定有人会很愿意帮助你的;如果你找不到人,那就找个公共电话亭给我们打电话,我们会出来接你。
从上面的启发式算法的解释可以看出,启发式算法的难点是建立符合实际问题的一系列启发式规则。启发式算法的优点在于它比盲目型的搜索法要高效,一个经过仔细设计的启发函数,往往在很快的时间内就可得到一个搜索问题的最优解,对于NP问题,亦可在多项式时间内得到一个较优解。
㈤ 粒子群算法属于启发式搜索算法吗
启发式算法实际上就是针对具体问题,加入了人的经验的最优求解算法.不同的问题,有不同的启发规则.遗传算法、粒子群算法这一类算法某种程度上可以归为启发
㈥ 什么是启发式或探索法
什么是启发式或探索法(heuristic)
名词解释
Heuristics,我喜欢的翻译是“探索法” ,而不是“启发式”,因为前者更亲民一些,容易被理解。另外,导致理解困难的一个原因是该词经常出现在一些本来就让人迷糊的专业领域语境中,例如,经常看到某某杀毒软件用启发式方法查毒,普通民众本来就对杀毒软件很敬畏,看到“启发式”就更摸不着北了。
实际上,这个词的解释十分简单,例如,查词典,可以看到:
The use of experience and practical efforts to find answers to questions or to improve performance
heuristic,将其定义为基于经验的技巧(technique),用于解决问题、学习和探索。并对该词进行了更详尽的解释并罗列了多个相关领域:
A heuristic method is used to rapidly come to a solution that is hoped to be close to the best possible answer, or 'optimal solution'. A heuristic is a "rule of thumb", an ecated guess, an intuitive judgment or simply common sense.
A heuristic is a general way of solving a problem. Heuristics as a noun is another name for heuristic methods.
Heuristic可以等同于:实际经验估计(rule of thumb)、有依据的猜测(ecated guess, a guess beased on a certain amount of information, and therefore likely to be right)和常识(由经验得来的判断力)。
一个容易理解的解释
人在解决问题时所采取的一种根据经验规则进行发现的方法。其特点是在解决问题时,利用过去的经验,选择已经行之有效的方法,而不是系统地、以确定的步骤去寻求答案。启发式解决问题的方法是与算法相对立的。算法是把各种可能性都一一进行尝试,最终能找到问题的答案,但它是在很大的问题空间内,花费大量的时间和精力才能求得答案。启发式方法则是在有限的搜索空间内,大大减少尝试的数量,能迅速地达到问题的解决。但由于这种方法具有尝试错误的特点,所以也有失败的可能性。科学家的许多重大发现,常常是利用极为简单的启发式规则。
计算机科学和认知科学领域
上节内容很抽象,不知道这个heuristics能干什么,在网络上搜索关于heuristics的相关知识起源于某位朋友说我的一个系统设计是一种启发式的。我真不知道他到底有何所指,暂时也没有机会做深入沟通。在网络上搜索,看到一篇好文章,有关物理符号系统和启发式搜索,可以看出该文作者是有自己的理解的,不是像我这样在网络上surfing。
因为暂时没有时间仔细阅读和理解,看看这篇文章《什么是启发式(heuristic)?》也许能够增加一点直观印象,尤其它举的例子(用以比较启发式方法和算法)
驾驶汽车到达某人的家,写成算法是这样的:沿167 号高速公路往南行至Puyallup;从South Hill Mall 出口出来后往山上开 4.5 英里; 在一个杂物店旁边的红绿灯路口右转,接着在第一个路口左转;从左边褐色大房子的车道进去,就是North Cedar 路714 号。
用启发式方法来描述则可能是这样:找出上一次我们寄给你的信,照着信上面的寄出地址开车到这个镇;到了之后你问一下我们的房子在哪里。 这里每个人都认识我们——肯定有人会很愿意帮助你的;如果你找不到人,那就找个公共电话亭给我们打电话,我们会出来接你。
㈦ 经典的启发式算法包括哪些
蚁群,模拟退火,禁忌搜索,人工神经网络等。。。
推荐教材《现代优化计算方法》第二版 邢文训,谢金星 清华大学出版社
另一本补充,《最优化理论与方法》 黄平 清华大学出版社
第一本教材网上有电子版,你自己搜下
㈧ 启发式搜索全局择优搜索和局部择优搜索的区别是什么
根据问题的实际情况不断寻找可利用的知识,从而构造成一条代价较少的推理路线,使问题得到圆满解决的过程称为搜索。
寻找问题的解的一种可靠的方法是首先列出所有候选解,然后依次检查每一个解,即可以找到所需要的问题的答案。这是一种“万能”的方法,理论上,当候选解的数量可以穷尽并且通过检查所有或部分候选解能够得到所需解时,问题就能得到解决。
但是,在实际应用中,因为候选解的数量通常都非常大(比如指数级),并且计算机的速度和内存都有限制,因此对问题不加分析的穷尽算法通常只能解决规模很小的问题。
在实际运用中常采用回溯和分枝定界法对问题进行求解。按照这两种方法对候选解进行系统检查通常会使问题的求解时间大大减少(无论对于最坏情形还是对于一般情形)。这二种方法由于都是按规定的路线进行,基本没有使用与问题有关的启发性信息,属于盲目搜索策略。在涉及人工职能的有些问题如博弈问题时,还会用到启发是搜索策略,如A*算法等。
一、回溯法和分枝限界法
问题的表示
状态空间表示法是表示问题及其搜索过程的一种形式表示方法。可以用解空间树来表示问题的结构。 对于一棵树,树中的每一个结点确定所求问题的一个问题状态,由根结点到其它结点的所有路径确定了这个问题的状态空间。解状态是一些问题状态S,对于这些问题状态,由根到S的那条路径确定了这解空间的一个元组。答案状态则是由解状态到根的路径。
对于一种状态空间树,可以先系统地生成问题的状态,接着确定问题状态的解状态,最后确定那些解状态是答案状态从而将这些问题解出。
从根结点开始解问题,如果已经生成一个结点而它的所有儿子结点还没有全部生成,则这个结点叫做活结点。当前正在生成其儿子的活结点叫E结点,不再进一步扩展或者其儿子结点已经全部生成的生成结点就是死结点。
回溯算法使用深度优先方法搜索树结构,而分枝定界一般用宽度优先方法来搜索这些树。
回溯方法的步骤如下:
1) 定义一个解空间,它包含问题的解。
2) 用适于搜索的方式组织该空间。
3) 用深度优先法搜索该空间,利用限界函数避免移动到不可能产生解的子空间。
回溯算法的特性是在搜索执行的同时产生解空间。在搜索期间的任何时刻,仅保留从开始节点到当前E -节点的路径。因此,回溯算法的空间需求为O(从开始节点起最长路径的长度)。
分枝限界法的步骤和回溯的唯一区别是采用了宽度优先的方法来搜索树,因此分枝法消耗的空间比回溯法要多。
这二种搜索策略从本质上来讲都是属于穷尽法的搜索,由于在搜索路径上的不同也造成这二种方法各自都有其优缺点、适用的求解问题也就不同。
宽度优先占有优势的问题:
九宫重排问题
九宫重排问题是一个可以回溯法和分枝法都能解决的问题。但是,对于这个问题运用分枝法是有利的。
九宫重排问题,在3*3的方格棋盘上放置标由数字1、2、3、4、5、6、7、8共8个棋子,初始状态为S 0 ,目标状态为Sg ,当找到一个解时结束搜索。
从根结点到叶子结点的路径即为解,算法为空格左移,空格上移,空格右移,空格下移。
S0
Sg
2
8
3
1
2
3
1
4
8
4
7
6
5
7
6
5
用宽度优先搜索,如下图:
f'(x) = g(x) + h(x)
2 8 3
14
7 6 5
2 8 3
1 4
7 6 5
23
1 8 4
7 6 5
3 8 2
1 6 4
75
3 8 2
1 4
7 6 5
8 3
2 1 4
7 6 5
3 8 2
14
7 6 5
82
2 1 4
7 6 5
2 3 4
1 8
7 6 5
1 2 3
8 4
7 6 5
2 3
1 8 4
7 6 5
2 3
1 8 4
7 6 5
2 8 3
1 6 4
7 5
2 8 3
1 6 4
7 5
3 8 2
14
7 6 5
2 8 3
1 6
7 5 4
2 8 3
6 4
1 7 5
2 8 3
1 4 5
76
28
1 4 3
7 6 5
2 8 3
1 4 5
7 6
28
1 4 3
7 6 5
2 8 3
7 1 4
6 5
2 8 3
74
6 1 5
8 1 3
24
7 6 5
8 3 2
2 1 4
7 6 5
1 2 3
84
7 6 5
16
26
9
8
7
6
2
1
S0
4
3
5
Sg
图示解的路径是 S0-3-8-16-26(Sg)
宽度优先搜索的盲目性较大,当目标结点距离初始结点较远时将会产生许多无用结点,空间浪费较大,搜索效率低,但是只要问题有解,用宽度优先搜索总可以得到解,而且得到的路径最短的解。
用深度优先策略搜索,如下图:
2 8 3
14
7 6 5
2 8 3
1 4
7 6 5
23
1 8 4
7 6 5
3 8 2
1 6 4
7 5
3 8 2
1 4
7 6 5
2 8 3
1 6 4
7 5
2 8 3
1 6 4
7 5
2 8 3
1 6
7 5 4
1
S0
2
2 8
1 6 3
7 5 4
2 8 1 6 3
7 5 4
2 8
1 6 3
7 5 4
3
4
5
6
在深度优先搜索中,搜索一旦进入某个分枝,就将沿着该分枝一直向下搜索,如果该节点恰好在此分支上,则可较快地得到解。但是,如果目标节电不在此分支上,而该分支又是一个无穷分支,则就不可能得到解。
显然该问题用宽度优先搜索的策略是较好的。
经典的N皇后问题
N皇后问题要求求出N个皇后在棋盘上的所有摆法,(该问题很多书籍上都有详细介绍,这儿图表省略),该问题是适合用回溯法来描述和解决的问题,通过深度优先搜索至多需要检索N!个元组,而如果用分枝法,因为要生成所有问题的解,则必须储存检索过程中的E结点,造成储存空间的极度膨胀,这类问题明显是用回溯法占优势的。
回溯法和分枝法是基本的搜索策略,大多数情况下如果找不到更好的解决方案,总是可以用这二种方法尝试。
但是它们有一个很大的缺陷就是都是在一个给定的状态空间中穷举。这在状态空间不大的情况下是很合适的算法,可是当状态空间十分大,且不预测的情况下就不可取了。它的效率实在太低,甚至不可完成。
二、启发式搜索算法
通常在搜索中能直接运用回溯、分枝法的问题并不多,回溯和分枝的过程中,施加一定的条件,对搜索过程中出现的结点进行判断,可以提高效率。
启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无畏的搜索路径,提到了效率。在启发式搜索中,对位置的估价是关键。采用了不同的估价可以有不同的效果。
启发式搜索有很多的算法,如:局部择优搜索法、最好优先搜索法等等。A*也是。这些算法都使用了启发函数,但在具体的选取最佳搜索节点时的策略不同。
局部择优搜索法,就是在搜索的过程中选取“最佳节点”后舍弃其他的兄弟节点,父亲节点,而一直得搜索下去。这种搜索的结果很明显,由于舍弃了其他的节点,可能也把最好的节点都舍弃了,因为求解的最佳节点只是在该阶段的最佳并不一定是全局的最佳。
局部择优搜索法它是对深度优先搜索方法的一种改进。
全局择优搜索是 局部择优搜索的一种改进,试图克服局部择优搜索的的局限性。再搜索时,每次总是从全体的活结点中选取一个估价值最小的节点,
在搜索过程中,启发式搜索的关键是要确定下一个要考察的节点,用于估价节点重要性的函数称为估价函数
f'(x) = g(x) + h(x)
其中g(x)为从初始节点So到节点X已经实际付出的代价;h(x)是从节点X到节点Sg的最优路径的估计代价。h(x)称为启发函数。
九宫重排
当用全局择优搜索求解该问题时,可以设估价函数为 f'(x) = d(x) + h(x)
d(x)表示节点x的深度,h(x)表示节点x的棋局与目标节点棋局位置不相同的棋子数。
2 8 3
14
7 6 5
2 8 3
1 4
7 6 5
23
1 8 4
7 6 5
3 8 2
1 6 4
75
3 8 2
1 4
7 6 5
8 3
2 1 4
7 6 5
3 8 2
14
7 6 5
1 2 3
8 4
7 6 5
2 3
1 8 4
7 6 5
2 3
1 8 4
7 6 5
1 2 3
84
7 6 5
4
6
4
6
6
4
1
S0
4
4
5
Sg
1 2 3
7 8 4
6 5
5
5
S3
S2
S1
图中节点旁标明的数字是该节点的估价函数值。
该问题的解路径为: So-S1-S2-S3-Sg
以上论述一些树型问题基本的搜索的策略,当问题的状态空间是有向图时,节点的重复将导致大量冗余的搜索,甚至时搜索过程陷入无效的循环而无法找到解,这时就需要对估价函数进行限制,A*算法就是针对图的有序搜索的算法。
问题的求解可以有很多方法,而如何建立数学模型,选择问题的求解方式是十分重要的,方法的好坏是面向一个具体的问题的,需要具体问题具体分析
㈨ 谁能详细介绍一下启发式算法的原理或者方法
整数规划一般是不容易得到最优解的。启发式算法可以在合理的计算时间内得到较解。局域搜索启发式算法应用广泛。局域搜索的一般步骤如下: 从一个初始可行解出发 找出相邻的可行解 从相邻的可行解中找出更好的可行解 地,局域搜索启发式算法会得到一个局部最优解,而这个局部最优解有时就是全局。算法的好与坏都决定于步骤 3。 1.1 模拟退火方法 相邻元素是随机选择的,选上的概率为pn , pn= 1∑。移动的决策取n∈ N标成本和退火概率: c(y)?c(x)??py(x)?eTc(y)φ c(x) pxy= ? ?py(x)?Ct温度梯度是根据一定的规则选择的,比如T (t) =T t() = Calog t或, 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),而提高效率。
启发算法有: 蚁群算法,遗传算法、模拟退火算法等
蚁群算法是一种来自大自然的随机搜索寻优方法,是生物界的群体启发式行为,现己陆续应用到组合优化、人工智能、通讯等多个领域。蚁群算法的正反馈性和协同性使其可用于分布式系统,隐含的并行性更使之具有极强的发展潜力。从数值仿真结果来看,它比目前风行一时的遗传算法、模拟退火算法等有更好的适应性。