AI-2-1

1. 搜索和问题解决

许多问题可以表述为搜索问题。这要求我们首先制定替代选择及其后果。

1.1 在实践中搜索:从 A 到 B

想象一下,您在一个外国城市,在某个地址(比如一家酒店),并想使用公共交通工具到达另一个地址(也许是一家不错的餐厅)。你是做什么工作的?如果您和许多人一样,您会拿出智能手机,输入目的地并开始按照说明进行作。

这个问题属于搜索和规划问题的类别。类似的问题需要通过自动驾驶汽车和(可能不太明显的)用于玩游戏的 AI 来解决。例如,在国际象棋游戏中,困难不在于将棋子从 A 到 B,而在于保护你的棋子免受对手的伤害。

通常有许多不同的方法可以解决问题,其中一些方法在时间、精力、成本或其他标准方面可能更可取。不同的搜索技术可能会带来不同的解决方案,开发高级搜索算法是一个成熟的研究领域。

我们不会关注实际的搜索算法。

相反,我们强调问题解决过程的第一阶段:定义选择及其后果,这通常远非微不足道,可能需要仔细思考。

我们还需要定义我们的目标是什么,或者换句话说,我们何时可以考虑问题已经解决。

完成后,我们可以查找从初始状态到目标的一系列动作。

在本章中,我们将讨论两类问题:

  • Search and planning in static environments with only one "agent" 在只有一个"代理"的静态环境中进行搜索和规划

  • Games with two-players ("agents") competing against each other 两名玩家("代理")相互竞争的游戏

这些类别并未涵盖所有可能的实际场景,但它们足够通用,可以演示主要概念和技术。

在我们处理导航或下棋等复杂的搜索任务之前,让我们从一个大大简化的模型开始,以建立我们对如何通过 AI 解决问题的理解。

2. 过河问题

我们将从一个简单的拼图开始来说明这些想法。

划艇上的机器人需要将三件货物移过河流:一只狐狸、一只鸡和一袋鸡饲料。如果有机会,狐狸会吃掉鸡,如果有机会,鸡会吃掉鸡饲料,这两种结果都不是理想的。机器人能够防止动物靠近它们时造成伤害,但只有机器人可以作划艇,并且只有两件货物可以与机器人一起放在划艇上。机器人如何将所有货物移动到河对岸?

如果你以前听说过这个谜语,你可能知道即使船上的空间较小,它也可以解开。在我们一起解决这个更简单的版本之后,这将是您的一个练习。

我们将通过注意到已经确定了五个可移动的物体来建模这个谜题:机器人、划艇、狐狸、鸡和鸡饲料。

原则上,这五个对象中的每一个都可以在河的两侧,但由于只有机器人可以作划艇,因此两者将始终在同一侧。因此,有四个事物,每个事物有两个可能的位置,这构成了 16 种组合,我们称之为状态:

接下来,我们将弄清楚哪些状态转换是可能的,这意味着当机器人将一些物品作为货物划船时,在每种情况下产生的状态是什么。最好绘制一个转换图,因为在任何转换中,第一个字母在 N 和 F 之间交替,因此在一行中绘制以 N 开头的状态(因此机器人位于近侧)并绘制以 F 开头的状态在另一行中是很方便的:

现在让我们绘制过渡。我们可以绘制具有方向的箭头,以便它们从一个节点指向另一个节点,但在这个谜题中,转换是对称的:如果机器人可以从状态 NNNN 划到状态 FNFF,那么它同样可以从 FNFF 排到状态 NNNN。因此,简单地使用没有方向的线条绘制过渡效果会更简单。从 NNNN 开始,我们可以转到 FNFN、FNFF、FFNF 和 FFFN:

然后我们填写其余部分:

我们现在已经在这个谜题上做了相当多的工作,但似乎还没有更接近解决方案,毫无疑问,你已经可以使用你的 "自然智能 "来解决整个谜题了。但是对于更复杂的问题,可能的解决方案数量以数千或数百万增长,我们的系统或机械方法将大放异彩,因为困难的部分将适合简单的计算机来完成。现在我们已经制定了替代状态和它们之间的转换,剩下的工作就变成了一项机械任务:找到从初始状态 NNNN 到最终状态 FFFF 的路径。

下图中对其中一条路径进行了着色。路径从 NNNN 到 FFFN(机器人将狐狸和鸡带到另一侧),然后到 NFNN(机器人将鸡带回起始侧),最后到 FFFF(机器人现在可以将鸡和鸡饲料移动到另一侧)。

3. 状态空间、转换和成本

为了正式化规划问题,我们使用了 state space、transitions 和 costs 等概念。

表示可能情况的集合。在鸡过河中,状态空间由 10 个允许的状态 NNNN 到 FFFF 组成(但不包括 NFFF,拼图规则不允许)。如果任务是从位置 A 导航到位置 B,则状态空间可以是由其 (x,y) 坐标定义的位置集,这些坐标可以从起点 A 到达。或者,我们可以使用一组受约束的位置,例如,不同的街道地址,以便限制可能的州的数量。

4. 转换

可以在一种状态和另一种状态之间移动,例如 NNNN 到 FNFN。请务必注意,我们只将可以通过单个作完成的直接转换计为 transitions。一系列多个转换,例如,从 A 到 C、从 C 到 D 以及从 D 到 B(目标),是路径而不是转换

指的是,通常不同的过渡并不完全相同。它们可能有所不同,使某些过渡更可取或更便宜(不一定是货币意义上),而另一些则更昂贵。我们可以通过将每个转换关联一定的成本来表示这一点。如果目标是最小化行驶的总距离,则自然成本是州之间的地理距离。另一方面,目标实际上可能是最小化时间而不是距离,在这种情况下,自然成本显然是时间。如果所有转换都相等,那么我们可以忽略成本。

参考:

  1. course.elementsofai.com/2/1
相关推荐
小蒜学长2 小时前
springboot多功能智能手机阅读APP设计与实现(代码+数据库+LW)
java·spring boot·后端·智能手机
追逐时光者3 小时前
精选 4 款开源免费、美观实用的 MAUI UI 组件库,助力轻松构建美观且功能丰富的应用程序!
后端·.net
你的人类朋友4 小时前
【Docker】说说卷挂载与绑定挂载
后端·docker·容器
间彧5 小时前
在高并发场景下,如何平衡QPS和TPS的监控资源消耗?
后端
间彧5 小时前
QPS和TPS的区别,在实际项目中,如何准确测量和监控QPS和TPS?
后端
间彧5 小时前
消息队列(RocketMQ、RabbitMQ、Kafka、ActiveMQ)对比与选型指南
后端·消息队列
brzhang6 小时前
AI Agent 干不好活,不是它笨,告诉你一个残忍的现实,是你给他的工具太难用了
前端·后端·架构
brzhang6 小时前
一文说明白为什么现在 AI Agent 都把重点放在上下文工程(context engineering)上?
前端·后端·架构
Roye_ack6 小时前
【项目实战 Day9】springboot + vue 苍穹外卖系统(用户端订单模块 + 商家端订单管理模块 完结)
java·vue.js·spring boot·后端·mybatis
AAA修煤气灶刘哥8 小时前
面试必问的CAS和ConcurrentHashMap,你搞懂了吗?
后端·面试