算法复杂性分析及运算规则证明(二)

突然发现算法复杂性分析及运算规则证明(一)中在运算规则证明中有点问题,所以务必做一下重新的说明.

必须先说明一下定义(我看的定义是电子工业出版社王晓东的书),他说的是在文献中有两种定义,取的是以下定义:

设f(N)和g(N)是定义在正数集上的正函数,存在常数C和自然数N0,使得存在N,当N>N0时,f(N)<=Cg(N).则称f(N)当N充分大时,上有界,且为g(N)。记为f(N)=O(g(N))。可画一个简图如下:

在此处先留下一个疑问就是f(N)=O(g(N))中"="的含义.

我们先看看这本书上的证明方法:

那么我们分析一下证明的第一句,设F(N)=O(f),此处的"="应该是O的定义的基础上,而不是数学上严格意义上的等于,从接下来的话就可以看出.因为他说:根据符合O的定义.......

但是为什么在下面的证明中(也就是证明的第二张图片)出现了O(f)+O(g)=F(N)+G(N),这岂不是说F(N)=O(f),G(N)=O(g)中的=是数学意义上的等于.

其实从第一张的图像上看,f(N)是无限逼近而且可以真正的重合也即等于,这从定义中就可以看出:f(N)<=cg(N),记为f(N)=O(g(N)),或者可以说这是个抽象的等于(无限接近也可以重合)

同理:这个加号+也是一个抽象的加号,而不是数学意义上的.

抽象意义下建立的东西在进行数学运算后仍然可以具有数学意义.类似的就有很多,比如说集合的加减.

最后还想说一下我的董老师的证明方法,他跟书上(网上)的不一样,他采取的就是集合的思想:要证A=B,先证A包含于B,再证B包含于A.

如下图所示:

猜你喜欢

转载自blog.csdn.net/a22222259/article/details/88349669