写[(m + n)^ m] / m是否有效!作为O([n / m] ^ m)作为其宽松上限?

时间:2019-12-03 11:02:01

标签: algorithm big-o complexity-theory upperbound

在将 [(m + n)^ m] / m!的上限写为 O([n / m] ^ m)时,我考虑过那个 m! = O(m ^ m)

2 个答案:

答案 0 :(得分:2)

您所说的m!o(m^m)。因此,您无法在A = (m+n)^m / m!中替换它来获得上限!相反,您可以使用斯特林逼近法来获得适当的上限。如我们所见(请参阅here):

m! = \sqrt{2\pi m} (m/e)^m (1 + O(1/m))

通过将A替换为m!,可以获得(m/e)^m的上限。因此:

A < (n+m)^m / (m/e)^m = (e*(n+m)/m)^m = (e * (n/m + 1))^m

如果n > m,我们知道(n/m + 1)^m = Theta((n/m)^m)。因此,A \in O(e^m (n/m)^m)

答案 1 :(得分:1)

不是。


原因:在表达式((m + n) m )/ m!中,值为“ m!”。是分母。

在一个分数中,增加分母会使该数字更小。示例:数字4大于3。因此,当放入分母时,1/4小于1/3 *

对于小数,要获得更宽松的上限,您可以做两件事:

  1. 增加分子;和/或,
  2. 减少分母。

自从您接近:

  • 您正在使分母变得宽松;因此,
  • 您实际上正在增加分母;因此,
  • 您正在达到较小的分数值;

借给您更严格的约束,而不是宽松的约束。


*这里的小学数学:将比萨分成四个相等的部分并得到一个切片,而将比萨分为三个相等的部分并得到一个大切片-当仅将其分成3个时,您将获得更多的比萨人。