O(V + E)如何等于O(b ^ d)在BFS中

时间:2012-10-10 13:06:49

标签: algorithm artificial-intelligence time-complexity breadth-first-search

在我的algoritham分析课程中,老师告诉我们,Breath First搜索的时间复杂度是O(V + E),但是现在在人工智能课程中老师说BFS的复杂性是O(b d )。当我问他问题时,他给了我一个合乎逻辑的理由,即“在理论计算机科学中,O(V + E)是合适的,因为图形是输入到搜索算法的显式数据结构。在AI中,图形通常表示隐含地通过初始状态,动作和转换模型并且经常是无限的。因此,复杂性用O(b d )表示。现在我有两个问题

  1. O(V + E)和O(b d )如何相等,第一个看起来像线性复杂,第二个看起来是指数。
  2. 当我们谈论大O符号时,它意味着输入可能的上限应该保持不变,因为它是一个上限。 Big O是否只处理一些有限的数据输入?
Wikipedia source

1 个答案:

答案 0 :(得分:5)

在人工智能中 - 您通常使用巨大/无限图来处理,因此 O(V+E)不提供信息,并且对于这些图表不够好,所以我们尝试获得更好的约束。此范围为O(B^d),其中B是分支因子,d是解决方案的深度。这背后的理性是,如果你在每个深度“分支”到B方向,你最终会探索O(B^d)个节点。

Morever - 请注意,算法课程中的经典BFS是探索算法 - 需要探索整个图形(探索所有顶点),而在AI中我们将其用作寻路< / strong> - 在我们找到从源到目标的路径之前,您将进行探索。 (不需要,有时候无法探索整个图表)

另请注意,如果您查看树(没有发现两个节点),分支因子B且所有叶子都是深度d - 那么确实有B + B^2 + B^3 + ... + B^d < B^(d+1)个节点在树中,所以如果你确实需要

  

O(V + E)和O(b ^ d)如何相等,第一个看起来像线性   复杂性和第二个是指数级的。

在第一个中,图形是输入,因此它与输入的大小呈线性关系 - 图形。
第二个也是图形大小的线性 - 并且在解的深度上呈指数 - 一个不同的因子,仍然 - 不需要遍历一个顶点多一次,所以在图形的大小中仍然是线性的。
所以,在这里 - 基本上O(B^d)O(V+E)子集,并且如果你能“忍受”你的复杂性这一事实,它会提供更多信息。是d的函数,它不是输入的一部分。

  

当我们谈论大O符号时,它意味着上限   输入可能是它应该保持不变,因为它的上部   界。 Big O是否只处理一些有限的数据输入?

如果图是无限的,那么对于每个f(n),对于每个常数c,N - c*f(n) < infinity,大O都不具有信息性,所以在谈论无限图时它是无用的。