统一成本搜索算法

时间:2011-11-10 00:33:45

标签: algorithm

我只是在一本书和维基百科上阅读它,但仍然不理解它100%。

如果有人可以用一两个例子来解释,我真的很感激。

由于

2 个答案:

答案 0 :(得分:6)

说我正在看地图,在城市附近寻找披萨店。我可以使用一些不同的策略:

  • 广度优先搜索(BFS):看看我的街区周围的同心圆块,向外越来越远,直到我找到一个披萨店。这将给我一个最近我的街区的披萨店,就像乌鸦一样。
  • 深度优先搜索(DFS):沿着道路走,直到我走到死路,然后回溯。最终所有可能的分支都会被搜索到,所以如果那里有一个披萨店,那么我会找到它,但它可能不会非常接近我的块。
  • 统一成本搜索(UCS):说某些街道的交通状况不好,而且我对这个城市非常熟悉。对于任何给定的位置,我可以说我需要多长时间从我的街区到达那里。所以,看看地图,首先我搜索所有需要1分钟或更短时间才能到达的区块。如果我还没有找到披萨店,我会搜索所有需要1至2分钟才能到达的街区。我重复这个过程,直到我找到一个披萨店。这将给我一个比萨饼的地方,距离我的街区最近的车程。就像BFS看起来像同心圆一样,UFS看起来像a contour map

通常,您将使用优先级队列实施UCS,以便以最低的成本搜索节点。

答案 1 :(得分:0)

我假设你在看this Wikipedia page。这意味着给定操作所需的时间(添加两个数字,比较两个数字,从内存中检索数据等)与所涉及的变量大小无关。换句话说,8位比较需要与32位比较相同的时间量。通过这种假设,您可以简化效率分析并比较算法,而不会陷入实施细节中。