演算法分析 學習筆記

2022-01-29 08:39:44 字數 938 閱讀 9149

he calculated just as men breathe, as eagles sustain themselves in the air.          ----francois arago

1.正確性

(不變性

單調性)

2.複雜度。

小知識:因為c++等高階語言的基本指令,均等於常數條ram的基本指令;在漸進意義下,二者大體相當。

迭代:級數求和

遞迴:遞迴跟蹤 + 地推方程

猜測 + 驗證。

算數級數

與末項平方同階: t(n) = 1 + 2 + ... +n = n( n+1)/2 = o(n^2)

冪方級數

比冪次高出一階

t2(n) = 1^2 + 2^2 + 3^2 +  ...  +  n^2  = n(n+1)(2*n+1)/6 = o(n^3);

t3(n) = 1^3 + 2^3 + 3^3 + ...   + n^3 = n^2(n+1)^2/4 = o(n^4);

同理:k^m(k 從1 到 n )之和 的複雜度是 n^(m+1)

幾何級數

ta(n) = a^0+a^1+...a^n = (a^(n+1) - 1 )/(a - 1) = o(a^n)

收斂級數

1/1/2 + 1/2/3 + 1/3/4 + .. + 1/(n-1)/n = 1 - 1/n = o(1);

1+ 1/(2^2)  + ... + 1/n^2 < 1 + 1/(2^2) + ... =pi^2/6 =o(1);

(以下可能未必收斂,然而長度有限)

h(n) = 1 + 1/2 + 1/3 + ... + 1 / n = o(log n)     //調和級數

log1 + log2 + log3 + ... + log n = log(n!) = o (n * log n)  //對數級數

演算法分析基礎學習筆記

複雜度分為時間複雜度和空間複雜度。複雜度這個玩意是用來表徵某段程式的執行效率的。程式的執行效率的具體表現形式又分為該程式執行時解決問題所用時間多少和所用記憶體大小。其中,解決問題所用時間多少的數量級被抽象為時間複雜度,一般來說,時間複雜度越小越好,所代表的的時間需求就越少 解決問題所用的記憶體多少的...

《演算法》學習筆記 演算法分析(1)

用於研究理解演算法的思想和方法 任務 科學家理解自然世界 策略 細緻地觀察真實世界的特點,通常還要有精確的測量 根據觀察結果提出假設模型 根據模型來 未來的事件 繼續觀察並核實 的準確性 如此反覆知道確認 和觀察一致 分類和類別 程式的執行時間。精確 近似 原理與通則 準確測量程式的執行時間是困難的...

堆排序演算法分析 《演算法導論》學習筆記

max heapify a,i 1 l left i 2 r right i 3ifl heap size a and a l a i 4thenlargest l 5elselargest i 6ifr heap size a and a r a largest 7thenlargest r 8i...