算法效率分析的兩個主要方面是 em算法時間復(fù)雜度分析?
em算法時間復(fù)雜度分析?算法的復(fù)雜性算法的復(fù)雜度是衡量算法效率的尺度,也是評價算法優(yōu)劣的重要依據(jù)。算法的復(fù)雜性反映在運(yùn)行算法所需的計(jì)算機(jī)資源數(shù)量上。需要的資源越多,算法越復(fù)雜。反之,所需資源越少,算法
em算法時間復(fù)雜度分析?
算法的復(fù)雜性
算法的復(fù)雜度是衡量算法效率的尺度,也是評價算法優(yōu)劣的重要依據(jù)。算法的復(fù)雜性反映在運(yùn)行算法所需的計(jì)算機(jī)資源數(shù)量上。需要的資源越多,算法越復(fù)雜。反之,所需資源越少,算法復(fù)雜度越低。
電腦資源,最重要的是時間和空間(也就是內(nèi)存)資源。因此,算法的復(fù)雜度可以分為時間復(fù)雜度和空間復(fù)雜度。
不言而喻,對于任何給定的問題,設(shè)計(jì)一個復(fù)雜度盡可能低的算法是我們的一個重要目標(biāo)。另一方面,當(dāng)一個給定的問題有多種算法時,選擇復(fù)雜度最低的算法是我們的一個重要標(biāo)準(zhǔn)。因此,算法的復(fù)雜度分析對于算法的設(shè)計(jì)或選擇具有重要的指導(dǎo)意義和實(shí)用價值。
總之,在算法學(xué)習(xí)的過程中,首先要學(xué)會分析算法,以確定或判斷算法的優(yōu)劣。
1.時間復(fù)雜度:
例1:如下設(shè)置一個程序段(為了討論方便,在每行前加一個行號)
(1)對于i:1到n do
(2)對于j:1到n do
(3) x:x 1
......
程序運(yùn)行中每一步執(zhí)行多少次?
回答:
行數(shù)(頻率)
(1) n 1
(2)n *(n ^ 1)
(3) n*n
可以看出,這個程序的總執(zhí)行次數(shù)為:f (n) 2n2n1。這里,n可以代表問題的規(guī)模。當(dāng)n趨于無窮大時,如果f(n)的值很小,則算法是最優(yōu)的。作為初學(xué)者,我們可以通過f(n)的數(shù)量級o來大致判斷算法的時間復(fù)雜度。例如,上面例子中的時間復(fù)雜度可以粗略地表示為T(n)O(n2)。
2.空間復(fù)雜性:
示例2:將一維數(shù)組的數(shù)據(jù)(n)以逆序存儲在原數(shù)組中。下面是實(shí)現(xiàn)這個問題的兩個算法::。
算法1 : for I : 1 ton do
b[i]:a[n-i 1]
對于i:1到n do
a[i]:b[i]
算法二:換我:1ton div2do
開始
t:a[I]a[I]:a[n-I-1]a[n-i-1]:t
結(jié)束
算法1的時間復(fù)雜度為2n,空間復(fù)雜度為2n。
算法2的時間復(fù)雜度為3*n/2,空間復(fù)雜度為n-1。
顯然,算法2要優(yōu)于算法1,這兩種算法的空間復(fù)雜度大致可以表示為S(n)O(n)。
在信息學(xué)競賽中,往往是:只要
算法技術(shù)指什么?
算法技術(shù)是指
算法是指對解的準(zhǔn)確完整的描述,是解決問題的一系列清晰的指令。算法代表了描述解決問題的策略機(jī)制的系統(tǒng)方法。
也就是說,對于某一標(biāo)準(zhǔn)輸入,可以在有限的時間內(nèi)獲得所需的輸出。如果一個算法有缺陷或者不適合某個問題,執(zhí)行這個算法并不能解決問題。
不同的算法可能使用不同的時間、空間或效率來完成相同的任務(wù)。一個算法的優(yōu)劣可以用空間復(fù)雜度和時間復(fù)雜度來衡量。
算法中的指令描述了一種計(jì)算。它在運(yùn)行時,可以從一個初始狀態(tài)和一個初始輸入(可能是空的)開始,經(jīng)過一系列有限的、明確定義的狀態(tài),最后產(chǎn)生一個輸出,停在一個最終狀態(tài)。
從一種狀態(tài)到另一種狀態(tài)的轉(zhuǎn)換不一定是確定的。一些算法,包括隨機(jī)化算法,包含一些隨機(jī)輸入。
形式算法的概念部分源于試圖解決希爾伯特提出的決策問題,然后試圖定義有效可計(jì)算性或有效方法。
這些嘗試包括庫爾特·哥德爾、雅克·埃爾布朗和斯蒂芬·科爾·克萊尼分別于1930年、1934年和1935年提出的遞歸函數(shù),Allonzot Church于1936年提出的λ演算,Emil Leon Post于1936年提出的公式化1以及alan turing于1937年提出的圖靈機(jī)。即使在目前,通常也很難將直覺想法定義為形式算法。