如何度量演算法的效能,什麼是演算法的複雜性?如何度量?什麼是演算法漸進性態的階

2021-03-10 23:53:57 字數 3541 閱讀 6383

1樓:暖萱紫菱

評定一個抄演算法的優劣,主要有以下幾bai個指標。

(du1)正確性:一個算

法必須zhi正確才有dao存在的意義,這是最重要的指標,要求程式設計人員應用正確的計算機語言實現演算法的功能。

(2)友好性:演算法實現的功能是給使用者使用的,自然要具有良好的使用性,即使用者友好性。

(3)可讀性:演算法的實現可能需要多次的修改,也可能被移植到其他的功能中,因此演算法應當是可讀的、可以理解的,方便程式人員對其分析、修改移植到自己的程式中,實現某些功能。

(4)健壯性:在一個演算法中,經常會出現不合理的資料或非法的操作,所以一個演算法必須具有健壯性,能夠對這些問題進行檢查、糾正。演算法具有健壯性是一個昇華,當使用者剛開始學習寫演算法時可以忽略它的存在,在逐漸的學習中要努力讓演算法更加完美。

(5)效率:演算法的效率主要是指執行演算法時計算機資源的消耗,包括計算機記憶體的消耗和計算機執行時間的消耗。這兩個消耗可以統稱為時空效率。

一個演算法只有正確性而無效率是沒有意義的,通常,效率也可以評定一個演算法是否正確。如果一個演算法需要執行幾年甚至幾百年,那麼無疑這個演算法會被評為是錯誤的。

2樓:匿名使用者

演算法是否高效決定你後面開發的效率和繁瑣度。一般最好用博弈論測試下,核心演算法不行的話最好推倒重建比較好些。

3樓:匿名使用者

演算法的基本要素:有窮性、確定性、可行性、輸出、輸入。

演算法設計的要求:正確性、可讀性、健壯性、效率與低儲存量需求。

演算法效率的度量:時間複雜度,空間複雜度。

所以對演算法的評估不是一件容易的事兒。

4樓:才

具有分類和排序功能、年薪;

第二種。舉例性別 職業等,變數值不能進行加減等運算,內不能比較大容小:

第一種,稱名變數、身高,只能區分類別:定類變數nominal、學歷等,具有相應的加減運算等功能:定序變數ordinal,統一叫scale:

定距(也叫等距變數)定比(也叫等比變數或比率變數)變數,也叫類別變數,spss裡不加區分,也叫順序變數、視力等,但是仍然不能進行加減等運算、等級變數。舉例滿意度spss裡的測量尺度分3種,舉例溫度;

演算法的複雜度是以什麼來度量的?

5樓:匿名使用者

演算法執行過程中所需要的基本運算次數

6樓:肖詩柳尋群

一個演算法的複雜度評價主要從

時間複雜度

和空間複雜度

來考慮時間複雜度

在剛才提到的時間頻度中,n稱為問題的規模,當n不斷變化時,時間頻度t(n)也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。

一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記作t(n)=o(f(n)),稱o(f(n))

為演算法的漸進時間複雜度,簡稱時間複雜度。

空間複雜度

與時間複雜度類似,空間複雜度是指演算法在計算機內執行時所需儲存空間的度量。記作:

s(n)=o(f(n))

什麼是演算法的複雜性?如何度量?什麼是演算法漸進性態的階

7樓:匿名使用者

考慮演算法複雜性的漸進性態時,已知f(n)=2n*n+11n-10,則時間複雜性在漸進意義下的階為( b ) 。

a.o(n) b.o(n*n) c.o(2n*n) d.o(2n*n+11n-10)

2在一個長度為n的順序表的任一位置插入一個新元素的漸進時間複雜度為( a )。

a. o(n) b. o(n/2) c. o(1) d. o(n2)

這是前兩題的答案 如果是的話 那所有的十二題的答案就是這幾個了:

babda cdcdc ba 只是隱約記得 自己做的

資料結構:資料結構在講演算法效率的度量中提到基本操作和原操作,想問一下什麼叫做基本操作?什麼叫做原操

8樓:

基本操作和原操作,估計是除迴圈以外的其他作,即除了for、while、do while 以外的其他語句,

n * n 的矩陣相乘,有4層 for,最裡層的一個整數乘法,這個乘法就是基本操作

9樓:死亡筆記

度量演算法的效率:時間複雜度、空間複雜度。

時間複雜度,一般情況,演算法中基本操作重複執行的次數是問題規模n的一個函式f(n),演算法的時間度量記做t(n)=o(f(n)),他表示隨著問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,稱做演算法的漸近時間複雜度,簡稱時間複雜度。

插入一個概念:語句的頻度指的是該語句重複執行是次數。

我們在計算時間複雜度的時候,

先要找出演算法的基本操作,並根據基本操作語句計算出其執行次數。

再找出其同數量級。。。t(n)=o(f(n)=數量級)。

例如:[cpp] view plain copy

for(i=1; i<=n; ++i)

}我們可以看到,其中的基本操作語句就只有兩個,一個c[i][j]=0,一個c[i][j]+=a[i][k]*b[k][j],可以知道前一個的執行次數為n^2,後一個的執行次數為n^3。所以t(n)=o(n^3)。

按數量級遞增排列,常見的時間複雜度有:

常數階o(1),對數階o(log2n),線性階o(n),

線性對數階o(nlog2n),平方階o(n^2),立方階o(n^3),...,

k次方階o(n^k),指數階o(2^n)。隨著問題規模n的不斷增大,上訴的時間複雜度不斷增大,演算法的執行效率越低。

在pascal中比較容易理解,容易計算的方法是:看看有幾重for迴圈,只有一重則時間複雜度為o(n),二重則為o(n^2),依此類推,如果有二分則為o(logn),二分例如快速冪、二分查詢,如果一個for迴圈套一個二分,那麼時間複雜度則為o(nlogn)。

對於實際計算中,我們知道,對於相同的程式,對於其執行的時間,影響的因素有很多。

1.程式的演算法優劣。

2.問題的規模。

3.書寫程式的語言。

4.編譯程式產生的機器**在質量。

5.機器執行指令的速度。。。等等。

空間複雜度,一個程式的空間複雜度是指執行完一個程式所需記憶體的大小。利用程式的空間,可以對程式的執行所需要的記憶體多少有個預先估計。一個程式執行時除了需要儲存空間和儲存本身所使用的指令、常數、變數和輸入資料外,還需要一些對資料進行操作的工作單元和儲存一些為現實計算所需資訊的輔助空間。

程式執行時所需儲存空間包括以下兩部分。

(1)固定部分。這部分空間的大小與輸入/輸出的資料的個數多少、數值無關。主要包括指令空間(即**空間)、資料空間(常量、簡單變數)等所佔的空間。這部分屬於靜態空間。

(2)可變空間,這部分空間的主要包括動態分配的空間,以及遞迴棧所需的空間等。這部分的空間大小與演算法有關。

一個演算法所需的儲存空間用f(n)表示。

s(n)=o(f(n))

其中n為問題的規模,s(n)表示空間複雜度。

什麼叫雜湊演算法,什麼是雜湊演算法?

什麼是雜湊運算?雜湊函式是一個數學方程式,它可用文字 如電子郵件資訊 來生成稱為資訊摘要的 著名的雜湊函式如 md4,md5,shs。用於數字鑑別的雜湊函式必須有特定的屬性,使它在密碼使用方面有足夠的安全性。尤其是,下面的內容一定不能被發現 用來雜湊出特定值的文字。也就是說,如果你知道資訊摘要,你應...

下列關於演算法的說法中,正確的是A演算法是某個

由演算法的概念可知 演算法是某個問題的 解決方法,而不是某個問題的解決過程,故a不正確 演算法是在有限個步驟內解決問題,不可以無限不停地操作下去,故b不正確 演算法的每一步操作都是明確的,演算法執行後的結果是確定的,故c不正確 解決某類問題的演算法可能有多個,演算法是不唯一的,故d正確 故選d 下列...

c DFS演算法問題。DFS的演算法詳解

include iostream include using namespace std int c 0 int n,m,num int arr 20 20 void search int x,int y if x n y 1 return if arr x y 1 碰到黑洞。return if x...