演算法的特性 演算法設計的要求 演算法效率的度量方法

2022-06-19 01:42:15 字數 1473 閱讀 1416

第二章  演算法

演算法具有五個基本特性:

輸入、輸出、有窮性、確定性和可行性

1)輸出,可以有另個或多個

2)輸出,一定要有,乙個或多個

3)有窮性:演算法在執行有限的步驟後,自動結束而不會出現無限迴圈,而且每乙個步驟在可接受的時間內完成。

4)確定性:演算法的每乙個步驟都具有確定的含義,不會出現二義性。

5)可行性:每一步都必須是可行的。

演算法設計的要求:(好演算法)

1)正確性:演算法至少應該具有輸入、輸出和加工處理無歧義性、能正確放映問題的需求、能夠得到問題的正確答案。

3)健壯性:當輸入資料不合法時,演算法也能做出相關處理,而不是產生異常或莫名其妙的結果。

4)時間效率高和儲存量低:即演算法執行的時間和演算法執行的過程中需要的最大儲存空間(演算法程式執行時所占用的記憶體或外部硬碟儲存空間。 )

演算法效率的度量方法:

1)事後統計方法:通過設計好的測試程式和資料,利用 計算機計數器對不同演算法編制的程式的執行時間進行比較,從而確定演算法效率的高低。(缺陷多,不予考慮)

2)事前分析估算方法:在計算機程式編制之前,依據統計方法對演算法進行估算。

乙個高階程式語言編寫的程式在計算機上執行所消耗的時間取決於下列因素:

1、演算法採用的策略、方法(根本)@@@

2、編譯產生的**質量(軟體)

3、問題的輸入規模(即輸入量的多少)@@@

4、機器執行指令的速度(硬體效能)

函式的漸進增長:

判斷乙個演算法的效率時,函式中的常數和其他次要項常常可以忽略,而更應該關注主項(最高端項)的階數。

通過演算法實踐複雜度來估計演算法時間效率。

演算法時間複雜度:

t(n)=o(f(n))表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,稱作演算法的漸進時間複雜度,簡稱時間複雜度。其中f(n)是問題規模n的某個函式。(大o記法)

一般情況下,隨著n的增大,t(n)增長最慢的演算法為最優演算法。

o(1)叫常數階、o(n)叫線性階、o(n2)叫平方階。

1、用常數1取代執行時間中的所有加法常數。

2、在修改後的執行次數函式中,只保留最高端項。

3、如果最高端項存在且不是1,則去除與這個項相乘的常數。

得到的結果就是大o階。

常見的時間複雜度

常用的時間複雜度所耗費的時間從小到大依次是:

o(1)

演算法空間複雜度

s(n)=o(f(n))   n為問題的規模,f(n)為語句關於n所佔儲存空間的函式

摘錄自:《大話資料結構》程杰

演算法的特性

首先,我們要了解什麼是演算法 演算法就是解決特定問題的求解步驟的描述,在計算機中表現為指令的有效序列,並且每一條指令代表乙個或多個操作。那麼演算法的特性有哪些呢?具體有以下幾個特性 1.輸入輸出 大部分演算法都有輸入,但是如果只是列印 hello world 這樣簡單的演算法,那麼輸入也可以為零。演...

演算法的特性

演算法有5個基本特性 輸入 輸出 有窮性和可行性 一 輸入輸出 輸入和輸出比較容易理解,演算法具有零個或多個輸入。儘管對於絕大多數演算法來說,輸入引數都是必要的,但對於個別情況,如列印 hello world 這樣的 不需要任何輸入引數,因此演算法的輸入可以是零個。演算法至少有乙個或多個輸出,演算法...

2 3演算法的特性

演算法特性 1 有窮性。2 確定性。3 有零個或多個輸入。4 有乙個或多個輸出。5 有效性。2 4怎樣表示乙個演算法 演算法 可以用不同道方法表示。我們常用的表示方法 自然語言 傳統流程圖 結構化流程圖 偽 等。1 自然語言 2 用流程圖表示 通過例子可以看出流程圖的表示演算法,乙個流程圖包含 1 ...