统一成本搜索和 Dijkstra 算法有什么区别?

人工智能 比较 搜索 统一成本搜索 dijkstras算法 最短路径问题
2021-11-09 10:19:08

每个计算机科学专业的学生(包括我自己,在我攻读 CS 学士学位时)都可能遇到过著名的单源最短路径Dijkstra 算法(DA)如果你还上过关于人工智能的入门课程(就像我几年前在我的学士学位期间所做的那样),你应该也遇到过一些搜索算法,特别是统一成本搜索 (UCS)

网络上的一些文章(例如关于 DA 的 Wikipedia 文章)说 DA(或其变体)等同于 UCS。著名的 Norvig 和 Russell 的著作《人工智能:一种现代方法》(第 3 版)甚至指出

Dijkstra (1959)的两点最短路径算法是统一成本搜索的起源。这些作品还引入了探索集和前沿集(封闭和开放列表)的概念。

DA 究竟如何等同于 UCS?

1个回答

我的问题的答案可以在论文立场文件:Dijkstra 算法与统一成本搜索或反对 Dijkstra 算法的案例(2011)中找到,特别是 DA 和 UCS 的相似性部分,因此您应该阅读本文以了解所有详细信息。

DA 和 UCS 在逻辑上是等价的(即它们以相同的顺序处理相同的顶点),但它们的处理方式不同。特别是,单源DA 和 UCS 之间的主要实际区别在于,在 DA 中,所有节点最初都插入到优先级队列中,而在 UCS 中,节点是延迟插入的。

这是 DA 的伪代码(取自引用的论文)

在此处输入图像描述

这是最佳优先搜索 (BFS) 的伪代码,其中 UCS 只是一个特例。实际上,这是 UCS 的伪代码,其中g(n)是从源节点到路径的成本n(虽然标题表明这是 BFS 的伪代码)。

在此处输入图像描述