算法导论摊还分析—聚合分析核算法势能法

Posted 之墨_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法导论摊还分析—聚合分析核算法势能法相关的知识,希望对你有一定的参考价值。

算法导论【摊还分析】—聚合分析、核算法、势能法

假定我们对一个数据结构执行一个由 n 个操作组成的操作序列,当 i 严格为 2 的幂时,第 i 个操作的代价为 i,否则代价为 1

聚合分析

总共有n个操作, 1 , 2 , 4..... , 2 ⌊ lg ⁡ n ⌋ 1,2,4.....,2^⌊\\lg n⌋ 1,2,4.....,2lgn,其中有至多 k = ⌈ lg ⁡ n ⌉ k=⌈\\lg n⌉ k=lgn个操作序号为2的幂,则
S = ∑ k = 0 ⌊ lg ⁡ n ⌋ 2 k + ( n − ⌈ lg ⁡ n ⌉ ) ∗ 1 = 1 ∗ ( 1 − 2 ⌊ lg ⁡ n ⌋ + 1 ) 1 − 2 + n − ⌈ lg ⁡ n ⌉ = 2 ⌊ lg ⁡ n ⌋ + 1 − 1 + n − ⌈ lg ⁡ n ⌉ = ≤ 3 n − ⌈ lg ⁡ n ⌉ − 1 = O ( n ) \\beginaligned S&=\\sum_k=0^⌊\\lg n⌋2^k+(n-⌈\\lg n⌉)*1\\\\ &=\\cfrac1*(1-2^⌊\\lg n⌋+1)1-2+n-⌈\\lg n⌉\\\\ &=2^⌊\\lg n⌋+1-1+n-⌈\\lg n⌉\\\\ &=\\le3n-⌈\\lg n⌉-1\\\\ &=O(n) \\endaligned S=k=0lgn2k+(nlgn⌉)1=121(12lgn+1)+nlgn=2lgn+11+nlgn=≤3nlgn1=O(n)
所以每个操作的摊还时间代价为 O ( n ) n = O ( 1 ) \\cfracO(n)n=O(1) nO(n)=O(1)

核算法

设每个操作的代价都为 3 3 3
2 k − 1 + 1 到第 2 k − 1 2^k-1+1到第2^k-1 2k1+1到第2k1个操作为非2的幂,多付的代价为 2 ∗ ( 2 k − 1 − 1 − 1 + 1 ) = 2 k − 2 2*(2^k-1-1-1+1)=2^k-2 2(2k111+1)=2k2在第 2 k 2^k 2k个次操作付的代价为 3 3 3,则可以用于支付第 2 k 2^k 2k次操作的信用为 2 k − 2 + 3 = 2 k + 1 > 2 k 2^k-2+3=2^k+1>2^k 2k2+3=2k+1>2k大于第 2 k 2^k 2k次操作应该付的代价,故每个操作的摊还代价为 O ( 1 ) O(1) O(1)

势能法

设势函数为
Φ ( D 0 ) = 0 Φ ( D i ) = 2 ( i − 2 lg ⁡ ⌊ i ⌋ ) \\Phi (D_0) = 0\\\\ \\Phi(D_i) = 2(i-2^\\lg⌊i⌋)\\\\ Φ(D0)=0Φ(Di)=2(i2lgi)

  1. 当i为2的幂时, 2 ⌊ lg ⁡ i ⌋ = i , ⌊ lg ⁡ ( i − 1 ) ⌋ + 1 = ⌊ lg ⁡ i ⌋ 2^⌊\\lg i⌋=i,⌊\\lg (i-1)⌋+1=⌊\\lg i⌋ 2lgi=i,lg(i1)⌋+1=lgi
    c ^ i = c i + Φ ( D i ) − Φ ( D i − 1 ) = i + 2 ( i − 2 ⌊ lg ⁡ i ⌋ ) − 2 ( i − 1 − 2 ⌊ lg ⁡ i − 1 ⌋ ) = i + 2 i − 2 i + 2 − 2 ⌊ lg ⁡ i ⌋ + 1 + 2 ⌊ lg ⁡ i ⌋ + 1 = i − i − 2 ⌊ lg ⁡ i ⌋ + 2 ⌊ lg ⁡ i ⌋ + 1 + 2 = 2 \\beginaligned \\hat c_i&=c_i+\\Phi(D_i)-\\Phi(D_i-1)\\\\ &=i+2(i-2^⌊\\lg i⌋)- 2(i-1-2^⌊\\lg i-1⌋)\\\\ &=i+2i-2i+2-2^⌊\\lg i⌋+1+2^⌊\\lg i⌋+1\\\\ &=i-i-2^⌊\\lg i⌋+2^⌊\\lg i⌋+1+2\\\\ &=2 \\endaligned c^i=ci+Φ(Di)Φ(Di1)=i+2(i2lgi)2(i12lgi1)=i+2i2i+22lgi+1+2lgi+1=ii2lgi+2lgi+1+2=2
  2. 当i不为2的幂时, 2 ⌊ lg ⁡ ( i − 1 ) ⌋ = 2 ⌊ lg ⁡ i ⌋ 2^⌊\\lg (i-1)⌋=2^⌊\\lg i⌋ 2lg(i1)⌋=2lg算法导论习题—摊还时间代价分析栈实现队列贪心算法近似比集合覆盖问题

    算法导论

    php提取字符串中网站url地址的方法

    算法导论—分治法思想动态规划思想贪心思想

    算法导论第2章 分治法与归并排序, 二分查找法

    算法设计与分析——回溯法算法模板