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