Algorithm 证明大O和规则?

Algorithm 证明大O和规则?,algorithm,big-o,proof,Algorithm,Big O,Proof,我不确定如何正式证明求和的大O规则,即: f1(n) + f2(n) is O(max(g1(n)),g2(n)) 到目前为止,在我的努力中,我假设了以下几点: 设有两个常数c1和c2,以便c2>c1。根据大O的定义: f1(n) <= c1g1(n) and f2(n) <= c2g2(n) gmin(n) <= c*gmax(n) for n > some k f1(n)你甚至不需要这个定义——只需将两边除以增长较快的函数,取无穷大的极限,增长较慢的函数将接近零

我不确定如何正式证明求和的大O规则,即:

f1(n) + f2(n) is O(max(g1(n)),g2(n))
到目前为止,在我的努力中,我假设了以下几点:

设有两个常数
c1
c2
,以便
c2>c1
。根据大O的定义:

f1(n) <= c1g1(n) and f2(n) <= c2g2(n)
gmin(n) <= c*gmax(n) for n > some k

f1(n)你甚至不需要这个定义——只需将两边除以增长较快的函数,取无穷大的极限,增长较慢的函数将接近零(即,它不重要)。

gmax = max(g1, g2), and gmin = min(g1, g2). 
gmin是O(gmax)。现在,使用定义:

f1(n) <= c1g1(n) and f2(n) <= c2g2(n)
gmin(n) <= c*gmax(n) for n > some k
gmin(n)一些k
将gmax(n)添加到每一侧可得到:

gmin(n) + gmax(n) <= c*gmax(n) + gmax(n) for n > some k
gmin(n) + gmax(n) <= (c+1)*gmax(n)       for n > some k
g1(n) + g2(n) <= c'*gmax(n)              for n > some k
gmin(n)+gmax(n)一些k
gmin(n)+gmax(n)一些k

g1(n)+g2(n)我想我可能更像一个建构主义者,我会这样来解决这个问题:

根据大O的定义,存在正c1、c2、N1和N2,因此

f1(n)N1

f2(n)N2

让我们:

N'=最大值(N1,N2)
c'=c1+c2
g'(n)=最大值(g1(n),g2(n))

那么对于所有n>n'我们有:


f1(n)搜索引擎上必须有大量的解决方案-这是一个吗?我已经看过谷歌,尤其是那个帖子,但它似乎更像是对语义的攻击。我没有发现任何有用的东西。下面建议的极限方法对我来说是有意义的,所以我会尝试一下。我不确定这是不是真的在讨论这个话题,但已经有了答案,所以很明显大家对它有一些兴趣。哦,这是有意义的!限制不是我认为应该包括的东西,但它确实非常有意义!谢谢编辑:事实上,这是可以接受的,因为它不是严格意义上的等式,而是集合的一个元素,因此没有“两面”?