Time complexity 当使用大O表示法分析搜索算法的最坏情况时间复杂度时,为什么表示输入的变量不存在?

Time complexity 当使用大O表示法分析搜索算法的最坏情况时间复杂度时,为什么表示输入的变量不存在?,time-complexity,Time Complexity,谢谢你愿意帮忙 直截了当地说,在分析搜索算法的最坏情况时间复杂度时,我对使用大O表示法感到困惑。 例如,Alpha-Beta修剪的最坏情况时间复杂度为O(b^d),其中^表示~的幂,b表示平均分支因子,d表示搜索树的深度 我确实知道,最坏情况下的时间复杂度将小于或等于一个正常数乘以b^d,但为什么这里允许使用大O符号?变量n,输入大小,到哪里去了?我确实知道,相同大小的输入可能会导致算法的时间复杂度出现显著差异 我所做的所有研究都只是从增长函数的角度解释了“在分析最坏情况下时间复杂度时使用大o表

谢谢你愿意帮忙

直截了当地说,在分析搜索算法的最坏情况时间复杂度时,我对使用大O表示法感到困惑。 例如,Alpha-Beta修剪的最坏情况时间复杂度为O(b^d),其中^表示~的幂,b表示平均分支因子,d表示搜索树的深度

我确实知道,最坏情况下的时间复杂度将小于或等于一个正常数乘以b^d,但为什么这里允许使用大O符号?变量n,输入大小,到哪里去了?我确实知道,相同大小的输入可能会导致算法的时间复杂度出现显著差异

我所做的所有研究都只是从增长函数的角度解释了“在分析最坏情况下时间复杂度时使用大o表示法”,该函数的变量y为时间复杂度,变量x为输入大小。还有大o符号的正式定义,这让我对上面的问题更加困惑


如果您试图回答我的问题,我们将不胜感激。

您在这里提到的输入大小n在本例中为d。如果n是树中的条目数,则可以通过ln_2(n)计算d,假设树是一个平衡的二叉树。

大O表示法意味着您正在讨论一个非常大的n的运行时是什么。在您注意到的情况下,
O(b^d)
n
是随输入大小而变化的变量。在这种情况下,
d
将是您的
n
。正如您所发现的,一些符号使用了许多变量

n
只是元素数量的通用术语,但运行时可能因许多因素而有所不同-树的深度,或者完全不同的列表。例如,要遍历如下列表:

for n in firstList:
    for k in secondList:
        do stuff

成本将是
O(n*k)

谢谢!但是我真的不明白你所说的“n是你的树中的条目数”是什么意思……而且,我很抱歉,我不能更改你答案的公开显示的帖子分数,因为我的声誉是1(哈哈…)。当谈到树时,n指的是树中的节点数,d通常指深度。尽管我的困惑已经被上面的答案解决了,我还是喜欢你清晰的解释。它使我确信我已经正确地理解了它。谢谢