算法導論學習筆記(1)

課時1:程序員

在程序設計方面,什麼是比性能更重要的?算法

1 正確性 2 簡潔 3 可維護性 4 程序員的時間成本5 健壯性 6 特性(功能)7 模塊化 8 安全 9 用戶友好安全

爲何關注性能?ide

1 性能的好與壞,直接決定着可行仍是不可行模塊化

2 算法是一種描述程序行爲的語言,普遍應用於計算機科學領域,被全部的實踐者所採用的理論語言,一種讓程序最爲簡潔的思考方式。性能是基礎函數

 

 

insert on sort(插入排序)性能

運行時間的問題:idea

  * 輸入是否有序設計

  * 輸入規模:將輸入的規模將其參數化,time=f(input size);blog

  * 運行時間的上限

最須要關注的一種分析:最壞狀況分析

T(n)定義爲輸入規模爲n時的最長運行時間

有時討論:平均狀況

T(n)成了輸入規模n之下全部可能輸入的指望時間:每種輸入的運行時間*那種輸入出現的機率

 假象,可能永遠不會出現,而且有必定的欺騙性:最好狀況

 

算法的大局觀(big idea):漸進分析

1 忽略掉那些依賴於機器的常量

2 不是去檢查實際的運行時間,而是關注運行時間的增加 

漸進符號:Θ(theta)去掉低階項,忽略前面的常數因子

 

課時2:

Θ符號:

f(n)=Θ(g(n)),表示存在正常數c一、c2和n0,使對全部的n>=n0,有0<=c1g(n)<=f(n)<=c2g(n);

對任一個函數f(n),若存在正常數c一、c2,使當n充分大時,f(n)能被夾在c1g(n)和c2g(n)中間,則f(n)屬於集合Θ(g(n)),

Ο符號:

f(n)=Ο(g(n)),表示存在正常數c和n0,使對全部的n>=n0,有0<=f(n)<=cg(n);

Ο符號在一個常數因子內給出某函數的一個上界

Ω符號:

f(n)=Ω(g(n)),表示存在正常數c和n0,使對全部的n>=n0,有0<=cg(n)<=f(n);

對全部在n0右邊的n值,函數f(n)的數值等於或大於cg(n)

定理:對任意兩個函數f(n)和g(n),f(n)=Θ(g(n))當且僅當f(n)=Ο(g(n))和f(n)=Ω(g(n));

ο符號:

f(n)=ο(g(n)),對任意正常數c>0,存在常數n0>0,使對全部的n>=n0,有0<=f(n)<=cg(n);

非漸近緊確的上界

ω符號:

f(n)=ω(g(n)),對任意正常數c>0,存在常數n0>0,使對全部的n>=n0,有0<=cg(n)<f(n);

非漸近緊確的下界

 

當漸進記號只出如今等式(或不等式)的右邊,如n=Ο(n*n)時,等號表示集合的成員關係:n∈Ο(n*n);

當漸進符號出如今某個公式中時,咱們將其解釋爲一個不在意其名稱的匿名函數,例如:2n*n+3n+1=2n*n+Θ(n)即表示2n*n+3n+1=2n*n+f(n),其中f(n)是某個屬於集合Θ(n)的函數,

 

經常使用函數:

  指數式:對任意實數a>0、m和n,有下列恆等式:

解遞歸式的三種方法:

(1) 替換法:

  第1步 猜答案  第2步 數學概括法 第3步 找出參數,使問題成立

(2) 遞歸樹:

(3 )主方法:

 

 

相關文章
相關標籤/搜索