【问题标题】:Finding the upper bound of a mathematical function (function analysis)求数学函数的上界(函数分析)
【发布时间】:2016-05-29 02:05:07
【问题描述】:

我试图通过我拥有的一本书来理解 Big-O 表示法,虽然我有点困惑,但它通过使用函数来涵盖 Big-O。这本书说 O(g(n)) 其中 g(n) 是 f(n) 的上限。所以我理解这意味着 g(n) 在较大的 n 值下给出了 f(n) 的最大增长率。​​p>

并且存在一个 n_0,其中 cg(n)(其中 c 是某个常数)和 f(n) 的增长率具有相同的增长率。​​p>

但我对这些关于在数学函数中找到大 O 的示例感到困惑。

这本书说找到 f(n) = n^4 +100n^2 + 50 的上限 然后他们说 n^4 +100n^2 + 50

这很令人沮丧,因为我不明白,但我觉得这是一个我必须理解的重要话题。

如果有人好奇,这本书是 Narasimha Karumanchi 的《数据结构和算法变得容易》

不确定这篇文章是属于这里还是属于数学板。

【问题讨论】:

  • 这可能更多地属于数学板,尽管这是数学和 CS 之间有很多重叠的领域之一。

标签: math big-o asymptotic-complexity


【解决方案1】:

准备工作

首先,让我们松散地声明fO(g(n)) 中的定义(注意:O(g(n)) 是一个函数集,所以为了挑剔,我们说@987654324 @ 在O(...) 中,而不是f(n)O(...) 中)。

如果一个函数f(n)是in O(g(n)),那么c·g(n)是一个上界 f(n),对于某个常数 c 使得 f(n) 总是 ≤ c · g(n), 对于足够大的 n(即,对于某个常数 n0,n ≥ n0)。

因此,为了证明f(n)O(g(n)) 中,我们需要找到一组满足的常数 (c, n0)

f(n) < c · g(n), for all n ≥ n0,                                (+)

但是这个集合不是唯一的。即,找到使 (+) 成立的常数 (c, n0) 的问题是简并。事实上,如果存在任何这样的常数对,就会存在无数个不同的这样的常数对。


显示f ∈ O(n^4)

现在,让我们继续看看让你感到困惑的例子

求函数的上渐近界

f(n) = n^4 + 100n^2 + 50                                      (*)

一种直接的方法是用高阶项表示(*) 中的低阶项,具体而言,w.r.t.界限 (... &lt; ...)。

因此,我们看看是否可以在 n 上找到一个下限,使得以下成立

100n^2 + 50 ≤ n^4, for all n ≥ ???,                             (i)

通过解方程,我们可以很容易地找到 (i) 中的等式何时成立

m = n^2, m > 0

m^2 - 100m - 50 = 0
(m - 50)^2 - 50^2 - 50 = 0
(m - 50)^2 = 2550
m = 50 ± sqrt(2550) = { m > 0, single root } ≈ 100.5

     => n ≈ { n > 0 } ≈ 10.025

因此,(i)n ≳ 10.025 成立,但我们更愿意在 n 上用一个整洁的整数值表示这个界限,因此四舍五入到 11

100n^2 + 50 ≤ n^4, for all n ≥ 11,                              (ii)

(ii) 看来,以下内容显然成立

f(n) = n^4 + 100n^2 + 50 ≤ n^4 + n^4 = 2 · n^4, for all n ≥ 11, (iii)

这种关系正是(+)c = 2n0 = 11g(n) = n^4,因此我们已经证明了f ∈ O(n^4)。然而,再次注意,常量cn0 的选择是方便 之一,这不是唯一的。由于我们已经证明(+) 适用于一组常数(c,n0),我们可以证明它适用于无数种不同的常数选择(例如,它自然适用于c=10n0=20 , ... 等等)。

【讨论】:

    猜你喜欢
    • 2021-01-14
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    相关资源
    最近更新 更多