【问题标题】:What is the worst-case time and space complexity of a uniform-cost search algorithm?统一成本搜索算法的最坏情况时间和空间复杂度是多少?
【发布时间】:2012-08-15 10:26:46
【问题描述】:

我在这里的书(人工智能一种现代方法)说,统一成本搜索算法的最坏情况时间和空间复杂度将是 O(b[C*/e]) ,其中 b 是分支因子,C* 是最优解的成本,每个动作的成本至少为 e。但是为什么会这样呢?

【问题讨论】:

    标签: algorithm artificial-intelligence


    【解决方案1】:

    首先,复杂度是 O(B^(C/e)) [C/e 中的指数]。

    要理解它,先想一个简单的例子:

    G=(V,E) 为图,分支因子为B。该图未加权(w(e) = 1 对应每个 e)。

    考虑寻找从 S 到 T 的最短路径。
    在这种情况下,算法实际上是一个BFS,它会发现路径中最长为SOL的所有节点,其中SOL是最短路径的长度,即是O(B^|SOL|)

    对于一般情况 - 相同的想法成立,您需要发现所有节点的成本最高为 C。因此,您可以发现深度 C/e 的节点,从而为您提供 O(B^(C/e)) 需要探索的总节点。

    指数因子是因为:第一级(根)有B^0=1个节点,第二级有B个节点。从这些中你发现B 节点,给你B^2, ....


    编辑:
    到目前为止错过了,但标题要求空间复杂度而不是时间复杂度。但是,答案保持不变,因为统一成本搜索为已访问的节点保存了一个 visited 集。由于您发现的每个节点也被添加到其中 - 答案仍然是O(B^(C/e))

    【讨论】:

    • 但你为什么选择C/eC 是目标的成本,e 是任何节点的最小成本。那么这背后的逻辑是什么。
    • @Ghost: C/e 是您需要遍历的最大可能深度。如果目标成本为C,并且每条边的成本至少为e,则每条路径中可以遍历的边总数最多为C/e
    • 那么C*是从根节点遍历到目标节点的代价,还是从目标之前的节点遍历到目标节点的代价?
    • @Ghost:从源到目标(从源到目标的路径上所有边的成本总和)
    • 它的原因是幂 C/e 因为如果假设目标的理想成本是 C,请记住统一成本搜索仅适用如果每个步骤的成本差异至少为 e,那么到达目标 C 的步骤数将 C/e 因此 O(B^(C/e))
    【解决方案2】:

    C*/e 表示在搜索过程中应该访问的平均节点数,对于访问每个节点,您应该查看所有可能的 b 分支(至少是根节点),因此您应该检查 b[C*/e] 节点在您的搜索中。这是您的搜索时间复杂度,这是假设每个节点上的过程需要 O(1)。

    PS:最坏的情况是 Ω(b[C*/e])

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-11
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多