渐近界与大O符号

3

假设我们有两个单调递增的函数f和g,使得f(n)=Ω(n)且f(g(n))=O(n),那么我想得出结论g(n)=O(n)。这种说法正确吗?

我认为这是一个错误的说法,我一直试图提供反例来证明这是错误的说法,但尝试了很多次后,我开始持不同看法。

请问,如果这是一个错误的说法,你能否提供一些解释或示例,或者如果这是一个正确的说法,是否有一种证明方法。

1个回答

2
我相信这个说法是正确的。以下是证明。
假设 f(n) = Ω(n),这意味着存在常数 c,n0,使得对于任何 n ≥ n0
f(n) ≥ cn. (1)
同样地,由于 f(g(n)) = O(n),我们知道存在常数 d,n1,使得对于任何 n ≥ n1
f(g(n)) ≤ dn. (2)
现在有两种情况。第一种情况是 g(n) = O(1),在这种情况下我们完成了因为 g(n) 是 O(n)。第二种情况是 g(n) ≠ O(1),在这种情况下 g 增长无限大。这意味着存在一个 n2,使得 g(n2) ≥ n0(g 增长无限大,所以它最终超过了 n0),且 n2 ≥ n1(只需选择一个大的 n2)。
现在,选择任何 n ≥ n2。由于 n ≥ n2,我们有 g(n) ≥ g(n2) ≥ n0,因为 g 是单调递增的,因此根据(1),我们可以看到
f(g(n)) ≥ cg(n)。
由于 n ≥ n2 ≥ n1,我们可以将这个不等式与方程(2)结合起来,得到
dn ≥ f(g(n)) ≥ cg(n)。
因此,特别地,我们有
g(n) ≤ (d / c)n
对于所有 n ≥ n2,因此 g(n) = O(n)。

非常感谢! - david kokiashvili

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接