Potential Method —— amortized analysis

之前搬运有关 amortized analysis 内容时,分析方法介绍了 aggregate method 和 accounting method。有时 accounting method 也作 banker method (回想起 OS 里面也有对应的 银行家算法)。这次补充介绍 potential method 作为 amortized analysis 的一种方法。

有关 amortized analysis 的介绍,以及一些基础模型可见 算法设计搬运(2)——Amortized Analysis

公式

如果已经有了 amortized cost 相应的了解那么就可以直接进入到 potential method 的公式了。

T_{amortized}(o) = T_{actual}(o)+C·\Delta \Phi
亦作
T_{amortized}(o) = T_{actual}(o)+C·(\Phi(S_{after})-\Phi(S_{before}))

等式左边反映的是对于某个数据结构操作o的 amortized 复杂度。o指的在该数据结构上一系列操作中的任意一次单独操作T_{actual}(o) 指该次操作实际的复杂度。 S表示的是该数据结构的状态,\Phi是一个映射函数,将状态S映射成一个非负整数。C是任意非负固定常数。

我看这个wiki上面的对于potential method的翻译译作“电位法”。这个状态\Phi S可以理解为当前数据结构的混乱状态或者距理想状态的差距。越不混乱那么就越接近理想,越有序。

因为amortized analysis的引入就是考虑到有些操作有时会复杂度很高,而有些时候复杂度又很低,我们想知道一系列操作下来,这个操作的“均摊”复杂度(相比最坏情况更贴合实际)怎么样。之前的两种方法都是要结合一个 sequence 的操作来解 该操作的“均摊”复杂度——Aggregate的思路是先求sequnce整体复杂度再平均,Accounting则是使操作能为数据结构存储一定的令牌,复杂度低的积攒令牌,而面对复杂度高的确保令牌消耗不透支,来求得“均摊”复杂度。而现在电位法只需要考虑某一次操作,它的实际复杂度以及 它对势能的改变的贡献就能得知该操作的“均摊”复杂度了。其思路大致与accounting类似,只不过视角不一。一般低复杂度的操作天然会使状态更混乱,而复杂度高的操作一般都会涉及到维护问题,需要“人为”的降低混乱程度。(参考热力学第二定律?)

举例分析

算法设计搬运(3)——Heaps中我们用aggregate,eager binomial heaps 的insert和deleteMin的“均摊”复杂度分别是\Theta(1)\Theta(\log n)

eager binomial heap 的 insert

我们用\Phi表示当前保存了当前二项堆的数量(假设一开始存储了n个节点)。插入首先要把一个node link到collection里面,O(1)。初始\Phi = \log n
假设这次操作进行了合并了k次,actual cost = 2 + k

insert

而每一次合并则会使 binomial heap 的数量 -1。由此插入后的\Phi = 1+ \log n - k。所以 T_{amortized}(o) = 2 + k + C·(1 + \log n - k - \log n) = 2 + C - (C - 1) \cdot k \leq 2 +C = \Theta(1)
Insert worst-case 的均摊复杂度\Theta(1)。(actual cost = 2 + k,1是link,1+kk次合并要扫描k+1个位置的 heap,从order低到高扫)

eager binomial heap 的 deleteMin

初始\Phi = \log n,首先找minimum O(\log n)
假设minimum是 B_k的 root,那么 remove root之后产生k个新heap,B_0,B_1,...,B_{k-1},link进collection 的cost = k

那么假设进行了m次合并,且已知扫描了k个位置,cost = m+k+O(\log n)。最终\Phi = \log n - 1 + k - m
T_{amortized}(o) = m+2k + C\cdot (\log n -1+k-m -\log n) = O(k+\log n)
因为k,m = O(\log n),所以最终的均摊复杂度其实 =O(\log n)。(需不需要存min 指针并更新都一样)

extract-Min

(这里的Union指合并两个binomial heap,先扫描如果有同order则比较二者根大小,小者作为 rank+1的新根,同时order+1,大者根的 sibling指向小者此时的 child link,然后新根的 child link 再指向大者。结果就是大的作为小者的最左子树——细节,图片来源于 Stony Brook CSE548 lecture-9)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354