一、漸進符號
1、of(n)=o(g(n)) 表示存在適當的常數c和n0使得f(n)小於或等於c*g(n),對於充分大的n成立
0<=f(n)<=c*g(n) (c>0,n0>0,n>=n0)
例:2n^2 = o(n^3)
粗略的說就是去掉首項係數和低階項,剩下的小於或等於n^3
o粗略的說就是小於或等於,這裡的等號不對稱
f(n)是屬於g(n)構成的函式集,可以定義o(g(n))為乙個函式集
o(g(n))=
即可以理解為2n^2 屬於o(n^3)
例:f(n)=n^3+o(n^2)
即存在某個函式h(n)在o(n^2)中使得f(n)=n^3+h(n),總的來說有低階項以某個常數乘以n^2為上界,對於足夠大的n成立
如果o符號在左邊的話.等號為"是"的意思
n^2+o(n) = o(n^2)
對於任何f(n)屬於o(n),總有乙個函式h(n)屬於o(n^2),使得n^2+f(n)=h(n)
對於任何在左邊巨集展開的表示式,都能在右邊找到乙個對應的展開,使左右相等
2、ωω(g(n))=
例: 根號n=ω(lgn)
根號n至少是lgn的常數倍
ω對應大於或者等於
3、θθ(g(n))=o(g(n))∩ω(g(n)) 故θ代表等於即n^2=θ(n^2)
4、o、w o相當於小於,w相當於大於,任意常數c都存在乙個任意常數n0,不等式必須對於所有的c成立
例:2n^2=o(n^3) n0=2/c 不管c多小,依然成立
二、解遞迴式
1.代換法
1.1. 猜答案 大致知道形式即可
1.2. 用數學歸納法證明
1.3. 尋找常數係數,查詢什麼係數可以成立
例:t(n)=4t(n/2)+n
t(1)=θ(1)
試猜想t=o(n^3)
t(k) = c k^3 kt(n) = 4t(n/2)+n<=4c(n/2)^3+n
=1/2*c*n^3+n=cn^3-(1/2*c*n^3-n)
<=cn^3
(1/2*c*n^3-n)>=0 c>=1,n>=1
證明緊界 t=o(n^2)
t(k) = c k^2 kt(n) = 4t(n/2)+n<=4c(n/2)^2+n
=cn^2+n=cn^2-(-n)
<=cn^2
-n>=0 n>=0 n!=0 故不成立
改進數學歸納 增加低階項
t(k) = c1 k^2-c2*k
t(n)= 4t(n/2)+n = 4(c1 (n/2)^2-c2*n/2)+n
=c1 n^2 - 2c2 * n + n
=c1 n^2 - c2*n - (c2-1)*n
<=c1 n^2 - c2 * n
c2-1>=0 即 c2>=1
對於特殊情況
t(1)<=c1-c2
t(1)=θ(1)
故c1需要足夠大
2.遞迴樹法
例:t(n) = t(n/4)+t(n/2)+n^2
3.主方法
只能運用到特定的遞迴式上,符合t(n)=at(n/b)+f(n),每個子問題的規模應該相等
a>=1 b>1 f(n) 漸進趨正(對於足夠大的n,f(n)是正的,存在某個特定n0,當n>=n0時,f(n)>0)
簡單思路:比較非遞迴函式f(n)和n^logba(logba是遞迴樹中葉結點的數量)
3.1.1 f(n)較小
f(n)=o(n^(logba-ε))(ε>0) => t(n) = θ(n^(logba))
3.1.2 f(n)相等
f(n) = θ(n^logba*(lgn)^k)(k>=0)
t(n) = θ(n^logba*(lgn)^(k+1))
3.1.3 f(n)增長較快
f(n) = ω(n^(logba+ε))(ε>0)
同時對f(n)有乙個假設,考慮f(n)如何增長
af(n/b)<=(1-ε′)*f(n) 存在 ε′>0 =>t(n)=θ(f(n))
彙編 第二節
第二節 cpu主要有有運算器,控制器,暫存器,三部分組成 8086 cpu有14個暫存器,如ax,bx,cx,dx,si。8086所有暫存器都是16位的,可以存放2個byte即位元組,16位二進位制數 所能存放的最大數值是 11111111111 2 16 1 從0開始,所以 1嘛 通用暫存器為4個...
函式第二節
coding utf 8 1.定義乙個方法get num num num引數是列表型別,判斷列表裡面的元素為數字型別。其他型別則報錯,並且返回乙個偶數列表 注 列表裡面的元素為偶數 def get num l l for i in l 判斷列表l的元素是否都為整形 if not isinstance...
第二節練習
a b 2 鏈式賦值 print a print b c id a 位址print c c type a 型別 print c a,b 2,3 系列解包賦值 a,b b,a print a print b 基本運算 print 3 2 print 30 5 print 30 5 print 30 5...