Algorithm 依赖于2个输入的算法的时间复杂度T(n)

Algorithm 依赖于2个输入的算法的时间复杂度T(n),algorithm,time-complexity,analysis,Algorithm,Time Complexity,Analysis,通常,在分析算法的运行时间时,我处理的是影响运行时间的单个输入。我试图理解当有2个或更多的输入影响运行时间时,如何表示T(n) 例如,在最坏情况下的线性搜索中: function LinearSearch(arr, N, x) for (i = 0; i < N; i++) ---> C1*N + C2 if arr[i] = x ---> C3*N return true

通常,在分析算法的运行时间时,我处理的是影响运行时间的单个输入。我试图理解当有2个或更多的输入影响运行时间时,如何表示T(n)

例如,在最坏情况下的线性搜索中:

function LinearSearch(arr, N, x)
    for (i = 0; i < N; i++)        ---> C1*N + C2
        if arr[i] = x              ---> C3*N
            return true            

    return false                   ---> C4
函数线性搜索(arr,N,x)
对于(i=0;iC1*N+C2
如果arr[i]=x--->C3*N
返回真值
返回false->C4
T(n)=(C1+C3)*n+(C2+C4) =CN+C

所以T(n)相对于n是线性的

现在假设有另一个算法,它接受了输入X和Y,我做了类似的分析,发现在最坏的情况下成本是:

T(n)=CX+C

最好的情况是:

T(n)=CY+C

我的问题是,这样表示运行时间是否正确?假设在不同的情况下,有两种不同的输入会影响运行时间

我没有在网上或教科书中找到太多信息,但我一直在思考T(n)中的n是否代表所有输入,或者是否可以这样表示:

T(X)=CX+C

T(Y)=CY+C

我在一篇研究论文中也看到了一种算法,类似于:

T(n,m)=某个表达式

任何帮助都将不胜感激

谢谢

编辑:时间复杂度取决于两个输入的算法示例可以是基数排序

我知道基数排序通常表示为O(n*k),其中n是要排序的元素数,k是最大值的位数


忽略T(n)的确切细节,这是如何表示的?

如果算法的复杂度取决于单个参数,并且您希望将该参数称为
X
,那么时间复杂度也将取决于
X
,而不是
n
(什么是
n
):例如
T(X)=X^2


如果算法的复杂度取决于参数
n1
n2
,…,
nk
(且参数相互独立),则时间复杂度将是
k
参数中的函数,
T(n1,…,nk)


例如,一个算法需要两个长度为
x
y
的字符串并打印它们,它的时间复杂度
T(x,y)=O(x+y)
O(n*k)
x
k
中都是线性的(显然),可以说
O(n)
,这意味着
k
是固定的(或反之亦然)。毕竟,大多数现实世界的算法都有许多参数;在这种情况下,它的教科书只依赖于一个“正确的”,在这种情况下,作为它的唯一符号,这实际上是一个惯例。我可以说是
O(n*k)
O(k)
O(x)中的任何一个
在理解假设的情况下是正确的。在上述最佳情况为CY+C的示例中,如果我被问到关于T(X)的最佳情况,它是否会是常数,因为关于X的运行时间不受Y的影响(在最佳情况下)?当然不会。如果问题是“关于X的最佳情况”,您可能希望看到关于X的运行时间。但我遇到的问题是,如果我计算出最好的情况,例如CY+C,而他们要求X,我不明白那会是什么