当前课程知识点:智能控制 >  第二章 专家控制专题 >  2.1基于搜索的问题求解 >  2.1.10 A星算法

返回《智能控制》慕课在线视频课程列表

2.1.10 A星算法在线视频

下一节: 2.1.11 八数码魔方实例分析

返回《智能控制》慕课在线视频列表

2.1.10 A星算法课程教案、知识点、字幕

为什么最佳优先搜索算法仍然不能得到最优解

它能找到可行解

但不一定能找到最优解

其实我们发现问题关键在于

就是因为忽略了

从初始节点到当前节点这样的代价造成的

所以结合前面那种算法的优点

我们重新定义一个代价估计函数

把它定义为从起始节点到当前节点的实际路径

代价值GN

再加上从当前节点到目标节点的路径代价的估计值

也就是曼哈顿距离

让它俩之和作为评价函数

那么能满足它们之和

也就是说这个代价函数的估计值

是实际的最优值的下界函数

也就是估计值小于实际的自由值

这一条件的搜索算法

我们称为A*算法

那么这是A*算法的算法六它的步骤

第一步

将初始节点ni和它的代价放入OPEN表中

第二步

将OPEN表中的最前面的节点提出来

并设为n如果OPEN表为空

那么求解告终失败

显然这里面如果这个节点就是目标节点

那么就求解成功了

下一步扩展当前节点n得到子节点的集合

把n放入CLOSED表中

第四步对于子节点的集合中

不包含在CLOSED表中的节点配置

指向n′的指针

也就是指向目标节点的指针

计算出从起始节点到当前节点

以及当前节点到目标节点的

前面是实际值后面是估计值

作为它们的代价函数之和

同样进行排序

从小到大进行排序

放到OPEN表中

那这里面如果发现当前节点出现了它的估计值

同样的到达了一个节点

它的代价的总和更小的时候我就要注意更新

通过配置指针解决这个问题

替换一下

后面结合实际例子来解释一下

第五步就返回到第二步

进行一个循环

下面我们还是以这个状态空间图为例

介绍一下A*算法的搜索过程

初始节点是F

目标节点是B

在F节点它有一个子节点就是G

那么这时候G的对应的代价多少呢

我们就要考虑从起始节点到当前节点的实际代价是E

那么从当前节点G到目标节点B的曼哈顿距离

也就是他的估计代价是多少

3加2等于5

所以两个代价加起来是六

这是节点G的代价是六

那么下一步搜索G的时候

产生了两个子节点E和H

E从起始节点F经过G到达E的实际代价是二

另外一方面

从当前节点E到达目标节点B的代价估计值

也就是曼哈顿距离2加2等于4

所以它的代价是六

E是六

H呢

从起始节点F经过G到达当前节点H的代价是三

而H到达目标节点曼哈顿距离估计值也是三

加起来是六

这样的话就得到了OPEN表里面是C6

H也是6

下一个搜索谁呢

我们可以先搜索E

对于E节点来说

它有两个子节点

一个是C一个是A

那么对于C节点来说

F经过G E到C的代价

实际代价是三

然后C到目标节点B的代价估计值

曼哈顿距离也是三

加起来就是六

C 6

A呢F经过GE到A实际代价是六

加上A到目标节点B的代价估计值是二

所以A代价是八

这样的话就得到了

在节点E位置

OPEN表里面就是(H,6)(C,6)(A,8)

下一个搜索谁呢

搜索代价总代价最小的H

我们发现H没有子节点

所以在H节点位置处

OPEN表里面只剩下(C,6)(A,8)

那么下一个搜索谁呢

显然搜索C

搜索C的时候

我们发现它有两个子节点A和D

那么F经过GEC到A

它的实际代价是四

加上A到B的估计值代价二

这就是出现了(A,6)

这样的话原来已经有(A,8)现在出现了(A,6)

所以我们要把咱的(A,8)要替换掉

F经过GEC到A就是(A,6)

不需要F经过G到E到A了

这样找到一个代价更小的值

路径把它替换掉了

而D的代价多少

F经过GEC到D实际代价是五

再加上D到目标节点B的代价是三

所以是D代价是八

这样的话在C这个位置

(A,6)(D,8)

那么下一个搜索A

到A这个位置的时候

我们发现他只有一个子节点B

对B来说

F经过GECA到B它的实际代价是六

而B到目标节点

B的曼哈顿距离是零

所以B仍然是六

D是八仍然保留

下一半就是B了

到B这个位置时候只剩下DE了

OPEN表里面只剩下(D,1)和(D,8)了

其实我们就找到目标节点

然后我们按照蓝色箭头回溯一下

也就是FGECAB就是我们这个问题的答案

找到这个问题的解了

其实我们已经发现了什么

A※算法

由于考虑了从起始节点到当前节点的实际路径代价

以及当前节点到目标节点的曼哈顿距离

也就是它的代价的估计值

也就是说既考虑了过去到现在的实际代价

又考虑了现在的到将来的代价估计值

以这两个之和减小的方向进行搜索

就形成了A※算法

其实他刚好找到了最优解

总结一下

把这三种算法进行比较一下

均一代价搜索算法

它扩展了八次

能找到最优解

而最佳优先搜索算法扩展了六次

并没有找到最优解

找到了一条可行解

因为它只考虑了当前节点到目标节点的曼哈顿距离

也就是估计值

并没有考虑从起始节点到当前节点的实际代价

而A※算法扩展了七次

最终找到了最优解

那么A※算法既考虑到从过去到现在的实际代价

也考虑了从现在到将来的估计代价

这样的话他就找到了最优解

下面我们看一下这张状态空间图

我们研究一下如何采用A※算法进行搜索

对于起始节点F来说

那么它有一个子节点G

那么对于G节点来说

F到G的实际代价是二

G到目标节点B的代价估计值

曼哈顿距离是3加2等于5

所以得到了

这个时候G所对应的代价是2加5等于七

那么下一步搜索结点G它有两个子节点

一个是E和H

F经过G到E的实际代价是三

E到目标节点的曼哈顿距离是四

所以它代价是3加4

而H

F经过G到H的实际代价是四

而H到目标节点的B的代价是三

就是4加3

那么这时候E和H的代价都是七

我们先搜索谁呢

这时候这两个都可以

先搜索

假定先搜索的是E

那么对于节点E来说

它有两个子节点

一个是C一个是A那么H保持不动OPEN表里头

对于C来说

F经过G到E

它的实际代价加上E

到目标节点B的代价估计值

那就是七了

AF经过GE到A

它的实际代价加上A到目标节点B的代价估计值

加起来A就是九

下一步节点E搜索完之后

我们发现(H,7)(C,7)(A,9)

我们可以先考虑搜索H

这时候我们发现H节点没有子节点的

所以剩下(C,7)(A,9)

下一步先搜索C

到C这个位置

我们发现有两个子节点

一个是A一个是D

A我们发现F经过GEAC它的实际代价是五

再加上A到目标节点B的代价是二

所以A这时候总代价是七

而D的代价经过他的F经过GEC到D的实际代价

加上D到目标节点B的代价估计值是九

这样的话在结点C处

OPEN表里面就是(A,7)(D,9)

由于(A,7)比原来的(A,9)小

所以把它替换掉

这样的话下一步搜索谁

显然搜索是A

在A这个位置

它到子节点只有一个就是B

对B来说

起始节点F经过GECA到B实际代价

加上它的曼哈顿距离是零

这样的话B的总代价是七

这样的话OPEN表里面就是(B,7)(D,9)

下一步显示搜索B

其实B就是目标节点已经找到我们的答案了

按照蓝色箭头进行回溯

我们发现FGECAB刚好就是这个问题的解

其实它也是两条可行解中的最优解

智能控制课程列表:

第一章 智能控制课程概论

-开篇

--开篇

-1.1课程考试方式

--1.1课程考试方式

-1.2 数据、信息、知识与智能

--1.2 数据、信息、知识与智能

-1.3传统控制面临的挑战

--1.3 传统控制面临的挑战.

-1.4 控制科学发展过程

--1.4 控制科学发展过程.

-1.5 智能控制的多元论

--1.5

-1.6 控制策略的渗透与融合

--1.6

-1.7 智能控制与传统控制的联系与区别

--1.7

-1.8 智能控制的类型之分级递阶智能控制系统

--1.8

-1.9 智能控制的类型之专家控制系统

--1.9

-1.10 智能控制的类型之模糊控制系统

--1.10

-1.11 智能控制的类型之神经网络控制系统,智能控制的类型之基于规则的仿人智能控制系统,集成智能控制系统,组合智能控制

--1.11

-1.12智能控制系统的类型之基于规则的仿人智能控制系统,集成智能控制系统,组合智能控制

--1.12

-1.13本章小结

--1.13

-第一章测试

第二章 专家控制专题

-2.1基于搜索的问题求解

--2.1.1 搜索与人工智能的关系

--2.1.2 算法1 随机搜索

--2.1.3 算法2 引入CLOSED表.

--2.1.4 算法3 引入OPEN表.

--2.1.5 纵向搜索算法(深度优先搜索)

--2.1.6 横向搜索算法(广度优先搜索)

-- 2.1.7 均一代价搜索

--2.1.8 启发式搜索

--2.1.9 登山法和最佳优先搜索.

-- 2.1.10 A星算法

-- 2.1.11 八数码魔方实例分析

-2.2 专家系统简介

--2.2.1 专家系统简介(上)

--2.2.2 专家系统简介(下)

- 2.3 专家PID

--2.3.1 专家PID (上)

--2.3.2 专家PID (下)

-第二章测试

第三章 模糊控制的理论基础

-3.1 模糊控制概述

--3.1.1 模糊控制概述

-3.2 模糊集合

--3.2.1 模糊集合(上)

--3.2.2 模糊集合(中)

--3.2.3 模糊集合(下)

-3.3 隶属函数

--3.3隶属函数.

-3.4 模糊关系及其运算

--3.4模糊关系及其运算

-第三章测试

第四章 模糊控制

- 4.1 模糊自适应整定PID控制原理

--4.1.1 模糊自适应整定PID控制原理(上)

--4.1.2 模糊自适应整定PID控制原理(下)

-4.2 基于FF的模糊PID控制试验验证

-- 4.2.1 基于FF的模糊PID控制试验验证(上)

-- 4.2.2 基于FF的模糊PID控制试验验证(下)

-第四章测试

第五章 神经网络的理论基础

- 5.1 神经网络简介

--5.1 神经网络简介

- 5.2 神经网络的发展简史

--5.2 神经网络的发展简史

-5.3 神经网络的基本概念

--5.3 神经网络的基本概念

- 5.4 神经网络的分类

--5.4 神经网络的分类

-5.5 神经网络的学习算法、基本特征和研究领域

--5.5 神经网络的学习算法、基本特征和研究领域

-第五章测试

第六章 典型神经网络

-6.1 感知器

--6.1.1 感知器的数学模型.

--6.1.2.1 感知器应用实例分析(实现逻辑运算与或非)

--6.1.2.2 感知器应用实例分析(实现逻辑运算异或)

- 6.2 BP神经网络

--6.2.1.1 BP神经网络简介(上)

--6.2.1.2 BP神经网络简介(中)

--6.2.1.3 BP神经网络简介(下)

--6.2.2.1 BP神经网络应用实例分析之一:逻辑运算异或实现

--6.2.2.2 BP神经网络应用实例分析之二:非线性函数拟合

-第六章测试

第七章 遗传算法及其应用

- 7.1 什么是遗传算法

--7.1 什么是遗传算法

-7.2 遗传算法的特点

--7.2 遗传算法的特点

-7.3 遗传算法的基本操作之复制

--7.3 遗传算法的基本操作之复制

-7.4 遗传算法的基本操作之交叉与变异

--7.4 遗传算法的基本操作之交叉与变异

-第七章测试

第八章 遗传编程

-8.1 遗传编程工作原理

--8.1 遗传编程工作原理

-8.2 遗传编程基本操作之复制

--8.2 遗传编程基本操作之复制

-8.3 遗传编程基本操作之交换和突变

--8.3 遗传编程基本操作之交换和突变

- 8.4 遗传编程的工作步骤及实例分析

-- 8.4 遗传编程的工作步骤及实例分析

-第八章测试

期末测试

-期末测试

2.1.10 A星算法笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。