1,什麼是算法?算法有哪些基本特徵?請指出算法同程序的相同點與不一樣點。
答:算法是解決問題的方法或過程,是知足如下四個性質的指令序列
1)輸入:有 0 個以上的輸入 2)輸出:至少有 1 個輸出
3)肯定性:指令清晰、無歧義 4)有限性:指令執行次數有限,時間有限
5)可行性:
算法和程序的相同點:二者都具備輸入、輸出和肯定性的特徵 不一樣點:程序是算法用某種程序語言的具體實現,程序不知足算法具備的有限性性質 請描述算法設計的通常過程。
2,請描述算法設計的通常過程。
答:算法設計的通常過程是 1)提出問題 2)肯定數學模型 3)明確目的、條件和約束關係 4)設計求解步驟 5)結果評估與分析 若是在第 5 步的分析中對算法時間、空間複雜度或結果不滿意,能夠返回第 1 步或第 4 步進一步迭代,直至找到滿意的算法。
3,什麼是算法複雜性?它主要有哪兩個方面構成?
答:算法複雜性是算法運行時所須要的計算機資源的量,它包括兩個方面:時間複雜性(需 要時間資源的量)和空間複雜性(須要空間資源的量) 。
4,時間複雜性分析主要分哪三種狀況,哪一種狀況的可操做性最好,最具備實際價值?
答:時間複雜性分爲 3 種狀況,最好狀況、平均狀況、最壞狀況,可操做性最好,最具備實 際價值的是最壞狀況下的時間複雜性。
最壞狀況時間複雜性是規模爲n的全部輸入中,基本運算執行次數爲最多的時間複雜性。
平均狀況時間複雜性是規模爲n的全部輸入的算法時間複雜度的平均值 (通常均假設每種輸入狀況以等機率出現)。
5,表示漸進時間複雜性的三個記號的具體定義是什麼?
答:1. T(n)= O(f(n)):若存在c > 0,和正整數n0≥1,使得當n≥n0時, 總有 T(n)≤c*f(n)。 (給出了算法時間複雜度的上界,不可能比c*f(n)更大)
2. T(n)=Ω(f(n)):若存在c > 0,和正整數n0≥1,使得當n≥n0時, 存在無窮多個n ,使得T(n)≥c*f(n)成立。(給出了算法時間複雜度的下界,複雜度不可能比c*f(n)更小)
3. T(n)= Θ(f(n)):若存在c1,c2>0,和正整數n0≥1,使得當n≥n0時, 總有 T(n)≤c1*f(n),且有無窮多個n,使得T(n)≥c2*f(n)成立, 即:T(n)= O(f(n))與T(n)=Ω(f(n))都成立。(既給出了算法時間複雜度的上界,也給出了下界)。
6,算法研究有哪幾個主要步驟?主要從哪幾個方面評價算法?
答:算法研究的主要步驟是1)設計2)表示 3)確認,合法輸入和不合法輸入的處理 4)分析 5)測試。
評價算法的標準有1)正確性 2)健壯性 3)簡單性 4)高效性 5)最優性
7,各類增加函數的含義。
答:
數學表達式
|
相對增加率
|
T(N)=O(g(N))
|
T(N)的增加 ≤ g(N)的增加
|
T(N)=Ω(g(N))
|
T(N)的增加 ≥ g(N)的增加
|
T(N)=θ(g(N))
|
T(N)的增加 = g(N)的增加
|
T(N)=o(g(N))
|
T(N)的增加 < g(N)的增加
|
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(an)<O(n!)<O(nn)。
例題:
1,
2,
3,
4,
5,
6,若是算法A由三個步驟組成,其中第一步的時間複雜性爲O(n2),第二步的時間複雜性爲O(nlogn),第三步的時間複雜性爲O(n),請問算法A的時間複雜性是多少?
答:O(n2)
7, 解決某問題有三種算法,複雜性分別爲1000N,10N2, 2N ,在一臺機器上可處理問題的規模分別爲S1 , S2 , S3 。若機器速度提升到原來的10倍,問在一樣時間內可處理問題的大小如何?
答:
複雜性 原來處理問題規模 速度提升之後
1000N S1 10S1
10N2 S2 3.16S2
2N S3 S3 +log10≈ S3 +3.32
8,問題P的算法複雜度爲T(n)=n3(毫秒),現改善爲T(n)=n2(毫秒)。問原來運行一小時的問題實例,如今要運行多少時間?
答:
設實例大小爲n,
則 n3=3600*1000
n=153.3
∴ 如今須要時間t=153.32毫秒≈ 23.5秒
9,
1),f(n) = 2n + 3 = O(n)
當n≥3時,2n+3≤3n,因此,可選c = 3,n0 = 3。對於n≥n0,f(n) = 2n + 3≤3n,因此,f(n) = O(n),即2n + 3O(n)。這意味着,當n≥3時,程序2-1的程序步不會超過3n,2n + 3 = O(n)。
2),f(n) = 10n2 + 4n + 2 = O(n2)
對於n≥2時,有10n2 + 4n + 2≤10n2 + 5n,而且當n≥5時,5n≤n2,所以,可選c = 11, n0 = 5;對於n≥n0,f(n) = 10n2 + 4n + 2≤11n2,因此f(n) = O(n2)。
3),10n2 + 9 O(n)
使用反證法,假定存在c和n0,使得對於n≥n0,10n2 + 9≤cn始終成立,那麼有10n + 9/n≤c,即n≤c/10 9/(10n)總成立。但此不等式不可能總成立,取n = c/10 + 1時,該不等式便再也不成立。