网站大量收购独家精品文档,联系QQ:2885784924

USTC算法习题课.pdf

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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。

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档