算法主义
首发于算法主义

《算法设计与分析》(2017年8月版)修订

[2019.4.16注:

大家在版权页看到“版次:2019年3月第1版第2次印刷”,即为重印后的新版。重印的版本中,下面的错误都已经修订。

但是有可能买到的是书商的存货,还是修订之前的老版本,即“2017年8月第1版第1次印刷”。

新版的修订将重新开一个post。本文即日停止更新。]


陆续对书中(特指“2017年8月第1版第1次印刷”的版本)的一些错误和可改进的地方,进行修订。按照章节顺序,列在下面:

第一章

P11,1.3.2节:“问题规模到算法复杂度的映射”这里面说映射不对,应该改成“问题规模到算法复杂度的对应关系”。(2018.3.6,课上同学指出)

第二章

P18,2.1节:图2.1中,节点3和节点6之间应该有一条线,整个图是一棵完美二叉树。(2017.11.10,京东用户评论指出)

P22,2.2节:对于渐近增长率的定义而言,书中的论述已经隐含假设了f(n)/g(n)的极限存在。对于常见算法的代价函数而言,这一假设是合理的。在修订版中,将把这一问题明确说明。(2017.9.15,赵建华老师指出)

P26,2.3.3节,定理2.2上方,三种情况列表中的第二点:对数表达式应该加上以b为底,即:“数列共有 \log_b n 项,则递归树的总代价为 n^{\log_b a}\log_b n ”。

P30,习题2.20:Algorithm:PERSKY(n),第6行:赋值符号写成等号了,应该是:“r := r+1;”。(2019.3,17186沈天琪指出)

第三章

P33,3.1节,第6行:中位数的定义中,应该是上取整,即“阶为 \lceil\frac{n}{2}\rceil 的元素被定义为中位数”。(2018.4,16122党美华指出)

P36,3.2.2节,倒数第二行: “\frac{n^2}{4}+\frac{3n}{4} ”后面应该加一个减1的项,即变成:“ \frac{n^2}{4}+\frac{3n}{4}-1 ”(2019.3,MG16丁超指出)

P38,习题3.4中的算法的第4行:原来是“while j>0 and A[j]”,and后面的条件是错的,应该改成“while j>0 and A[j]<=A[i]”。(2018.3.10,课上同学161220154闫雨呼指出)

第六章

P86,算法25,第2行:应该是:q:= \lfloor \frac{p+r}{2} \rfloor ;(2018.3.23,课上同学指出)

P89,“这里,NL和NR分别表示左、右子树的叶节点个数”(原文写的是“节点”个数,此处改成“节点个数”)

第八章

P107,倒数第二行:应该是“多少个小于m*的元素,我们等价地...”(原文“大”改成“小”)。(2018.4,161220154闫雨呼指出)

第十章

P125,第6行,“因为从Wa时针连到...”(原文“逆时针”是错的)

第十一章

P143,关于图11.1的解读有错误。在A和B确定之后,应该是A和G的最短路径被确定(原文写的A到C的路径被确定是错误的)。另外,图11.1的c)和d)两幅小图中,边AB的权都应该是2,边BC的权值都应该是4。(下一版考虑把图11.1的c)和d)小图重新画一下。目前的图是为了例子中左边阴影中的顶点数多一点,跳过了A到B和G的最短路径被确定的情况,用我们课上的术语,就是跳过了问题P(3)的情况。)

第十三章

P162,第2自然段,第4行:“添加一条i指向k的边”(原文“i指向j的边”是错的)

第十四章

P175,EditDis公式上面第3行:“如果两个字符不同,则编辑距离加1”(原文“如果两个字符相同”是错的)

P178,14.3.4节:问题P(2)的定义应该是这样:“P(2)=max{A[2], A[2]+A[1], P(1)}”(也就是说,原文写的“P[1]”是错误的)。

还是这一页,问题P(4)的定义应该是:“P(4)=max{A[4], A[4]+A[3], A[4]+A[3]+A[2], A[4]+A[3]+A[2]+A[1], P(3)}”(也就是说原文中的第四项,写成"A[4]+A[3]+A[2]+1"是错的)。(2018.3.20,课后由141180038黄谦同学指出)

P179,“14.4习题”标题上第2行:“我们只需从下到上...”(原文“从上到下”是错的)

第十六章

P197,问题16.3中间的CNF到DNF的转换计算有误,大家可以自己算一下正确结果。不过这不影响大家解这个问题。

编辑于 2019-04-16

文章被以下专栏收录

    讨论算法设计与分析(串行算法,分布式算法等)相关的理论、技术、教学、历史、文化及其它周边内容