AI 中的搜索算法(无信息)


2021年8月23日, Learn eTutorial
2281

在人工智能中,解决问题的通用技术是搜索。对于一个给定的问题,需要考虑所有可能的方法,从初始状态达到现有目标状态。人工智能中的搜索可以定义为寻找给定问题解决方案的过程。搜索策略用于指定选择哪条路径才能达到解决方案。

搜索算法中的术语

  • 搜索:解决给定搜索问题的分步过程。搜索问题的三个主要因素:
    • 搜索空间:系统可能拥有的所有可能解决方案的集合。
    • 起始状态:智能体开始搜索的状态。
    • 目标测试:一个监控当前状态并返回是否达到目标的函数。
  • 搜索树:以树的形式表示搜索问题。树的根是问题的初始状态。
  • 动作:对智能体的所有动作的描述。
  • 转换模型:用于表示动作的描述。
  • 解决方案:从初始节点到最终节点的动作序列。
  • 路径成本:一个为每条路径分配数字成本的函数。
  • 最优解决方案:成本最低的解决方案。
  • 问题空间:发生搜索的环境。
  • 问题的深度:从初始状态到最终状态的最短路径的长度。

搜索算法的属性

搜索算法有四个基本属性用于比较效率。

  1. 完备性:如果算法保证返回一个解决方案,即如果对于任何随机输入都存在至少一个解决方案,则称该算法是完备的。
  2. 最优性:如果算法在其他解决方案中找到了最佳解决方案(最低路径成本),则该解决方案可以称为最优解决方案。找到最优解决方案的能力称为最优性。
  3. 时间复杂度:算法完成任务所需的时间。
  4. 空间复杂度:算法在搜索过程中任何时候所需的存储空间量。

搜索算法主要根据搜索问题分为两类;

AI - Searching Algorithms?

无信息搜索算法

无信息搜索算法不知道领域知识,例如接近度、目标位置。它只知道如何遍历以及如何区分叶节点和目标节点,因此它以暴力方式操作,因此也称为暴力算法。它在没有任何先验知识的情况下搜索每个节点,因此也称为盲目搜索算法

无信息搜索算法可分为六种主要类型

AI - Searching Algorithms?

1.   广度优先搜索 (BREADTH-FIRST SEARCH)

它是遍历树或图最常见的搜索策略。它使用广度优先搜索过程,因此称为广度优先搜索。该过程从树的根节点开始,在进入下一层节点之前扩展到第一层的所有后继节点。使用基于先进先出 (FIFO) 概念的队列数据结构来实现此方法。由于它返回一个解决方案(如果存在),因此可以称之为完备算法

AI - Searching Algorithms :BFS

搜索过程从根节点 A 开始。这里的目标节点是 G。从节点 A 开始,它将按照 A-B-C-D-G 的顺序遍历。它将按层遍历。

优点 缺点
  • 如果存在解决方案,则提供解决方案。
  • 当给定问题存在多个解决方案时,提供步骤最少的最小解决方案。
  • 内存需求增加,因为树的每一层都必须保存在内存中才能扩展下一层。
  • 如果解决方案远离根节点,则时间需求更高。

2.   深度优先搜索 (DEPTH-FIRST SEARCH)

它是一个类似于 BFS 的过程。搜索过程从根节点开始,沿着每条路径走到最大深度,然后回溯,再进入下一条路径。使用基于后进先出 (LIFO) 概念的栈数据结构来实现该过程。
示例:

AI - Searching Algorithms :DFS

搜索过程从根节点 A 开始。这里的目标节点是 G。从节点 A 开始,它将按照 A-B-D-G 的顺序遍历。它将按深度遍历。

优点 缺点
  • 空间需求少,因为它线性存储节点。
  • 时间需求少于 BFS。
  • 算法可能会陷入无限循环。
  • 状态可能重复出现。

 

3.   深度限制搜索 (DEPTH-LIMITED SEARCH)

它与深度优先搜索非常相似,但有一个预设的限制。DFS 的主要缺点是无限路径,这可以通过深度限制搜索来解决。在这里,达到限制的节点被视为没有进一步的后继节点。它可以被称为 DFS 的扩展和完善版本。

深度限制搜索将在两种条件下终止。

  • 标准失败值:表示给定问题没有任何解决方案。
  • 截止失败值:表示在给定限制内给定问题没有解决方案。

示例

AI - Searching Algorithms : DLS

搜索从节点 A 开始。该过程的限制设置为 l=2。我们的目标状态是节点 G。过程是 A-B-D-E-C-F-G。

优点 缺点
  • 内存效率高
  • 不完备性
  • 对于有多个解决方案的问题不是最优的。

 

4.   统一成本搜索算法 (UNIFORM-COST SEARCH ALGORITHM)

它用于遍历加权树或图。它与 DFS 和 BFS 都不同。这里成本被视为一个因素。有不止一条路径可以达到目标。选择成本最低的路径。为了遍历路径,选择成本递增的顺序。如果每次转换的成本相同,那么它就可以说类似于 BFS。

示例。

AI - Searching Algorithms

如果起始节点是 A,要达到的目标是 G,那么它将遍历 A-C-G。成本将是 3。

优点 缺点
  • 最优,因为选择了成本最低的路径。
  • 可能会陷入无限循环,因为只考虑路径成本。

 

5.   迭代加深深度优先搜索 (ITERATIVE DEEPENING DEPTH-FIRST SEARCH)

它是 DFS 和 BFS 的结合。它将找到最佳深度限制,并且该限制会逐渐增加,直到找到目标。该算法执行到某个深度限制的深度优先搜索,并且该深度限制在每次迭代后都会增加,直到达到目标。BFS 的速度和 DFS 的内存效率在此迭代加深深度优先搜索中结合在一起。对于搜索空间大且目标节点深度未知的情况,这可能更有用。

示例

AI - Searching Algorithms?

第一次迭代------A
第二次迭代------A,B,C
第三次迭代------A,B,D,E,C,F,G
第四次迭代------A,B,D,H,I,E,C,F,K,G
目标节点在第四次迭代中找到。
 

优点 缺点
  • 快速搜索
  • 内存效率
  • 重复以前的工作。

 

6.   双向搜索算法 (BIDIRECTIONAL SEARCH ALGORITHM)

它同时执行两次搜索。一次从起点开始,称为正向搜索;另一次从终点开始,称为反向搜索。一个单一的图被两个小的子图替换,一个从初始顶点开始,另一个从最终顶点开始。当这两个图相互交叉时,搜索过程停止。它可以使用 BFS、DFS、DLS 等搜索技术。

示例

AI - Searching Algorithms

算法在两个子图相遇的节点 I 处终止。

优点 缺点
  • 快速
  • 内存少
  • 实现困难
  • 必须知道目标状态。