【问题标题】:complexity class of functions复杂性函数类
【发布时间】:2018-08-22 07:54:10
【问题描述】:

如果f(n)g(n) 是自然数上的函数,这些语句意味着什么?

  1. g(n)Θ(f(n)) 中。

  1. 算法属于复杂度类Θ(f(n))

【问题讨论】:

标签: function math complexity-theory notation


【解决方案1】:
  1. g(n)a.f(n)b.f(n) 括起来(其中a<b 是两个常数),以保证足够大的n

  2. 算法运行时间顺序为Θ(f(n))

【讨论】:

    【解决方案2】:

    如果g(n)Θ(f(n))) 中,则存在大于零的实常数ab 和大于零的整数常数n0,这样对于所有n > n0a * f(n) <= g(n) <= b * f(n)。例如,函数g(n) = (1 + sin(n)) * n^2O(n^2),因为我们可以选择a = 1b = 2n0 = 1 并验证不等式是否成立。

    如果算法属于复杂度类Θ(f(n)),则关系G 将大小为n 的输入映射到在某些隐含计算机上处​​理该输入的操作数m 具有以下属性:

    1. min({m | G(n, m)})max({m | G(n, m)}) 均已定义。
    2. 函数g(n) = min({m | G(n, m)})Θ(f(n))中。
    3. 函数h(n) = max({m | G(n, m)})Θ(f(n))中。

    【讨论】:

      【解决方案3】:

      有关大 Θ 符号的正式定义,请查看 Wikipedia。 更详细的解释您可以找到here

      对于算法n 是输入数据的大小(例如列表/数组/...中的元素数量),您将获得算法增加n 的“成本”的估计值. 成本通常是指基本运算(算术运算、比较、条件)的数量。

      “算法”的简单示例:访问大小为 n 的容器中的任意元素:

      • 对于数组,您可以直接访问每个元素。所以成本是不变的,在你的符号中意味着f(n) = 1
      • 对于链接列表,您从头开始遍历列表。因此,平均而言,您必须通过列表的一半:f(n) = n/2(或等效的f(n) = n)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多