本节书摘来自华章计算机《人工智能:计算Agent基础》一书中的第3章,第3.3节,作者:(加)David L.Poole,Alan K.Mackworth 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.3 图搜索

在这一章中,我们将一般搜索机制抽象表示为在有向图中的路径搜索。要解决一个问题,首先定义潜在的搜索空间,然后将搜索算法应用于其中。74许多问题求解的任务都可以转化为在图中寻找路径的问题。图搜索提供了抽象的一个合适层次,用这种抽象,可以研究独立于特定领域的简单问题求解。
一个(有向)图包含一个节点集及一个节点间的有向弧集。其思路是找到一条沿着这些弧从起始节点到目标节点的路径。
因为将问题表示为图不止一种方式,所以抽象很重要。这一章中的例子都是有关状态空间搜索,节点代表状态,弧代表动作,以后的章节中会讨论用图表示问题的不同搜索方式。
形式化图搜索
一个有向图(graph)包括:

  • 一个节点(node)集合N;
  • 一个节点的有序对集合A,叫做弧(arc)。

在这个定义中,节点可以是任何东西。定义的实质是约束弧是节点的有序对。可以有无限多的节点和弧。我们并没有假设图完全明确地表示出来,我们仅需要有一个进程根据需要产生节点和弧。
弧〈n1,n2〉是一条从n1的出弧(outgoing arc)和一条至n2的入弧(incoming arc)。
如果有一条从节点n1到节点n2的弧线,也就是〈n1,n2〉∈A,节点n2就是节点n1的邻居(neighbor)。注意到两点是邻居不意味着对称,因为n2 是n1 的邻居并不意味着n1就必须是n2的邻居。例如,弧可能被标记(lable)为使Agent从一个状态到达另一个状态的动作。
一条从节点s到节点g的路径(path)是一个节点序列〈n0,n1,…,nk〉,节点s=n0,g=nk,〈ni-1,ni〉∈A,即对于每一个i都有从ni-1到ni的弧。有时将路径看做弧的序列很有用,〈n0,n1〉,〈n1,n2〉,…,〈nk-1,nk〉,或者是这些弧的标记序列。
一个环(cycle)是一条起点和终点相同的非空路径,即一个环是一条路径〈n0,n1,n2,…,nk〉,n0=nk且k≠0。一个有向图如果没有任何环就称作有向无环图(directed acyclic graph,DAG)。这可能应该是一个无环的有向图,因为它是有向图但是恰好无环,而不是无环图正好有向,但是有向无环图(DAG)比无环有向图(acyclic directed graph,ADG)听起来更好一些。
树(tree)就是一个有向无环图,其中有一个节点没有入弧,其他每一个节点都正好有一条入弧。没有入弧的节点叫做树的根(root)节点,没有出弧的节点叫叶(leaves)节点。
要将问题编码为图,一个节点集叫做起始节点(start node),另一个节点集叫做目标节点(goal node)。解(solution)就是从起始节点到目标节点的一条路径。
有时会有一个与弧相关的花费(cost),是一个正数,我们将弧〈ni,nj〉的花费记作cost(〈ni,nj〉),弧的花费会引起整个路径的花费。
给定一条路径p=〈n0,n1,n2,…,nk〉,路径p的花费就是路径上弧的花费之和:

cost(p)= cost (〈 n0,n1 〉)+cost(〈n1,n2〉)+…+cost(〈nk-1,nk〉)

最优解(optimal solution)是最低花费的解之一。也就是说,如果存在一条从起始节点到目标节点的路径p,而不存在其他从起始节点到目标节点的路径p′使得cost(p′)


https://yqfile.alicdn.com/95a1520e01d04c61cd0f3a07fadfd3afa8db5d55.png" >

图3-2 带有弧花费的投递机器人域的图【例3-4】 再来看图3-1中描述的投递机器人寻找从位置o103到位置r123的路径问题。在这个图中,感兴趣位置已经标注。为了简化问题,我们只考虑加粗字体指示的位置并且一开始就限定机器人移动的方向。图3-2显示了结果图,在这个图中节点代表位置,弧则表示机器人在位置间的可能做出的每一步移动,且每条弧线上标示出了从一个位置到下一个位置的花费。76
在这个图中,节点集合N={mail,ts,o103,b3,o109,…},弧集合A={〈ts,mail〉,〈o103,ts〉,〈o103,b3〉,〈o103,o109〉,…}。节点o125没有相邻节点,节点ts有一个相邻节点,即mail。节点o103有三个相邻节点,即ts、b3和o109。
这样从o103到r123就有三条路径:

〈o103,o109,o119,o123,r123〉
〈o103,b3,b4,o109,o119,o123,r123〉
〈o103,b3,b1,b2,b4,o109,o119,o123,r123〉

如果o103是起始节点,r123是目标节点,那么这三条路径都是图搜索问题的解。
很多问题中搜索图没有明确给出,要根据需要动态架构。所有搜索算法都要求遵循的原则是:从一个节点生成它的邻居(子节点),然后确定它是否是目标节点。
一个节点的前向分支系数(forward branching factor)是指离开该节点的弧(出弧)的数目,而它的后向分支系数(backward branching factor)则是指进入该节点的弧(入弧)的数目。这些系数提供了图的复杂度的测量标准。当我们讨论搜索算法的时间和空间复杂度时,假定分支系数最高值(自上而下)由一个常数来界定。
【例3-5】 在图3-2中,节点o103的前向分支系数是3,即从o103有三条出弧。节点o103的后向分支系数是0,即无入弧指向节点o103。mail前向分支系数为0,后向分支系数为1。节点b3前向分支系数为2,后向分支系数为1。
分支系数很重要,因为它是决定图大小的关键因素。如果每一个节点前向分支系数是b,且是树型图,那么该图中有bn个节点,当前节点离任意节点的弧的段数是n。

《人工智能:计算Agent基础》——3.3 图搜索相关推荐

  1. 《人工智能:计算Agent基础》——1.5 复杂性维度

    本节书摘来自华章计算机<人工智能:计算Agent基础>一书中的第1章,第1.5节,作者:(加)David L.Poole,Alan K.Mackworth 更多章节内容可以访问云栖社区&q ...

  2. 青源 Forum | 人工智能的数理基础前沿系列报告 · 第 4 期

    北京智源人工智能研究院(简称"智源研究院")是落实"北京智源行动计划"的重要举措,是在科技部和北京市委市政府的指导和支持下,由北京市科委和海淀区政府于2018年 ...

  3. 青源Forum | 人工智能的数理基础前沿系列报告 · 第 3 期

    北京智源人工智能研究院(简称"智源研究院")是落实"北京智源行动计划"的重要举措,是在科技部和北京市委市政府的指导和支持下,由北京市科委和海淀区政府于2018年 ...

  4. 智源论坛 | 人工智能的数理基础(系列报告)

    活动亮点 智源论坛,AI技术前沿精粹尽览 独家经验分享,顶尖学者零距离 探讨前沿技术,亦分享职业经验 助你成为更好的研究者.工程师 当前人工智能面临如下重大理论挑战:可计算性.可解释性.泛化性.稳定性 ...

  5. 华为高级研究员谢凌曦:下一代人工智能计算模型探索

    2020-04-30 23:30:04 导读:下一代人工智能计算模型,主要是使用一些自动化技术帮助我们设计更好的深度学习网络结构,并在任务中提升性能.在深度学习如火如荼的当下,如何设计高效的神经网络架 ...

  6. 赠票福利 | 2019人工智能计算大会即将开幕,与王恩东、陆永青、王海峰等专家共话AI计算技术与未来...

    通过量子位特邀渠道,即可获得原票价1099的限时免费报名通道,并会优先审核,优先通过.文末有报名方式及报名通道. 计算.算法与数据是新一轮人工智能浪潮兴起与持续发展的三大核心要素,其中计算作为承载和推 ...

  7. “人工智能的数理基础”主题论坛,五位学者从数学角度解决AI问题

    导语:来自北京大学的五位学者参加了"人工智能的数理基础"主题论坛,他们从数学.统计和计算的角度做了学术报告. 智东西5月9日消息,围绕当前人工智能面临的可计算性.可解释性.泛化性. ...

  8. 赠票福利 | 2018人工智能计算大会报名开启:算力爆燃,AI进化

    使用特邀码"liangziwei"(量子位的拼音),获得原票价600的免费报名通道,并会优先审核,优先通过. 9月11-12日,2018人工智能计算大会(AI Computing ...

  9. 一文读懂人工智能产业链:基础技术、人工智能技术及人工智能应用

    原文:https://blog.csdn.net/zhangbijun1230/article/details/82183281 概要:针对人工智能产业链,主要有三个核心:基础技术.人工智能技术及人工 ...

最新文章

  1. SpringBoot注入数据的方式
  2. windows server 驱动精灵_大神教你如何在Win10中检查磁盘驱动器错误
  3. 利用计算机模拟人脑进行演绎,2014年4月自学考试计算机应用技术试题
  4. pip install jieba安装慢,安装失败,安装不解决办法
  5. eclipse 插件 subclipse plugin 中修改已经登录的帐户密码的方法
  6. 生成文字和二维码合成
  7. mac网络设置_如何在Mac上设置和使用网络位置
  8. hbase命令使用笔记
  9. 【Bug小记】input:-webkit-autofill:输入框自动填充背景问题
  10. 设计了一款 IGBT单脉冲、双脉冲测试波形信号发生器
  11. hive表信息查询:查看表结构、表操作等
  12. 达内python培训好不好
  13. 数论概论 第五章 习题解答(上)(宋二娃的BLOG)
  14. 付利赚团队分享互联网发展过程那些疯狂的时代
  15. iOS关于时间的处理
  16. oracle对数据块的存取,简单了解数据在Oracle文件中的存储
  17. 《福特自传》读书笔记
  18. 交换机链路聚合技术的负载均衡算法原理(含C语言实现)
  19. 工业智能仓储货架|HEGERLS供应电动移动式货架Electric mobile shelf自动立体化仓库货架
  20. 所见即所得的单目视频三维场景实时重建

热门文章

  1. 最常使用的css 工具_使用这些非常有用CSS工具更快地实施网站设计
  2. TortoiseSVN中的“文件和文件夹过滤”在VS项目中的使用
  3. 开课吧课堂:数据可视化的制作方法与准则有哪些?
  4. C++基础介绍,C++基本简介
  5. C++难吗?好学吗?C++到底怎么样?
  6. 物联网架构成长之路(18)-接阿里云OSS服务
  7. 2017北京国庆刷题Day2 afternoon
  8. 苹果用户每天解锁iPhone手机80次
  9. 6.4-全栈Java笔记:异常处理办法(下)
  10. Java学习,继承关系的学习和理解