什么是启发式?什么是产生式?

简介: 一般而言,​机器常常被设定从已知推未知,而人们不时会从未知(假设)推未知,特殊情形下也有从未知推已知的,这些推导中常见的有产生式和启发式,那么究竟什么是产生式和启发式呢?!下面会进行简要地分析和说明。

image

一般而言,​机器常常被设定从已知推未知,而人们不时会从未知(假设)推未知,特殊情形下也有从未知推已知的,这些推导中常见的有产生式和启发式,那么究竟什么是产生式和启发式呢?!下面会进行简要地分析和说明。

启发式算法(heuristic algorithm)是相对于最优化算法提出的。一个问题的最优算法求得该问题每个实例的最优解。启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度一般不能被预计。

计算机科学的两大基础目标,就是发现可证明其执行效率良好且可得最佳解或次佳解的算法。而启发式算法则试图一次提供一或全部目标。 例如它常能发现很不错的解,但也没办法证明它不会得到较坏的解;它通常可在合理时间解出答案,但也没办法知道它是否每次都可以这样的速度求解。

有时候人们会发现在某些特殊情况下,启发式算法会得到很坏的答案或效率极差,然而造成那些特殊情况的数据组合,也许永远不会在现实世界出现。因此现实世界中启发式算法常用来解决问题。启发式算法处理许多实际问题时通常可以在合理时间内得到不错的答案。

有一类的通用启发式策略称为元启发式算法(metaheuristic),通常使用乱数搜寻技巧。他们可以应用在非常广泛的问题上,但不能保证效率。

近年来随着智能计算领域的发展,出现了一类被称为超启发式算法(Hyper-Heuristic Algorithm)的新算法类型。最近几年,智能计算领域的著名国际会议(GECCO 2009, CEC 2010,PPSN 2010)分别举办了专门针对超启发式算法的workshop或session。从GECCO 2011开始,超启发式算法的相关研究正式成为该会议的一个领域(self* search-new frontier track)。国际智能计算领域的两大著名期刊Journal of Heuristics和Evolutionary Computation也在2010年和2012年分别安排了专刊,着重介绍与超启发式算法有关的研究进展。

最短路径

所谓的最短路径问题有很多种意思, 在这里启发式指的是一个在一个搜寻树的节点上定义的函数h(n),用于评估从此节点到目标节点最便宜的路径。启发式通常用于资讯充分的搜寻算法,例如最好优先贪婪算法与A。最好优先贪婪算法会为启发式函数选择最低代价的节点;A则会为g(n) + h(n)选择最低代价的节点,此g(n)是从起始节点到目前节点的路径的确实代价。如果h(n)是可接受的(admissible)意即h(n)未曾付出超过达到目标的代价,则A*一定会找出最佳解。

最能感受到启发式算法好处的经典问题是n-puzzle。此问题在计算错误的拼图图形,与计算任两块拼图的曼哈顿距离的总和以及它距离目的有多远时,使用了本算法。注意,上述两条件都必须在可接受的范围内。

运算效能

任何的搜寻问题中,每个节点都有b个选择以及到达目标的深度d,一个毫无技巧的算法通常都要搜寻bd个节点才能找到答案。启发式算法借由使用某种切割机制降低了分叉率(branching factor)以改进搜寻效率,由b降到较低的b'。分叉率可以用来定义启发式算法的偏序关系,例如:若在一个n节点的搜寻树上,h1(n)的分叉率较h2(n)低,则 h1(n) < h2(n)。启发式为每个要解决特定问题的搜寻树的每个节点提供了较低的分叉率,因此它们拥有较佳效率的计算能力。

新算法

如何找到一个分叉率较少又通用的合理启发式算法,已被人工智能社群深入探究过。 他们使用几种常见技术:

部分问题的解答的代价通常可以评估解决整个问题的代价,通常很合理。例如一个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产生的启发式算法优于任何先前存在的!而且它也发现了第一个有用的解魔术方块的启发式程式。

产生式 由条件和动作组成的指令,即所谓的条件—活动规则,(condition—action 简称C-A规则)。

在计算机中指Tiger编译器将源程序经过词法分析(Lexical Analysis)和语法分析(Syntax Analysis)后得到的一系列符合文法规则(Backus-Naur Form,BNF)的语句,包含在由Andrew W.Appel在Modern Compiler Implementation(虎书)一书中首次提出的”Tiger编译程序“中。

产生式是表征程序性知识的最小单位,是指人脑中贮存的一系列如果—那么形式表示的规则。一个产生式是一个由条件和动作组成的指令,即所谓的条件—活动规则,(condition—action 简称C-A规则)。

在计算机中指Tiger编译器将源程序经过词法分析(Lexical Analysis)和语法分析(Syntax Analysis)后得到的一系列符合文法规则(Backus-Naur Form,BNF)的语句,包含在由Andrew W.Appel在Modern Compiler Implementation(虎书)一书中首次提出的”Tiger编译程序“中。

“产生式”这一术语是在1943年由美国数学家E.L.Post首先提出的,它根据串替代规则提出了一种称为Post机的计算模型,模型中的每一条规则称为产生式。

产生式通常用于表示具有因果关系的知识,其基本形式为:P→Q 或者 IF P THEN Q

人类的认知模式常常是启发式,机器的计算模式往往是产生式。

原文发布时间:2019-12-06
本文作者:人机与认知实验室
本文来自阿里云云栖号&云栖社区合作伙伴“人机与认知实验室”,了解相关信息可以关注“人机与认知实验室

相关文章
|
机器学习/深度学习 人工智能 算法
优化搜索算法:遗传算法的应用
随着计算机科学和人工智能领域的迅速发展,优化算法成为了解决各种复杂问题的重要工具之一。在这篇博客中,我们将讨论一种强大的优化算法——遗传算法(Genetic Algorithm)的应用。
188 0
|
6月前
|
算法 机器人 Java
常用的启发式算法
常用的启发式算法
70 0
|
11月前
|
算法
蒙特卡罗算法
蒙特卡罗算法
|
机器学习/深度学习 人工智能 算法
算法分类
算法分类
179 3
|
前端开发 算法 定位技术
基于遗传算法的多目标优化
目前的多目标优化算法有很多,Kalyanmoy Deb的带精英策略的快速非支配排序遗传算法(nondominated sorting genetic algorithm I,NSGA-II)无疑是其中应用最为广泛也是最为成功的一种。MATLAB R2009a版本提供的函数gamultiobj所采用的算法就是基于NSGA-Ⅱ改进的一种多目标优化算法(a variant of NSGA-ⅡI)。函数gamultiobj的出现,为在MATLAB平台下解决多目标优化问题提供了良好的途径。
|
机器学习/深度学习 传感器 算法
基于类帕累托贯序抽样算法求解单目标优化问题附matlab代码
基于类帕累托贯序抽样算法求解单目标优化问题附matlab代码
|
机器学习/深度学习 人工智能 算法
强化学习基础篇【1】:基础知识点、马尔科夫决策过程、蒙特卡洛策略梯度定理、REINFORCE 算法
强化学习基础篇【1】:基础知识点、马尔科夫决策过程、蒙特卡洛策略梯度定理、REINFORCE 算法
 强化学习基础篇【1】:基础知识点、马尔科夫决策过程、蒙特卡洛策略梯度定理、REINFORCE 算法
|
算法 知识图谱
基于粒子群算法的多目标优化
在实际工程优化问题中,多数问题是多目标优化问题。相对于单目标优化问题,多目标优化问题的显著特点是优化各个目标使其同时达到综合的最优值。然而,由于多目标优化问题的各个目标之间往往是相互冲突的,在满足其中一个目标最优的同时,其他的目标往往可能会受其影响而变得很差。因此,一般适用于单目标问题的方法难以用于多目标问题的求解。
|
机器学习/深度学习 传感器 算法
基于组合多策略改进的自适应哈里斯鹰算法求解单目标优化问题CEHHO附matlab代码
基于组合多策略改进的自适应哈里斯鹰算法求解单目标优化问题CEHHO附matlab代码
|
机器学习/深度学习 传感器 算法
基于蜘蛛黄蜂优化器 (SWO)求解单目标优化问题附matlab代码
基于蜘蛛黄蜂优化器 (SWO)求解单目标优化问题附matlab代码
下一篇
无影云桌面