证明:如果作用于一动态表上的第i个操作是TABLE-DELETE,且αi-1 ≥ 1/2,则以势函数(17.6)表示的每个操作的平摊代价由一个常数从上方限界
2011-05-30 20:18
911 查看
这是《算法导论》(原书第二版)中第17章的一个习题(17.4-2)。
分成三种情况讨论:
1)αi≥ 1/2
这时表并没有进行扩张或收缩,只是表中的项数少了1
平摊代价
2) 1/4<=αi < 1/2
这时表并没有进行扩张或收缩,除了表中的项数少了1,
=3+3/2 sizei-1 -3 numi-1
=3+3(1/2 -αi-1) sizei-1<=3
3) αi<1/4
这种情况只对sizei-1等于2时,numi-1等于1时才会发生。
这时,需要对表进行两次收缩才能满足1/4<=αi <=1,这样表变成一个空表,尺寸和项数都是0。
平摊代价:
^Ci =1
因此,平摊代价至多为3
分成三种情况讨论:
1)αi≥ 1/2
这时表并没有进行扩张或收缩,只是表中的项数少了1
平摊代价
^Ci | = | ci+Φi-Φi-1 |
= | 1 + (2 · numi - sizei) - (2 · numi-1 - sizei-1) = 1-2 =-1 |
这时表并没有进行扩张或收缩,除了表中的项数少了1,
^Ci = | ci+Φi-Φi-1 | |||
= | 1 + (sizei /2 - numi) - (2 · numi-1 - sizei-1) | |||
=3+3(1/2 -αi-1) sizei-1<=3
3) αi<1/4
这种情况只对sizei-1等于2时,numi-1等于1时才会发生。
这时,需要对表进行两次收缩才能满足1/4<=αi <=1,这样表变成一个空表,尺寸和项数都是0。
平摊代价:
^Ci =1
因此,平摊代价至多为3
相关文章推荐
- 2017-5-14 湘潭市赛 Partial Sum 给n个数,每次操作选择一个L,一个R,表示区间左右端点,该操作产生的贡献为[L+1,R]的和的绝对值-C。 0<=L<R<=n; 如果选过L,R这两个位置,那么以后选择的L,R都不可以再选择这两个位置。最多操作m次,求可以获得的 最大贡献和。
- Visitor 表示一个作用于某个对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作
- 一个问题:物理内存有限的情况下,多个进程存在时,每个进程实际分配的物理内存有多少?(如果某程序申请了很大的动态存储空间)
- 一张图像表示成NxN的矩阵,图像中每个像素是4个字节,写一个函数把图像旋转90度。 你能原地进行操作吗?(即不开辟额外的存储空间)
- CF223 div2 (C)给出m个操作,1表示在串中添加一个数,2表示将前面长度为l的串复制c次添加到串尾。有n个查询,问你第i个数是什么
- 一段js动态操作table代码
- table 操作——点击表格某一行获取这一行的某一个单元格
- jQuery的函数,有些直接就用$this(表示当前操作的标签),而也不见this在哪里定义过,这个this究竟谁什么?答:把this当成在内从中存在的JavaScript的一个变量即可,一个关键字
- 9.2链表(五)——给定两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部
- 利用jquery给指定的table动态添加一行、删除一行,复制,值不重复等操作
- 一个JQuery操作Table的好方法
- 点击HeadView 实现对cell动态下拉一个TableView,实现对SectionHeader悬停进行设置
- 如果你想动态创建一个iframe
- ios TableView那些事(三十 五)TableView 单选操作使用Autolayout实现UITableView的Cell动态布局和高度动态改变
- 多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。
- 运用js动态操作table(新增,删除相关列信息)
- 编写多线程程序,模拟多个人通过一个山洞。这个山洞每次只能通过一个人,每个人通过山洞的时间为2秒(sleep)。随机生成10个人,都要通过此山洞,用随机值对应的字符串表示人名,打印输出每次通过山洞的人名
- 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的差别,sql文件导入
- 编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”
- mysql错误:“ Every derived table must have its own alias”(每个派生出来的表都必须有一个自己的别名)