人工智能a算法

1.启发式搜索算法A

启发式搜索算法A ,一般简称为A 算法,是一种典型的启发式搜索算法。其基本思想是:定义一个评价函数f ,对当前的搜索状态进行评估,找出一个最有希望的节点来扩展。 评价函数的形式如下:

f (n )=g (n )+h (n )

其中n 是被评价的节点。

f (n )、g (n )和h (n )各自表述什么含义呢?我们先来定义下面几个函数的含义,它们与f (n )、g (n )和h (n )的差别是都带有一个"*"号。

g*(n):表示从初始节点s 到节点n 的最短路径的耗散值; h*(n):表示从节点n 到目标节点g 的最短路径的耗散值;

f*(n)=g*(n)+h*(n):表示从初始节点s 经过节点n 到目标节点g 的最短路径的耗散值。

而f (n )、g (n )和h (n )则分别表示是对f*(n )、g*(n )和h*(n )三个函数值的的估计值。是一种预测。A 算法就是利用这种预测,来达到有效搜索的目的的。它每次按照f(n)值的大小对OPEN 表中的元素进行排序,f 值小的节点放在前面,而f 值大的节点则被放在OPEN 表的后面,这样每次扩展节点时,都是选择当前f 值最小的节点来优先扩展。

利用评价函数f (n )=g (n )+h (n )来排列OPEN 表节点顺序的图搜索算法称为算法A 。

过程A

①OPEN:=(s ),f (s ):=g (s )+h(s );

②LOOP :IF OPEN=( )THEN EXIT(FAIL );

③n:=FIRST (OPEN );

④IF GOAL(n )THEN EXIT(SUCCESS );

⑤REMOVE (n ,OPEN ),ADD (n ,CLOSED );

⑥EXPAND (n )→{mi},计算f (n ,mi )=g (n ,mi )+h(mi );g (n ,mi )是从s 通过n 到mi 的耗散值,f (n ,mi )是从s 通过n 、mi 到目标节点耗散值的估计。

·ADD (mj ,OPEN ),标记mi 到n 的指针。

·IF f(n ,mk )

·IF f(n ,m1)

⑧GO LOOP;

A 算法同样由一般的图搜索算法改变而成。在算法的第7步,按照f 值从小到大对OPEN 表中的节点进行排序,体现了A 算法

的含义。

算法要计算f(n)、g(n)和h(n)的值,g(n)根据已经搜索的结果,按照从初始节点s 到节点n 的路径,计算这条路径的耗散值就可以了。而h(n)是与问题有关的,需要根据具体的问题来定义。有了g(n)和h(n)的值,将他们加起来就得到f(n)的值了。

在介绍一般的图搜索算法时我们就曾经让大家注意过,在这里我们再强调一次,请大家注意A 算法的结束条件:当从OPEN 中取出第一节点时,如果该节点是目标节点,则算法成功结束。而不是在扩展一个节点时,只要目标节点一出现就立即结束。我们在后面将会看到,正是由于有了这样的结束判断条件,才使得A 算法有很好的性质。

算法中f (n )规定为对从初始节点s 出发,约束通过节点n 到达目标点t ,最小耗散值路径的耗散值f*(n)的估计值,通常取正值。f (n )由两个分量组成,其中g (n )是到目前为止,从s 到n 的一条最小耗散值路径的耗散值,是作为从s 到n 最小耗散值路径的耗散值g*(n)的估计值,h (n )是从n 到目标节点t ,最小耗散值路径的耗散值h*(n)的估计值。

设函数k (ni ,nj )表示最小耗散路径的实际耗散值(当ni 到nj 无通路时则k (ni ,nj )无意义),则g*(n )=k (s ,n ),h*(n )=min k (n ,ti ),其中ti 是目标节点集,k (n ,ti )就是从n 到每一个目标节点最小耗散值路径的耗散值,h*(n )是其中最小值的那条路径的耗散值,而具有h*(n )值的路径是n

到ti 的最佳路径。由此可得f*(n )=g*(n )+h*(n )就表示s→ti并约束通过节点n 的最佳路径的耗散值。当n =s 时,f*(s )=h*(s )则表示s→ti无约束的最佳路径的耗散值,这样一来,所定义的f (n )=g(n )+h(n )就是对f*(n)的一个估计。g (n )的值实际上很容易从到目前为止的搜索树上计算出来,不必专门定义计算公式,也就是根据搜索历史情况对g*(n)作出估计,显然有g(n)≥g*(n)。 h(n)则依赖于启发信息,通常称为启发函数,是要对未来扩展的方向作出估计。算法A 是按f(n)递增的顺序来排列OPEN 表的节点,因而优先扩展f (n )值小的节点,体现了好的优先搜索思想,所以算法A 是一个好的优先的搜索策略。图2.6表示出当前要扩展节点n 之前的搜索图,扩展n 后新生成的子节点m1(∈{mj})、m2(∈{mk})、m3(∈{m1})要分别计算其评价函数值:

图2.6 搜索示意图

f(m1)=g(m1)+h(m1)

f(n,m2)=g(n,m2)+h(m2)

f(n,m3)=g(n,m3)+h(m3)

然后按第6步条件进行指针设置和第7步重排OPEN 表节点顺序,以便确定下一次要扩展的节点。

用A 算法来求解一个问题,最主要的就是要定义启发函数h(n)。对于8数码问题,一种简单的启发函数的定义是:

h(n) = 不在位的将牌数

什么是" 不在位的将牌数" 呢?我们来看下面的两个图。

其中左边的图是8数码问题的一个初始状态,右边的图是8数码问题的目标状态。我们拿初始状态和目标状态相比较,看初始状态的哪些将牌不在目标状态的位置上,这些将牌的数目之和,就是" 不在位的将牌数" 。比较上面两个图,发现1、2、6和8四个将牌不在目标状态的位置上,所以初始状态的" 不在位的将牌数" 就是4,也就是初始状态的h 值。其他状态的h 值,也按照此方法计算。

下面再以八数码问题为例说明好的优先搜索策略的应用过程。设评价函数f(n)形式如下:

f(n)=d(n)+W(n)

其中d(n)代表节点的深度,取g(n)=d(n)表示讨论单位耗散的情况;取h(n)=W(n)表示" 不在位" 的将牌个数作为启发函数的度量,这时f(n)可估计出通向目标节点的希望程度。图2.7表示使用这种评价函数时的搜索树,图中括弧中的数字表示该节点的评价函数值f 。算法每一循环结束时,其OPEN 表和CLOSED 表的排列如下:

根据目标节点L 返回到s 的指针,可得解路径S(4),B(5),E(5),I(5),K(5),L(5)

图2.7给出的是使用A 算法求解8数码问题的搜索图。其中A 、B 、C 等符号,只是为了标记节点的名称,没有特殊意义。这些符号旁边括弧中的数字是该节点的评价函数值f 。而圆圈中的值,则表示节点的扩展顺序。

从图中可以看出,在第二步选择节点B 扩展之后,OPEN 表中f 值最小的节点有D 和E 两个节点,他们的f 值都是5。在出现相同的f 值时,A 算法并没有规定首先扩展哪个节点,可以任意选择其中的一个节点首先扩展。

图2.7 八数码问题的搜索树

1.启发式搜索算法A

启发式搜索算法A ,一般简称为A 算法,是一种典型的启发式搜索算法。其基本思想是:定义一个评价函数f ,对当前的搜索状态进行评估,找出一个最有希望的节点来扩展。 评价函数的形式如下:

f (n )=g (n )+h (n )

其中n 是被评价的节点。

f (n )、g (n )和h (n )各自表述什么含义呢?我们先来定义下面几个函数的含义,它们与f (n )、g (n )和h (n )的差别是都带有一个"*"号。

g*(n):表示从初始节点s 到节点n 的最短路径的耗散值; h*(n):表示从节点n 到目标节点g 的最短路径的耗散值;

f*(n)=g*(n)+h*(n):表示从初始节点s 经过节点n 到目标节点g 的最短路径的耗散值。

而f (n )、g (n )和h (n )则分别表示是对f*(n )、g*(n )和h*(n )三个函数值的的估计值。是一种预测。A 算法就是利用这种预测,来达到有效搜索的目的的。它每次按照f(n)值的大小对OPEN 表中的元素进行排序,f 值小的节点放在前面,而f 值大的节点则被放在OPEN 表的后面,这样每次扩展节点时,都是选择当前f 值最小的节点来优先扩展。

利用评价函数f (n )=g (n )+h (n )来排列OPEN 表节点顺序的图搜索算法称为算法A 。

过程A

①OPEN:=(s ),f (s ):=g (s )+h(s );

②LOOP :IF OPEN=( )THEN EXIT(FAIL );

③n:=FIRST (OPEN );

④IF GOAL(n )THEN EXIT(SUCCESS );

⑤REMOVE (n ,OPEN ),ADD (n ,CLOSED );

⑥EXPAND (n )→{mi},计算f (n ,mi )=g (n ,mi )+h(mi );g (n ,mi )是从s 通过n 到mi 的耗散值,f (n ,mi )是从s 通过n 、mi 到目标节点耗散值的估计。

·ADD (mj ,OPEN ),标记mi 到n 的指针。

·IF f(n ,mk )

·IF f(n ,m1)

⑧GO LOOP;

A 算法同样由一般的图搜索算法改变而成。在算法的第7步,按照f 值从小到大对OPEN 表中的节点进行排序,体现了A 算法

的含义。

算法要计算f(n)、g(n)和h(n)的值,g(n)根据已经搜索的结果,按照从初始节点s 到节点n 的路径,计算这条路径的耗散值就可以了。而h(n)是与问题有关的,需要根据具体的问题来定义。有了g(n)和h(n)的值,将他们加起来就得到f(n)的值了。

在介绍一般的图搜索算法时我们就曾经让大家注意过,在这里我们再强调一次,请大家注意A 算法的结束条件:当从OPEN 中取出第一节点时,如果该节点是目标节点,则算法成功结束。而不是在扩展一个节点时,只要目标节点一出现就立即结束。我们在后面将会看到,正是由于有了这样的结束判断条件,才使得A 算法有很好的性质。

算法中f (n )规定为对从初始节点s 出发,约束通过节点n 到达目标点t ,最小耗散值路径的耗散值f*(n)的估计值,通常取正值。f (n )由两个分量组成,其中g (n )是到目前为止,从s 到n 的一条最小耗散值路径的耗散值,是作为从s 到n 最小耗散值路径的耗散值g*(n)的估计值,h (n )是从n 到目标节点t ,最小耗散值路径的耗散值h*(n)的估计值。

设函数k (ni ,nj )表示最小耗散路径的实际耗散值(当ni 到nj 无通路时则k (ni ,nj )无意义),则g*(n )=k (s ,n ),h*(n )=min k (n ,ti ),其中ti 是目标节点集,k (n ,ti )就是从n 到每一个目标节点最小耗散值路径的耗散值,h*(n )是其中最小值的那条路径的耗散值,而具有h*(n )值的路径是n

到ti 的最佳路径。由此可得f*(n )=g*(n )+h*(n )就表示s→ti并约束通过节点n 的最佳路径的耗散值。当n =s 时,f*(s )=h*(s )则表示s→ti无约束的最佳路径的耗散值,这样一来,所定义的f (n )=g(n )+h(n )就是对f*(n)的一个估计。g (n )的值实际上很容易从到目前为止的搜索树上计算出来,不必专门定义计算公式,也就是根据搜索历史情况对g*(n)作出估计,显然有g(n)≥g*(n)。 h(n)则依赖于启发信息,通常称为启发函数,是要对未来扩展的方向作出估计。算法A 是按f(n)递增的顺序来排列OPEN 表的节点,因而优先扩展f (n )值小的节点,体现了好的优先搜索思想,所以算法A 是一个好的优先的搜索策略。图2.6表示出当前要扩展节点n 之前的搜索图,扩展n 后新生成的子节点m1(∈{mj})、m2(∈{mk})、m3(∈{m1})要分别计算其评价函数值:

图2.6 搜索示意图

f(m1)=g(m1)+h(m1)

f(n,m2)=g(n,m2)+h(m2)

f(n,m3)=g(n,m3)+h(m3)

然后按第6步条件进行指针设置和第7步重排OPEN 表节点顺序,以便确定下一次要扩展的节点。

用A 算法来求解一个问题,最主要的就是要定义启发函数h(n)。对于8数码问题,一种简单的启发函数的定义是:

h(n) = 不在位的将牌数

什么是" 不在位的将牌数" 呢?我们来看下面的两个图。

其中左边的图是8数码问题的一个初始状态,右边的图是8数码问题的目标状态。我们拿初始状态和目标状态相比较,看初始状态的哪些将牌不在目标状态的位置上,这些将牌的数目之和,就是" 不在位的将牌数" 。比较上面两个图,发现1、2、6和8四个将牌不在目标状态的位置上,所以初始状态的" 不在位的将牌数" 就是4,也就是初始状态的h 值。其他状态的h 值,也按照此方法计算。

下面再以八数码问题为例说明好的优先搜索策略的应用过程。设评价函数f(n)形式如下:

f(n)=d(n)+W(n)

其中d(n)代表节点的深度,取g(n)=d(n)表示讨论单位耗散的情况;取h(n)=W(n)表示" 不在位" 的将牌个数作为启发函数的度量,这时f(n)可估计出通向目标节点的希望程度。图2.7表示使用这种评价函数时的搜索树,图中括弧中的数字表示该节点的评价函数值f 。算法每一循环结束时,其OPEN 表和CLOSED 表的排列如下:

根据目标节点L 返回到s 的指针,可得解路径S(4),B(5),E(5),I(5),K(5),L(5)

图2.7给出的是使用A 算法求解8数码问题的搜索图。其中A 、B 、C 等符号,只是为了标记节点的名称,没有特殊意义。这些符号旁边括弧中的数字是该节点的评价函数值f 。而圆圈中的值,则表示节点的扩展顺序。

从图中可以看出,在第二步选择节点B 扩展之后,OPEN 表中f 值最小的节点有D 和E 两个节点,他们的f 值都是5。在出现相同的f 值时,A 算法并没有规定首先扩展哪个节点,可以任意选择其中的一个节点首先扩展。

图2.7 八数码问题的搜索树


相关内容

  • 人工智能在智能交通系统中的应用
  • 人工智能在智能交通系统中的应用术 严新平",吴超仲1',刘清∞,马晓风1' 1)武汉理工大学水路公路交通安全控制与装备教育部工程研究中心武汉, 2)武汉理工大学自动化学院,武汉,湖北,430063湖北,430063 ''摘要s智能交通系统是最近十多年发展起来的一个新兴领域,它的核心是智能,需要大量智 ...

  • 算法决策兴起:人工智能时代的若干伦理问题及策略
  • 腾讯研究院 2017-05-24 本文系根据腾讯研究院研究员曹建峰在"全球人工智能技术大会·2017"的分论坛"AI变革时代的智能系统测评分论坛"上的演讲整理而来. 大家好!很荣幸今天有这个机会跟大家分享我自己对人工智能伦理的一些观察和思考.我今天分享的主题是 ...

  • 一起来探究机器人的智能避障算法
  • 一起来探究机器人的智能避障算法 目前智能机器人的避障根据环境信息的掌握程度可以分为障碍物信息已知.障碍物信息部分未知或完全未知两种. 实际生活中,绝大多数的情况下,机器人所处的环境都是动态的.可变的.未知的,为了解决上述问题,人们引入了计算机和人工智能等领域的一些算法.同时得益于处理器计算能力的提高 ...

  • 人工智能启发式图搜索算法
  • 启发式图搜索算法 摘 要:启发式搜索策略概述和有序搜索.启发式搜索弥补盲目搜索的不足,提高搜索效率.一种方法用于排列待扩展节点的顺序,即选择最有希望的节点加以扩展,那么,搜索效率将会大为提高.进行搜索技术一般需要某些有关具体问题领域的特性的信息. 关键词:启发式搜索:估价函数:有序搜索:A*算法: ...

  • 群智能算法发展研究
  • 龙源期刊网 http://www.qikan.com.cn 群智能算法发展研究 作者:张颖等 来源:<科技传播>2014年第09期 摘 要 最优化技术的应用日渐广泛,传统的优化方法对于解决复杂问题变得无能为力.群智能算法在这种背景下产生并迅速发展.目前已研究出许多种类的群智能优化算法,包 ...

  • 浅谈几种智能优化算法
  • ISSN1009-3044 Computer与技术电脑知识与技术ComputerKnowledgeKnowledgeandandTechnologyTechnology电脑知识 Vol.7,No.19,July2011.第7卷第19期(2011年7月)http://www.dnzs.net.cnE- ...

  • 人工智能算法综述
  • 人工智能算法综述 人工智能算法大概包括五大搜索技术,包括一些早期的搜索技术或用于解决比较简单问题的搜索原理和一些比较新的能够求解比较复杂问题的搜索原理,如遗传算法和模拟退火算法等. 一.盲目搜索 盲目搜索又叫做无信息搜索,一般只适用于求解比较简单的问题. 包括图搜索策略,宽度优先搜索和深度优先搜素. ...

  • 2003列车自动驾驶系统控制算法综述_唐涛
  • 第25卷第2期文章编号:1001-8360(2003) 02-0098-05 铁 道 学 报 Vol. 25 No. 2列车自动驾驶系统控制算法综述 唐 涛, 黄良骥 (北方交通大学电子信息工程学院, 北京 100044) 摘 要:介绍了列车自动驾驶系统的基本结构和功能, 并对各控制算法的研究情况与 ...

  • 车辆路径问题的模型及算法研究综述
  • 管 理 工 程 学 报 Vol119,No11 JournalofIndustrialEngineeringΠEngineeringManagement 2005年第1期 外论评介 车辆路径问题的模型及算法研究综述 刘云忠,宣慧玉 (西安交通大学管理学院,陕西西安710049) 摘要:本文在文献[1 ...

  • 路径规划的智能控制
  • (综述报告) 考 核 科 目 :机电系统智能控制 学生所在院(系):机电学院 学生所在学科 :机学生姓名 学号 : 学生类别 :工考 核 结 果 械制学 造 阅卷人 智能控制在机器人领域的应用 遗传算法在移动机器人路径规划上的研究 摘要:近些年来机器人技术飞速发展,对机器人运动的控制要求越来越高,机 ...