《算法导论》英文版前言第3段研习录

【英文版】

Each chapter presents an algorithm, a design technique, an application area, or a related topic. Algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The book contains 244 figures—many with multiple parts—illustrating how the algorithms work. Since we emphasize efficiency as a design criterion, we include careful analyses of the running times of all our algorithms.

【中文版】

书中每一章都给出了一个算法、一种算法设计技术、一个应用领域或一个相关主题。算法是用英语和一种“伪代码”来描述的,任何有一点程序设计经验的人都能看得懂。书中给出了244幅图,说明各个算法的工作过程。我们强调将算法的效率作为一种设计标准,对书中所有算法,都给出了关于其运行时间的详细分析。

【老金版】

书中每章介绍一个算法、一项设计技术、一个应用领域或一个相关主题。算法用英语和伪代码描述。任何有一点编程基础的人都能读懂这些伪代码。本书用244幅图——许多图内还有多幅子图——来说明算法的工作原理。我们强调效率作为算法设计的标准,因此书中对所有算法的运行时间都进行了仔细分析。

【解析】

一、翻译

1.中文版翻译

中文版存在几个明显的问题:

(1)定语修饰关系混淆。

“designed to be readable by anyone who has done a little programming. 被设计成任何有一点编程基础的人都能读懂”这句无论从语法还是句意上来说显然只是修饰pseudocode(伪代码)这个词的,面不包括English。中文版对此未加区分。

(2)翻译遗漏。

破折号中的“many with multiple parts”,中文版完全没翻译。这句确实不好翻译,但是,不好译不是不译的理由。老金也不是专业的,这里用了大白话,其实它说的就是图中还有图。比如下面这种:

cc3c66aa6dbb4d4a92341da45bc0bbbf.png

从图后文字“Figure 3.1”可以看出是把上面这3张图整体作为一幅图示(咱们中文的书一般也是这样弄),于是这3张图就成了图中图。

(3)因果关系缺失。

最后一句“Since we emphasize efficiency as……”明显是有因果关系的,而中文版完全没体现,读起来非常生硬。

(4)careful翻译错误

careful的意思是“小心翼翼的、细心的”,但却没有“详细的”之义。“细心”和“详细”的差别还是很明显的。就像你可以说一个人是个细心的人,却不能说他是个详细的人。细心说的是态度,详细说的是内容,一个用来形容人,一个用来形容物。

2.figure

figure这个词现在我们常用它来表示“数字”,实际上它的本义是“形状(shape)”,因此可以表示“图、图表”,它专指书中的带有编号的图和表。“数字”是后来引申出的来意思,本质上也是形状而已。

3. illustrate

当表示“说明、解释”含义时,它专指用示例或图示说明:to make the meaning of sth clearer by using examples, pictures, etc. 即它是用证据解释,而不是理论说明或辩解。

4. emphasize...as...

“emphasize...as...”表示“把……作为……来强调”

5. include

include意为“包括﹐包含”,比如:

The curriculum includes courses in computing.课程内容包括计算机技术。

——《朗文当代高级英语辞典》Longman Dictionary of Contemporary English(LDCE)

但如果将“we include careful analyses of the running times of all our algorithms.”译为“我们(或书中)包括所有算法的运行时间的仔细分析”会特别不顺。

include的本质就是“A中有B”,也就是“A干了B”,中文版译为“给出了”也不错,老金翻译成“进行了”。

二、个人理解

1algorithm, design technique, application area

algorithm是指解决问题的办法,比如针对排序问题的快速排序。它针对的是问题。如果把面临的问题看成数学题,algorithm就是对某道或某类数学题的解法,比如证明全等的边角边、角边角方法。这里的algorithm指的是狭义的算法,而书名《Introduction to Algorithms》中的algorithm指的是广义的算法。

design technique指的是设计算法的方法、技巧、策略,比如分治法、动态规划、贪心算法。design technique是获得解决问题方法的方法,它针对的是解题过程,而不是问题本身。对于数学来讲,它是指解题这一过程的通用方法、技巧、策略,比如反证法。

application area是指算法发挥作用的地方,比如数论。

2.算法描述

这里明确说了算法描述没用任何编程语言。这也是本书十分明智的地方。任何一门编程语言都可能过时甚至淘汰,而English和pseudocode永不过时。

3.易理解?

无论是算法的设计、分析,还是算法描述,作者一直强调所写内容非常容易理解。可能是作者觉得这是个大部头,怕读者心生畏难情绪,所以开篇反复强调其可读性、可理解性。

但事实真的如此吗?为什么有那么多的程序员都说它晦涩难懂?

老金不由心生忐忑,这本书可能要读上“一万年”。

4.运行时间分析

运行时间分析(时间复杂度)就像算法的孪生兄弟,但凡有算法,必有运行时间分析。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金创想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值