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
相关推荐
努力的小郑19 分钟前
MySQL索引(三):字符串索引优化之前缀索引
后端·mysql·性能优化
IT_陈寒41 分钟前
🔥3分钟掌握JavaScript性能优化:从V8引擎原理到5个实战提速技巧
前端·人工智能·后端
程序员清风1 小时前
贝壳一面:年轻代回收频率太高,如何定位?
java·后端·面试
考虑考虑1 小时前
Java实现字节转bcd编码
java·后端·java ee
AAA修煤气灶刘哥2 小时前
ES 聚合爽到飞起!从分桶到 Java 实操,再也不用翻烂文档
后端·elasticsearch·面试
爱读源码的大都督2 小时前
Java已死?别慌,看我如何用Java手写一个Qwen Code Agent,拯救Java
java·人工智能·后端
星辰大海的精灵3 小时前
SpringBoot与Quartz整合,实现订单自动取消功能
java·后端·算法
天天摸鱼的java工程师3 小时前
RestTemplate 如何优化连接池?—— 八年 Java 开发的踩坑与优化指南
java·后端
一乐小哥3 小时前
一口气同步10年豆瓣记录———豆瓣书影音同步 Notion分享 🚀
后端·python
LSTM973 小时前
如何使用C#实现Excel和CSV互转:基于Spire.XLS for .NET的专业指南
后端