演算法導論第17章 攤還分析

2021-06-19 20:11:06 字數 1188 閱讀 8962

攤還分析中,我們求資料結構的乙個操作序列中所執行的所有操作的平均時間,來評價操作的代價,從而說明乙個操作的平均代價是很低的,即使序列中某一單一操作的代價很高,不涉及改了,但可以保證最壞情況下每個操作的平均時間。

攤還分析中主要的三種方法:1、聚合分析  2、核算法(即記賬法) 3、勢能法

1、聚合分析:證明對所有的n,乙個n個操作的序列最壞情況下花費的總時間為t(n),因此,在最壞情況下,每個操作的平均代價,或稱為攤還代價為t(n)/n,這點不同於以下兩種方法,以下兩種方法,不同的操作有不同的代價。

2、核算法:對不同的操作賦予不同的費用,賦予某些操作的費用可能多於其實際代價,這個費用稱為他的攤還代價,當乙個操作的攤還代價超出其實際代價時,將差額存進陣列結構中的特定物件,存入的差額稱為信用,對於後續操中攤還代價小於實際代價的情況,信用可以用來支付差額,因此,可將乙個操作的攤還代價分解為其實際代價和信用。不同的操作可能有不同的癱瘓代價。如果用ci表示第i個操作的真實代價,用^ci代表其攤還代價,則對任意n個操作序列,要求:

資料結構中儲存的信用恰好等於總攤還代價與總實際代價的差額。資料結構所關聯的信用必須一直為非負值。

3、勢能法:並不將預付代價表示為資料結構中特定物件的信用,而是表示為「勢能」,或"勢",將勢能釋放用來支付未來操作的代價,勢能與整個資料機構而不是特定物件相關聯。

勢函式φ將每個資料結構di對映到乙個實數φ(di),次值即為關聯到資料結構di的勢。對乙個初始資料結構d0執行n個操作。對每個i = 1, 2, ,.....,n,令ci為第i個操作的實際代價,令di為在資料結構di-1上執行第i個操作得到的結果資料結構。第i個操作的攤還代價^ci用勢函式φ定義為:

^ci  = ci + φ(di) - φ(di-1) 

每個操作的攤還代價等於其實際代價加上次操作引起的勢能變化。n個操作的總的平攤代價為:

定義乙個φ勢函式,使得φ(dn)>= φ(d0), 則總的平攤代價就是總的實際代價的乙個上界。對所有的i,有φ(di)>= φ(d0),可以保證預先支付,φ(d0)一般為0

如果第i個操作的勢差φ

(di) - 

φ(di-1) > 0 則平攤代價^ci表示對第i個操作多收了非,同時資料結構的勢也增加了,如果< 0,則表示平攤代價的不足收費,可以通過減少勢來支付該操作的實際代價。不同的勢函式,可能產生不同的平攤代價。但他們都是實際代價的上屆。

演算法導論習題解 第17章攤還分析

相當於每月領取一定的零花錢,用來支付實際費用,只要在任何時候餘額不為負。那麼總花費一定不超過總的零花錢。必須條件,同時也是缺點 任何時候餘額不為負。條件比記賬法寬鬆。對於資料結構的每個狀態,定義乙個勢能p i 第i步操作的攤還代價記為a i c i p i p i 1 只要p n p 0 攤還代價就...

攤還分析 1 演算法導論 23

攤還分析 amortized analysis 是一種分析乙個操作序列中所執行的所有操作的平均時間分析方法。與一般的平均分析方法不同的是,它不涉及概率的分析,可以保證最壞情況下每個操作的平均效能。下面介紹癱瘓分析中的最常用的三種技術。先來看對棧進行操作的例子。通常,棧能夠進行push s,x 與po...

演算法導論第十七章 攤還分析

一.什麼是攤還分析?1.它是一種分析演算法的方法,在攤還分析中,我們求資料結構的乙個操作序列中所執行的所有操作的平均時間來評價操作的代價。2.這樣我們就可以說明乙個操作的平均代價是很低的 即使在某個單一操作的代價很高 3.但攤還分析卻不同於平均情況分析,它不涉及概率。但可以保證最壞情況下每個操作的平...