人工智能中的一致代价搜索

2025年2月1日 | 阅读 7 分钟

在人工智能(AI)中,一种用于在图中找到最便宜路径的搜索策略被称为一致代价搜索(Uniform Cost Search),简称 UCS。这个 Dijkstra 算法的变体特别适用于图中每条边都有不同权重的场景。其目标是找出一条连接起始节点和目标节点,并且总成本最低的路径。

一致代价搜索 (UCS) 概述

“一致代价搜索”是一种路径查找算法,它通过优先扩展成本最低的节点来确保到达目标节点的路径是成本最低的。与广度优先搜索(BFS)等其他搜索算法不同,UCS 考虑了每条路径的成本,因此适用于边成本各异的加权图。

一致代价搜索的关键概念

  • 优先队列:UCS 将节点存储在优先队列中。具有最低累积成本的节点将首先被扩展。这确保了搜索中最有希望的路径被首先探索。
  • 路径成本:从起始节点到某个特定节点的旅行成本。UCS 通过计算从起始节点到当前节点的累积成本,然后优先处理成本较低的节点。
  • 扩展:当 UCS 检查一个节点时,它首先扩展成本最低的节点,并一直进行,直到到达目标节点。这保证了最便宜的路径会导向目标节点。
  • 终止:当目标节点被扩展时,算法终止。这保证了第一次到达目标节点时找到的路径就是最优路径。

如何执行一致代价搜索?

UCS 的基本原则是从起始节点的所有潜在扩展中选择总成本最低的路径。为了维护部分路径根据从根节点开始的总成本排序,这一点通过使用优先队列来实现。

UCS 工作流程的详细步骤如下:

  • 起始点:UCS 从根节点开始。由于尚未执行任何操作,它以累积成本零添加到优先队列中。
  • 节点扩展:从优先队列中移除路径成本最低的节点。接下来,扩展该节点,并检查其邻居节点。
  • 检查邻居:对于已扩展节点的每个邻居,算法会计算从起始节点经由当前节点到达该邻居的总成本。如果邻居节点尚未在队列中,则将其与计算出的成本一起添加到优先队列中。如果邻居节点已在队列中,但发现了更便宜的到达该邻居的路径,则更新队列中的成本。
  • 目标检查:在扩展节点后,算法会检查是否已到达目标节点。如果目标已达成,则返回所经过的路径以及到达该节点的总成本。
  • 重复:此过程会重复进行,直到达成目标或优先队列为空。

使用一致代价搜索解决路径查找问题

步骤 1:导入必要的库。

在此阶段,导入实现一致代价搜索 (UCS) 和可视化图所需的库。

步骤 2:定义一致代价搜索函数

该函数应用 UCS 方法,用于在加权图中找到从起始节点到目标节点的最低成本路径。

步骤 3:建立路径重构函数

该方法通过回溯访问过的节点来重构从起始节点到目的地节点的路径。

步骤 4:定义可视化函数

该函数使用 networkx 创建图,并使用 matplotlib 进行可视化,展示图以及 UCS 找到的路径。

步骤 5:实现 UCS 并定义图

在此阶段,设置起始节点和目标节点,执行 UCS 算法,并定义一个作为邻接列表的示例图。然后显示图和找到的路径。

完整代码

说明

这段代码仅仅实现了 UCS 算法,该算法用于在加权图中找到给定源节点到目标节点的最低成本路径。其中,我们有 least_cost_search() 函数,它使用优先队列根据累积成本探索节点,并返回最优路径及其总成本;trace_path() 通过从目的地追溯到源节点来重构路径。最后,plot_graph_with_path 函数绘制图并高亮显示找到的路径。通过一个简单的图的邻接列表示例,计算并显示了从 'X' 到 'S' 的最优路径。

输出

Uniform Cost Search in Artificial Intelligence

UCS 在人工智能中的应用

一致代价搜索在多个 AI 领域有广泛的应用,包括:

  • 地图导航:在地图上计算两点之间的最短路径,并考虑不同的路径成本。
  • 网络路由:在数据或通信网络中找到最低成本的路径。
  • 解谜:解决滑动拼图等谜题,其中每一步都有成本。
  • 资源分配:涉及有效资源分配的活动,其中不同的分配选项都有相应的成本。

一致代价搜索的优点

  • 最优性:如果每一步的成本都大于零,UCS 保证能找到到达目标状态的最便宜路径。
  • 完备性:如果存在解决方案,该方法是完备的,并且能够找到它。

UCS 的挑战

  • 空间复杂度:UCS 的主要缺点是空间复杂度。特别是在添加大量节点时,优先队列可能会显著增长。
  • 时间复杂度:寻找最低成本路径可能需要很长时间,特别是当状态空间很大时。

结论

当不同的路径具有不同的成本,并且目标是最小化总成本时,一致代价搜索是一种强大的人工智能方法。它在各个领域的应用证明了其适应性和效用。对于实际实现,理解其计算需求至关重要,特别是在处理有限的处理资源或大型数据集的情况下。


下一主题人工智能工作