必須先說明一下定義(我看的定義是電子工業出版社王曉東的書),他說的是在文獻中有兩種定義,取的是以下定義:
設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.
如下圖所示:
演算法複雜性分析及運算規則證明 一
我們有必要知道演算法的複雜性是演算法執行所需要的計算機資源的量,需要空間資源的量稱為空間複雜度,同樣需要時間資源的量稱為時間複雜度。那麼這個量與什麼有關係呢?這個量應該是只依賴於要解決的問題的規模,演算法的輸入和演算法的本身。專業術語用c f n,i,a 三元函式表示。時間t time 空間s sp...
演算法 演算法複雜性分析
演算法分析是對乙個演算法需要多少計算時間和儲存空間作定量分析。此文主要介紹如何使用漸近分析記號來表示演算法的時間複雜度以及如何對演算法效率進行比較。輸入規模度量 執行時間的度量單位 演算法的最優 最差和平均效率 小規模輸入在執行時間上的差別不足以將高效演算法和低效演算法區分開來。乙個需要指數級操作次...
《計算複雜性與演算法分析》和《計算複雜性》學習
今天偶然間碰到數學界著名的七大千禧難題,關注了p和np問題,但是裡面提到關於演算法的複雜性的描述已經超出了自己的知識範圍,我找到了一本書來彌補這個不足,即 計算複雜性與演算法分析 希望自己在看完這本書之後能夠對計算複雜性有完整的概念 首先看看它的目錄 其實大部分的知識都有接觸過,但是沒有形成體系 接...