Algorithm 大Ө;符号代表什么?

Algorithm 大Ө;符号代表什么?,algorithm,computer-science,big-o,notation,big-theta,Algorithm,Computer Science,Big O,Notation,Big Theta,我真的很困惑大O、大ω和大θ符号之间的区别 我知道大O是上界,大ω是下界,但大θ(θ)到底代表什么 我读过,它的意思是紧约束,但这意味着什么?它意味着算法在给定的函数中是大O和大Omega 例如,如果它是ㄈ(n),那么就有一些常数k,这样你的函数(运行时,无论什么),对于足够大的n,大于n*k,对于足够大的n,还有一些其他常数k,这样你的函数小于n*k 换句话说,对于足够大的n,它夹在两个线性函数之间: 对于足够大的k

我真的很困惑大O、大ω和大θ符号之间的区别

我知道大O是上界,大ω是下界,但大θ(θ)到底代表什么


我读过,它的意思是紧约束,但这意味着什么?

它意味着算法在给定的函数中是大O和大Omega

例如,如果它是
ㄈ(n)
,那么就有一些常数
k
,这样你的函数(运行时,无论什么),对于足够大的
n
,大于
n*k
,对于足够大的
n
,还有一些其他常数
k
,这样你的函数小于
n*k

换句话说,对于足够大的
n
,它夹在两个线性函数之间:


对于足够大的
k
n
n*k
首先让我们了解什么是大O,大θ和大ω。它们都是函数

大O表示上限,而大Omega表示下限。大θ给出了两者

一切
ㄉ(f(n))
也是
O(f(n))
,但不是相反。
T(n)
如果同时在
O(f(n))
Omega(f(n))
中,则称为在
ㄊ(f(n))

在sets术语中,
ㄉ(f(n))
O(f(n))
Omega(f(n))

例如,合并排序最坏的情况是
O(n*log(n))
Omega(n*log(n))
,因此也是
ㄊ(n*log(n))
,但它也是
O(n^2)
,因为
n^2
渐进地“大于”它。然而,它不是
}(n^2)
,因为算法不是
ω(n^2)

更深入的数学解释
O(n)
是渐近上界。如果
T(n)
O(f(n))
,这意味着从某个
n0
,存在一个常数
C
,使得
T(n)=C2*f(n))

不要混淆! 不要与最差、最佳和平均情况分析混淆:所有三种(ω、O、θ)符号均与算法的最佳、最差和平均情况分析无关。其中的每一项都可以应用于每一项分析

我们通常使用它来分析算法的复杂性(如上面的合并排序示例)。当我们说“算法A是
O(f(n))
”时,我们真正的意思是“在最糟糕的案例分析中,算法的复杂性是
O(f(n))
”——这意味着它可以“类似”(或者形式上,不比函数
f(n)
更差)

为什么我们关心算法的渐近界? 原因有很多,但我认为最重要的是:

  • 确定精确的复杂度函数要困难得多,因此我们在大O/大θ符号上进行了“折衷”,这些符号在理论上具有足够的信息
  • 运营商的确切数量也取决于平台。例如,如果我们有一个16个数字的向量(列表)。要花多少钱?答案是:视情况而定。一些CPU允许向量加法,而另一些CPU不允许,因此不同的实现和不同的机器的答案不同,这是一个不需要的属性。然而,在机器和实现之间,big-O表示法要稳定得多
  • 要演示此问题,请查看以下图表:

    很明显,
    f(n)=2*n
    f(n)=n
    更“糟糕”。但是,与其他函数的差别并没有那么大。我们可以看到,与其他函数相比,
    f(n)=logn
    迅速降低,而
    f(n)=n^2
    则迅速升高。
    因此,由于上述原因,我们“忽略”了常量因子(在图形示例中为2*),而只采用大O表示法

    在上面的例子中,
    f(n)=n,f(n)=2*n
    既在
    O(n)
    中,又在
    Omega(n)
    中,因此也在
    Theta(n)
    中。
    另一方面-
    f(n)=logn
    将位于
    O(n)
    (它比
    f(n)=n
    更好),但不会位于
    Omega(n)
    ,因此也不会位于
    Theta(n)

    对称地,
    f(n)=n^2
    将位于
    Omega(n)
    ,但不在
    O(n)
    ,因此-也不是
    Theta(n)


    1通常,但并非总是如此。当分析类(最差、平均和最佳)缺失时,我们实际上指的是最坏的情况。Theta(n):如果存在正常数
    c1
    c2
    ,则
    f(n)
    函数属于
    Theta(g(n))
    ,从而
    f(n)
    可以夹在
    c1(g(n)之间
    c2(g(n))
    。i、 它给出了上限和下限

    θ(g(n))={f(n):存在正常数c1、c2和n1,使得 0大θ表示法: 没什么可搞砸的,伙计

    如果我们有一个正值函数f(n)并且g(n)取一个正值参数n,那么ϴ(g(n))定义为{f(n):对于所有n>=n1},存在常数c1、c2和n1


    式中,c1g(n)我希望这是您可能希望在经典(第66页)中找到的内容:
    首先是理论

  • 大O=上限O(n)

  • θ=阶函数-θ(n)

  • ω=Q表示法(下限)Q(n)

  • 为什么人们如此困惑? 在许多博客和书籍中,这句话是如何被强调的

    “这是大O(n^3)”等等

    人们常常像天气一样混淆

    O(n)==θ(n)==Q(n)

    但值得记住的是,他们只是马瑟姆
    if Upper Bound is Similar to Lower Bound, The Average Case is Similar
    
    Example, 2n4 ≤ f(x) ≤ 2n4,
    Then Omega(n) = 2n4
    
    in this case, Omega(n) is Not fixed but Omega(n) is the set of functions with the same order of growth as g(n).
    
    Example 2n4 ≤ f(x) ≤ 3n4, This is Our Default Case,
    Then, Omega(n) = c'n4, is a set of functions with 2 ≤ c' ≤ 3