Big o 使用大O表示法计算树中的节点数

Big o 使用大O表示法计算树中的节点数,big-o,Big O,我该如何解决这个问题:使用大O表示法给出深度为n的树中可以包含的节点数 我不是在寻找确切的答案或其他任何东西,只是想知道我将如何去解决这个问题 首先,必须找到一个函数fn,它表示深度为n的树中可以包含的节点数,然后从n中导出大O 从fn推导大O的简单方法如下所示,如上链接所述: 如果外汇是几个项目的总和,则保留增长率最大的项目,而忽略所有其他项目 如果fx是多个因素的乘积,则该乘积中不依赖于x的任何常数项都将被忽略 所以如果你发现fn=100*2^n+100000000*n^2+20000000

我该如何解决这个问题:使用大O表示法给出深度为n的树中可以包含的节点数


我不是在寻找确切的答案或其他任何东西,只是想知道我将如何去解决这个问题

首先,必须找到一个函数fn,它表示深度为n的树中可以包含的节点数,然后从n中导出大O

从fn推导大O的简单方法如下所示,如上链接所述:

如果外汇是几个项目的总和,则保留增长率最大的项目,而忽略所有其他项目

如果fx是多个因素的乘积,则该乘积中不依赖于x的任何常数项都将被忽略

所以如果你发现fn=100*2^n+100000000*n^2+20000000000000


那么大O将是O2^n

这在另一个答案中已经提到,但具体来说,在确定这个问题的大O表示法时,有两个相关的量

树的深度 每个节点具有k个子节点的平均数 很明显,如果树的深度是无限的,那么节点的数量将是无限的。big-O表示法真正想要捕捉的是树中节点数量增长到无穷大的速率

因为树的每一层的节点数大约是前一层节点数的k倍。在第一层我们有一些a节点,在第二层我们有k*a节点,在第三层我们有k*k*a节点

关于复杂性的一个重要部分是,像a这样的常数在事物的大体系中并不重要,因为2*无穷大仍然是无穷大。因此,上一步至中的相关进展为:

1 -> k -> k*k ->...
从这几个例子来看,函数的形式似乎是k^something,你说过不提供答案,所以我不会直接给出答案,但我认为这个答案把你带到了它的门口


祝你好运

您需要找到表示深度为n的树中节点数上限的函数。因此,您需要查看每个节点具有最大可用子节点数的情况。在二叉树的情况下,每个节点必须有2个子节点,所以只需画一些二叉树并寻找方案。请看下面的函数:

f(n) = number of nodes in depth n
f(1) = 1
f(2) = 2
f(3) = 4
f(4) = 8
f(n) = 2 * f(n-1) = 2 * 2 * f(n-2) = 2 * 2 * 2 * f(n-3) = 2*2*2*2...*2*f(1) 
乘以两个n-1乘以2^n-1*1=2^n-1

因此,要获得深度为n的二叉树中节点的上界,需要对这些值求和:

Sum of f(n) for n from [1, n] = Sum of 2^(n-1) where n is from 1 to n = 2^(N) - 1
这是一个求和的封闭式公式,你可以从任何一本数学教科书上得到,也可以用手用一些技巧推导出来

所以二叉树中的最大节点数是以2^n-1为界的,其中n是二叉树的深度,这意味着它空属于O2^n。在大Oh符号中,你去掉了每个常数。

首先,哪种树?二叉树?N-树?您需要指定树中每个节点可能有多少子节点,否则答案是无限的。@Henry那么如果答案是无限的,您将如何使用大O来回答这个问题?你显然不能给出一个完整的答案,但是你会写些什么来完成这样的工作呢out@user1300788在一个无限答案的情况下,你不能。大O给出了一个常数因子的上限,但在这种情况下没有上限@ᴋᴇʏsᴇʀ不,换个说法-X^n。你在解释大O符号,你没有回答这个问题。我说我的问题的答案是,n=n2^n=answer@user1300788也许那是个打字错误,但你不能写n=N2^n@Dukeling当前位置他不想要问题的答案,只想要计算的步骤。我指出了这一点。@user1339255在我看来,大O表示法的基础知识与如何将其应用于这个问题有点太远了。另外,一个投票最多的问题已经涉及到了这一点——我很高兴成为这个问题上唯一没有投反对票的答案。@user1300788如果它是一个二叉树,其中每个节点正好有2个子节点,那么是的。但是,你的问题中没有具体说明这一点。记住,如果你觉得这很有用,别忘了把它标记为可接受的答案。如果树的深度是2,那么可以包含的节点数是22吗^2@user1300788根据深度的精确计算方式以及根节点的数量,答案肯定是22^2,但是你比我更了解你的具体应用。不,它不会是22^2:。对于大OSubtle,它不是这样工作的,但重要的一点是:大O表示法并不表示上界,如果子元素的最大数量为10,则并不意味着复杂性为10^n。想象一下,如果在树中只有一个节点实际上有两个子节点。在这一点上,你的big-O表示法解释显然会失败。@SlaterTyranus在这种情况下,问题的措辞方式意味着树中可以包含的节点数意味着我们
e正在寻找上限。@interjay,但举例来说,约束条件是平均子项数,而不是最大子项数。我并不是说你的答案一定是错的,我是说如果没有明确提到,它会做出误导性的假设。@SlaterTyranus实际上big-O是定义的上限。例如,说“正在播放的内容也在^2上”是正确的,这正是为什么教学机构和其他所有人都应该避免这样做的原因-要么他们必须将正确的答案标记为不正确,要么你可以说几乎所有内容都在^n上。对于紧束缚,它必须是大的欧米茄。