關(guān)于平攤分析、表的擴(kuò)增、勢能分析初步理解

冒泡~今天看了MIT算法導(dǎo)論公開課之第13課 平攤分析、表的擴(kuò)增、勢能方法的課程 所以做了以下記錄。


平攤分析

定義:

用平攤的思想來分析一個(gè)操作序列,以證明每個(gè)操作的平均代價(jià)很小,盡管其中一個(gè)或幾個(gè)操作的代價(jià)比較大。

先舉哈希表來進(jìn)入這個(gè)平攤的分析的思想(也就是平攤分析中的聚集分析,具體的下面會(huì)描述)

1.哈希表多大才合適呢?

通常情況下,如果增大的話,查找的速度會(huì)更快,但是這樣需要的空間就大了會(huì)浪費(fèi)空間。

在這樣的情況,通常對于要存儲(chǔ)n個(gè)元素的哈希表的大小最好為Θ(n)。

但是如果不知道要存儲(chǔ)的元素?cái)?shù)量時(shí),如何設(shè)定哈希表的大???

這個(gè)時(shí)候就要使用動(dòng)態(tài)表的策略

(思想:vector擴(kuò)展容量的方式,空間滿時(shí)重新分配兩倍當(dāng)前大小的空間,并移動(dòng)元素,釋放舊的空間。)

當(dāng)哈希表已滿,再加入元素時(shí)(溢出),將哈希表擴(kuò)大:

1.分配一個(gè)更大的表。

2.將舊表中的元素拷貝至新表。

3.釋放舊表的空間。

(注意:這個(gè)時(shí)候哈希表的size是2的整數(shù)次冪

舉個(gè)栗子:

復(fù)雜度分析:

在最壞情況下,一次插入運(yùn)算的代價(jià)為Θ(n)。

關(guān)于第i次插入操作的代價(jià),當(dāng)i-1為2的冪時(shí),代價(jià)為i,其他時(shí)候,代價(jià)為1。?

由上面的圖,讓我們看看平均的時(shí)間復(fù)雜度,每次基本插入操作為1,空間溢出時(shí)需要開一個(gè)更大一倍的空間,并復(fù)制當(dāng)前的元素過去,所以空間溢出時(shí)所需要的時(shí)間為2的i次方(i為第幾次溢出

用到平均但并不涉及到概率學(xué),主要想表示的是在最壞情況下的平均表現(xiàn)。

三種方法:

a.聚集分析

b.記賬分析

c.勢能分析

聚集分析也就是剛剛上面所提到的關(guān)于哈希表大小以及插入擴(kuò)展的分析。

所以接下來敘述記賬分析和勢能分析

記賬分析

!可以這樣通俗的解釋一下:

想象自己擔(dān)任了一個(gè)會(huì)計(jì),對第i個(gè)操作收費(fèi)為ci,收益?zhèn)€虛構(gòu)的平攤代價(jià)每一步運(yùn)算需要花費(fèi)$1,未用到的余款就被存到銀行,用于償付以后的操作。

如:每次插入收費(fèi)為3,插入消耗1,剩下的2存入銀行為表翻倍時(shí)做準(zhǔn)備(也就是說剩下的用于后續(xù)可能發(fā)生的表的空間翻倍和拷貝元素),要始終保證銀行的金額為正

提前平攤,總能支付擴(kuò)充表的費(fèi)用,這樣某一個(gè)高開銷的操作會(huì)被平攤掉

注意:存款不能為負(fù)的。

勢能分析

與記賬法不同,記賬對每一次操作做平攤的估計(jì),比如例子中平攤代價(jià)為3,并將本次操作剩余量存儲(chǔ)在該次操作上。勢能法是:與整個(gè)操作序列相關(guān)的。對比記賬法,記賬法為記錄每一次流水,勢能則只記錄總的存款額。


參考資料:MIT算法導(dǎo)論公開課之第13課 平攤分析、表的擴(kuò)增、勢能方法 - rye_whiskey的博客 - CSDN博客MIT算法導(dǎo)論公開課之第13課 平攤分析、表的擴(kuò)增、勢能方法 - rye_whiskey的博客 - CSDN博客


finally~

今天是10.24 程序員節(jié)~大家節(jié)日快樂鴨!多長頭發(fā)不掉發(fā)!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,305評論 2 89
  • 轉(zhuǎn)載自:https://halfrost.com/go_map_chapter_one/ https://half...
    HuJay閱讀 6,474評論 1 5
  • 楓楊非常得意地看著工人在忙上忙下的擺花壇,市政廣場竣工典禮,廣場主席臺(tái)旁邊最大的花壇設(shè)計(jì)擺放都由自己負(fù)責(zé)。這可是園...
    衛(wèi)茳閱讀 342評論 3 3
  • 第四十四章 徐艾原本打算假寐,居然一不小心睡得很安穩(wěn),一路上火車走走停停都沒有感覺。直到被周舟拍醒,才發(fā)現(xiàn)距離L市...
    chief風(fēng)閱讀 1,094評論 4 5
  • 雖然這個(gè)世界有些虛偽,雖然身旁有不少需為的人,但我還是做不到好好的隱藏自己的不滿,本以為我真的長大了,可以笑著說謊...
    90后的幼兒園老師閱讀 225評論 0 0

友情鏈接更多精彩內(nèi)容