感谢您愿意提供帮助。
直截了当,在分析搜索算法的最坏情况时间复杂度时,我对使用Big O表示法感到困惑。 例如,Alpha-Beta修剪的最坏情况时间复杂度是O(b ^ d),其中^表示〜的幂,b表示平均分支因子,d表示搜索树的深度。
我确实得到最坏情况的时间复杂度将小于或等于正常数乘以b ^ d,但为什么在此允许使用大O表示法?变量n,输入大小在哪里?我知道相同大小的输入可能会导致算法时间复杂度的显着差异。
我所做的所有研究只解释了在最坏情况时间复杂度的分析中使用大符号"就增长函数而言,函数具有作为时间复杂度的变量y和作为输入大小的变量x。还有正式的大写符号定义,这使我对上述问题更加困惑。 definition 1 definition 2
非常感谢任何回答我问题的尝试。
答案 0 :(得分:1)
此处引用的输入大小为n,在本例中为d。如果n是树中条目的数量,则d可以通过ln_2(n)计算,假设您的树是平衡二叉树。
答案 1 :(得分:0)
Big O符号意味着您正在讨论非常大的n的运行时。如果您注意到O(b^d)
,则n
是随输入大小而变化的变量。在这种情况下,d
将是您的n
。正如您所发现的,一些符号使用了许多变量。
n
只是元素数量的一般术语,但运行时可能会因树的深度或完全不同的列表而在很多因素上发生变化。例如,要遍历这样的列表:
for n in firstList:
for k in secondList:
do stuff
费用为O(n*k)
。