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

简介:

本节书摘来自华章计算机《人工智能:计算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′)


<a href=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。

相关文章
|
3天前
|
人工智能 决策智能 C++
【AI Agent系列】【阿里AgentScope框架】5. Pipeline模块的组合使用及Pipeline模块总结
【AI Agent系列】【阿里AgentScope框架】5. Pipeline模块的组合使用及Pipeline模块总结
18 1
|
3天前
|
人工智能 搜索推荐 决策智能
【AI Agent系列】【阿里AgentScope框架】1. 深入源码:详细解读AgentScope中的智能体定义以及模型配置的流程
【AI Agent系列】【阿里AgentScope框架】1. 深入源码:详细解读AgentScope中的智能体定义以及模型配置的流程
31 0
|
3天前
|
存储 人工智能 开发框架
【AI Agent系列】【阿里AgentScope框架】0. 快速上手:AgentScope框架简介与你的第一个AgentScope程序
【AI Agent系列】【阿里AgentScope框架】0. 快速上手:AgentScope框架简介与你的第一个AgentScope程序
13 0
|
3天前
|
人工智能 Oracle 关系型数据库
【AI Agent系列】【LangGraph】1. 进阶实战:给你的 LangGraph 加入条件分支(Conditional edges)
【AI Agent系列】【LangGraph】1. 进阶实战:给你的 LangGraph 加入条件分支(Conditional edges)
13 0
|
3天前
|
存储 人工智能 数据库
【AI Agent系列】【MetaGPT多智能体学习】8. MetaGPT多智能体进阶练习 - 使用MetaGPT重构BabyAGI
【AI Agent系列】【MetaGPT多智能体学习】8. MetaGPT多智能体进阶练习 - 使用MetaGPT重构BabyAGI
9 0
|
3天前
|
人工智能 决策智能
【AI Agent系列】【MetaGPT多智能体学习】3. 开发一个简单的多智能体系统,兼看MetaGPT多智能体运行机制
【AI Agent系列】【MetaGPT多智能体学习】3. 开发一个简单的多智能体系统,兼看MetaGPT多智能体运行机制
29 0
|
3天前
|
数据采集 人工智能 Python
【AI Agent系列】【MetaGPT】9. 一句话订阅专属信息 - 订阅智能体进阶,实现一个更通用的订阅智能体(2)
【AI Agent系列】【MetaGPT】9. 一句话订阅专属信息 - 订阅智能体进阶,实现一个更通用的订阅智能体(2)
25 1
|
3天前
|
人工智能 开发工具 git
【AI的未来 - AI Agent系列】【MetaGPT】5. 更复杂的Agent实战 - 实现技术文档助手
【AI的未来 - AI Agent系列】【MetaGPT】5. 更复杂的Agent实战 - 实现技术文档助手
52 0
|
3天前
|
人工智能 前端开发
【AI的未来 - AI Agent系列】【MetaGPT】2. 实现自己的第一个Agent
【AI的未来 - AI Agent系列】【MetaGPT】2. 实现自己的第一个Agent
12 0
|
3天前
|
人工智能 API 决策智能
【AI的未来 - AI Agent系列】【MetaGPT】1. AI Agent如何重构世界
【AI的未来 - AI Agent系列】【MetaGPT】1. AI Agent如何重构世界
52 0

热门文章

最新文章