我在读一本数据结构和算法的书,但是我在这些例子和它们的答案上陷入了困境:
问)查找的上限
i)f(n)=3n+8
ii)f(n)=n^2+1
iii)f(n)=n^4+100n^2+50
Narasimha Karumanchi
更让人困惑的是,当我关注这个时,它试图说,我们区分是为了得到一个上限,但似乎也不起作用,有人知道对此的一个很好的解释吗?(我更喜欢一个基本的解释)。
谢谢。
最佳答案
所以上界函数是一个随着元素的增加将大于原始函数的函数。
所以所给出的解决方案是一种获取上限的简单方法。
所以对于第一个例子,你要做的就是找到增长最快的函数。
在f(n) = 3n + 8
中,它将是线性因子3n
,因此您可以使用n
替换函数的其余部分(增长较慢的部分)在本例中,它只是常数项8
,但它可能是一个较长的函数,如在示例3中,您将100n^2 +50
替换为n^4
。回顾示例1,这将给出上限函数f(n) = 3n + n
,它将减少到f(n) = 4n
。现在设置不等式3n + 8 ≤ 4n
并求解n以得到8 ≤ n
现在我们可以将n
中4n
前面的常量设置为c
(作为常量)和n-nought = 8
,因为它是使函数成为上界的最小值。记住n-nought不能为负,因为元素的数量为负并没有真正的意义,如果你得到多个解,就用最小的数。编辑:如果你得到的不是n-nought的整数,也可以使用最近的大整数例如,如果得到10.2,则使用11(因为不能有元素的一部分)
我相信你可以做剩下的;)
编辑2:这只是找到上界的一种方法,我怀疑你的教科书也希望你这样做,但是上界函数有无限多。
关于algorithm - Big-O找到函数/算法的上限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57150559/