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
相关推荐
烛阴7 分钟前
手把手教你搭建 Express 日志系统,告别线上事故!
javascript·后端·express
良许Linux8 分钟前
请问做嵌入式开发C语言应该学到什么水平?
后端
Pitayafruit31 分钟前
SpringBoot整合Flowable【08】- 前后端如何交互
spring boot·后端·workflow
小丁爱养花1 小时前
驾驭 Linux 云: JavaWeb 项目安全部署
java·linux·运维·服务器·spring boot·后端·spring
uhakadotcom1 小时前
Amazon GameLift 入门指南:六大核心组件详解与实用示例
后端·面试·github
小杨4042 小时前
springboot框架项目实践应用十九(nacos配置中心)
spring boot·后端·spring cloud
终身学习基地3 小时前
第二篇:go包管理
开发语言·后端·golang
图南随笔3 小时前
Spring Boot(二十一):RedisTemplate的String和Hash类型操作
java·spring boot·redis·后端·缓存