- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
USTC算法习题课
17.1-2 证明:在k位计数器的例子中,如果包含一个
DECREMENT操作,n个操作可能花费θ(nk)的时间。
计数器初始状态为全0.假设有以下操作序列:
DECREMENT
INCREMENT
DECREMENT
INCREMENT
每次操作都会有k次的翻转,一共进行n次操作即可。
17.1-3 对某个数据结构执行n个操作的序列。如果i为2的整数
幂,则第i个操作的代价为i,否则为1.请利用聚集分析来确定
每次操作的平摊代价。
从而得到每个操作的平摊代价为O(1)
17.3-2 用势能方法重做练习17.1-3
j
设i = 2 + k(j≥0,k≥0且j 取值尽可能大),势能函数 = 2k 。
如果k=0,则:
否则
17.2-1 对一个大小始终不超过k的栈上执行一系列的栈操作。在每k
个操作之后,复制整个栈的内容以作备份。证明:在对各种栈操作
赋予合适的平摊代价之后,n个栈操作的代价为O(n)。
对PUSH操作征收3元即可。每个元素入栈时消耗1元,每个在栈里
的元素都有2元存款,足够支付复制操作(出栈一次+进栈一次,各
消耗1元)或者出栈操作(消耗1元)
注:复制操作和出栈操作不会连续发生,即一个元素出栈之后就不
会再被复制;复制之后就不会再被出栈(因为已经被留作备份)
每个操作的平摊代价为1,故n次操作的代价为O(n)
17.2-3 假设我希望们不仅能使一个计数器增值,也能使之复位
至零。请说明如何将一个计数器实现为一个数组,使得对一个
初始为零的计数器,任一个包含n个INCREMENT和RESET操
作的序列的时间为O(n)。
设数组为 ,新增一个域:max[A]。
对每次INCREMENT操作征收4元,RESET操作征收1元即可。
具体来说,数组里的每个1都会有3元的存款(由0变为1消耗1
元)。这3元存款里预留出1元作为以后该位翻转为零时用;再
留出1元作为维护max[1]的费用(每个1都会有一次机会作为
max[A]);再留出1元作为RESET时使用(此时max[A]被置为-
1,只需要1元的代价)。这样就可以满足所有的操作需求。因
此每个操作的平摊代价为O(1),从而包含n个操作的序列需要
时间为O(n)
17.3-6 说明如何使用两个普通的栈来实现一个队列,使得每个
ENQUEUE和DEQUEUE操作的平摊代价都为O(1)。
设有两个栈S1,S2
ENQUEUE:往S1里push
DEQUEUE:如果S2不为空,则直接pop S2;否则popall S1,接
着全部push S2,再pop S2。
平摊分析:每次ENQUEUE收费4元,1元用于PUSH入S1,剩下3
元存款:在最坏的情况下,其中2元用于从S1转移到S2,1元用于
POP。平摊代价为O(1)
22.2-4 证明在广度优先搜索算法中,赋给顶点u的值d[u]与顶点在邻接
表中的次序无关。利用图22-3作为例子,说明由BFS计算出来的广度优
先树与邻接表中的顺序是有关的。
第一问:BFS的伪代码里没有任何关于邻接顶点访问次序的信息,因而
是次序无关的。
第二问:当BFS算法运行到w节点的时候,如果程序先访问t节点,则t
就是x 的前驱;反之如果先访问到x节点,则x就是t 的前驱。
22.2-6 题目略过,见书中329页(第二版)
第一步:做尽可能多的BFS (为了访问到每个节点)= O(n+r)
第二步:把所有d值为偶数的节点标记为好选手,把d值为奇数的节点标
记为差选手 = O(n)
第三步:检查所有的边,如果都满足边上的两个顶点分别是好选手、差
选手,则可以做出这样的指定;否则就是不可以 = O(r)
22.3-5 证明:在一个无向图中,如果是根据在深度优先搜索中,(u,v)
和(v,u)哪一个先被遇到作为标准来将(u,v)归类为树边或者反向边的话,
就等价于根据边分类方案中的各类型的优先级来对它进行分类。
如果访问到边一端是白的,另一端是灰的,一定是访问灰色到白色方
向的边,这是一条Tree edge 。 如果访问到边两端都是灰的,一定是
Back edge。 不可能有其他情况。这等价于根据边分类方案中的各类
型的优先级来对它进行分类。
22.3-8 对于 “在一个有向图G中,如果有一条从u到v 的路径,则
任何深度优先搜索都必定能否得到d[v]≤f[u] ”这一推测,给出它
的一个反例。
22.4-3 给出一个算法,用它来确定一个给定的无向图G= (V,E )
中是否包含一个回路。所给出算法的运行时间应为O(V),这一时
间独立于E。
您可能关注的文档
- 14–17). Building Scalable and High Efficient Java Multimedia Collaboration. Paper presente.pdf
- The TRIPS Agreement A Comment Inspired by Frederick Abbott’s Presentation.pdf
- AnImprovedCymbalHydro_省略_LeadZirconateTi.pdf
- A8500参考设计电路_V2.4 周立功_龙尚_2G模块.pdf
- Adsorption of phenol by oil–palm-shell activated carbons in a fixed bed.pdf
- C51汇编双字节有符号数乘法程序.pdf
- 国产编程语言R++1.8.pdf
- 北京大学-公司金融13.pdf
- 高速A/D转换芯片AD574与单片机的配接.pdf
- 240128A的编程实例.pdf
文档评论(0)