複雜度分為時間複雜度和空間複雜度。 ̄ω ̄= 複雜度這個玩意是用來表徵某段程式的執行效率的。程式的執行效率的具體表現形式又分為該程式執行時解決問題所用時間多少和所用記憶體大小。其中,解決問題所用時間多少的數量級被抽象為時間複雜度,一般來說,時間複雜度越小越好,所代表的的時間需求就越少;解決問題所用的記憶體多少的數量級被抽象為空間複雜度,且空間複雜度越小越好,所代表的空間需求就越小。
ο和ω這兩符號是一對天生的好**。它們都是用來近似地表徵某段程式的複雜度的。
我們先來看一下ο,ω,θ,o的數學定義。
(摘自《資料結構與演算法分析》一書)
定義:如果存在正常數c和n0 使得當 n >=n0 時t(n)<=cf(n),則記為t(n)=o(f(n))。在數學上,大o是用另乙個(通常更簡單的)函式來描述乙個函式數量級的漸近上界。在這裡,我們的實際演算法時間複雜度為t(n),即t(n)為對演算法實際執行時間的乙個量度。第乙個定義是說,最後總存在乙個點n0,在它以後cf(n)至少與t(n)一樣大。若忽略常數因子c,f(n)至少與t(n)一樣大。這就是說,f(n)總會大於或等於t(n),這樣,f(n)就形成了乙個對t(n)的漸進上界,此時稱o(f(n))為演算法的最壞情況。如下圖。定義:如果存在正常數c和n0 使得當 n >=n0 時t(n)>=cg(n),則記為t(n)=ω(g(n))。
t(n)=θ(h(n)) 當且僅當 t(n)=o(h(n)) 且 t(n)=ω(h(n))。
若 t(n)=o(p(n)) 且 t(n)!=θ(p(n)) 則記 t(n)=o(p(n))。
類似的,我們可以從第二個定義了解到g(n)為t(n)的漸進下界,此時稱此時稱ω(g(n))為演算法的最佳情況。如下圖。
而θ符號就是說演算法的時間複雜度恰好能用函式h(n)表徵,即t(n)=o(h(n)) 和 t(n)=ω(h(n)) 同時滿足,這樣,上下界就重合為一條確定的曲線,從而夾在上下界之間的t(n)就只能為這條曲線了。
然後o符號是說p(n)應該小於t(n)而不能達到t(n)。如下圖。
演算法分析 學習筆記
he calculated just as men breathe,as eagles sustain themselves in the air.francois arago 1.正確性 不變性 單調性 2.複雜度。小知識 因為c 等高階語言的基本指令,均等於常數條ram的基本指令 在漸進意義下,...
《演算法》學習筆記 演算法分析(1)
用於研究理解演算法的思想和方法 任務 科學家理解自然世界 策略 細緻地觀察真實世界的特點,通常還要有精確的測量 根據觀察結果提出假設模型 根據模型來 未來的事件 繼續觀察並核實 的準確性 如此反覆知道確認 和觀察一致 分類和類別 程式的執行時間。精確 近似 原理與通則 準確測量程式的執行時間是困難的...
機器學習基礎演算法筆記
緒論 接下來我們來看看在機器學習裡面的一些演算法 1.線性回歸 是利用稱為線性回歸方程序的最小平方函式對乙個或多個自變數和應變數之間關係進行建模的一種回歸分析。這種函式是乙個或多個稱為回歸係數的模型引數的線性組合。只有乙個自變數的情況稱為簡單回歸,大於乙個自變數情況的叫做多元回歸。線性回歸是回歸分析...