证明Big-O Sum规则?

Rom*_*der 4 algorithm big-o proof

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

f1(n) + f2(n) is O(max(g1(n)),g2(n))
Run Code Online (Sandbox Code Playgroud)

到目前为止,我认为我的努力如下:

要有两个常量c1c2这样c2 > c1.按大O定义:

f1(n) <= c1g1(n) and f2(n) <= c2g2(n)
Run Code Online (Sandbox Code Playgroud)

我该怎么办?在这一步引入变量的数值替换来证明这种关系是否合理?不知道g或者f,这是我能想到的唯一方法.

Imr*_*err 5

gmax = max(g1, g2), and gmin = min(g1, g2). 
Run Code Online (Sandbox Code Playgroud)

gmin是O(gmax).现在,使用定义:

gmin(n) <= c*gmax(n) for n > some k
Run Code Online (Sandbox Code Playgroud)

向每一侧添加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
Run Code Online (Sandbox Code Playgroud)

所以我们有g1 + g2是O(max(g1,g2)).

由于f1 + f2是O(g1 + g2),因此big-O的传递性使得f1 + f2为O(max(g1,g2)).QED.