争论大O还是关于theta的最佳方式是什么?

时间:2017-12-05 11:01:38

标签: algorithm big-o

我们被要求提供一个$ n + 4![\ sqrt {n}] = O(n)$有一个很好的论证和逻辑构建但它没有说一个好的论证会是怎么样的,所以我知道$ 2n + 4 \ sqrt {n} $总是更大n = 1但是我不知道如何争论它以及如何逻辑地构建它因为我只是想到这一点,它碰巧是真的。有人可以帮助解决这个例子,所以我知道该怎么做吗?

2 个答案:

答案 0 :(得分:3)

证据是一个令人信服的逻辑论证。如果有疑问,写一个令人信服的逻辑论证的好方法是使用一个可接受的模板作为你的论点。然后,其他人可以简单地检查您是否正确使用了模板,如果是,则参数的有效性如下。

显示渐近边界的有用模板是数学归纳。要使用此功能,您需要证明您尝试证明的内容对于特定的简单情况(称为基本情况)是正确的,然后您认为在所有情况下都达到一定的大小(感应假设)你通过证明假设暗示声明对于下一个大小的情况是正确的来完成证明。如果正确完成,您将显示声明(由自然数n参数化)对于固定n和所有较大n都是如此。这正是证明渐近边界所需要的。

在您的情况下:我们想要显示n + 4 * sqrt(n) = O(n)。回想一下,big-Oh的(一个?)正式定义如下:

  

函数f由函数g从上面绑定,编写f(n) = O(g(n)),如果存在常量c > 0n0 > 0,那么对于所有{ {1}},n > n0

考虑案例f(n) <= c * g(n)。对于任何常量n = 0,我们都有n + 4 * sqrt(n) = 0 + 4 * 0 = 0 <= 0 = c * 0 = c * n。如果我们现在假设所有c的声明都适用于n,我们是否可以证明k是真的?这需要n = k + 1。现在有两种情况:

  1. (k + 1) + 4 * sqrt(k + 1) <= c * (k + 1)不是一个完美的广场。由于我们正在对算法进行分析,因此暗示我们使用整数数学,因此在这种情况下k + 1。因此,归纳假设sqrt(k + 1) = sqrt(k)提供了(k + 1) + 4 * sqrt(k + 1) = (k + 4 * sqrt(k)) + 1 <= (c * k) + 1 <= c * (k + 1)

  2. c > 1是一个完美的广场。由于我们正在对算法进行分析,因此暗示我们使用整数数学,因此在这种情况下k + 1。因此,归纳假设sqrt(k + 1) = sqrt(k) + 1提供了(k + 1) + 4 * sqrt(k + 1) = (k + 4 * sqrt(k)) + 5 <= (c * k) + 5 <= c * (k + 1)

  3. 因为这两个案例涵盖了所有可能性,并且在我们选择c >= 5时,n = k + 1的声明适用于c >= 5,我们会看到所有n + 4 * sqrt(n) <= 5 * n n >= 0 = n0。以上是n + 4 * sqrt(n) = O(n)

    的证明

答案 1 :(得分:2)

您应该查看以下网站https://en.wikipedia.org/wiki/Big_O_notation

对于O大符号,我们会说如果函数如下:X^3+X^2+100X = O(x^3)。这是因为如果X->一些非常大的数字,X^3项将成为等式中的主导因素。

您可以在等式中使用相同的逻辑。哪个术语在你的等式中占主导地位。 如果不清楚,您应该尝试绘制两个术语并查看它们如何缩放。这可能更清楚了。