符号T(n)是什么意思?

时间:2012-11-29 03:08:31

标签: notation

我们学习了大O符号,但我经常也看到T(n)。例如,

public static Comparable[] mergeSort(Comparable[] A, int low, int high) {
  if (low < high) { //at least 2 elements?                //cost = c
    int mid = (low + high)/2;                             //cost = d
    Comparable[] A1 = mergeSort(A, low, mid);             //cost = T(n/2) + e
    Comparable[] A2 = mergeSort(A, mid+1, high);          //cost = T(n/2) + f
    return merge(A1,A2);                                  //cost = g n + h
  }
  .... //cost = i

我相信c,d,e,......意味着任意命名的常数。

T(n / 2)是什么意思? T标记如何与大O相关?

2 个答案:

答案 0 :(得分:6)

此表示法指的是函数运行所需的最长时间(或更具体地说,步骤)。

T(n)可能比O(n)更具特异性;例如,假设您有一个程序,对于任何输入,需要n^2+n+1个步骤来运行:

T(n) = n^2+n+1
O(n) = n^2

可以找到更多信息here

答案 1 :(得分:0)

我个人以前从未见过这种符号,但我怀疑它是指“big-Theta”(Θ),它既是渐近上界(big-O)又是渐近下界。

还相关:Big-Omega(Ω)用于表示渐近下界(镜像大O)。