The art of computer programming Donald E. Knuth volumn one third edition读书笔记2-1

来源:互联网 发布:爱淘宝女装 编辑:程序博客网 时间:2024/05/16 06:50

练习答案

1,一个一般的涉及数学的问题。

4,请参考W.J.Leveque, Topics in Number Theory 2(Reading, Mass: Addison-Wesley, 1956), chapter 3;P.Ribenboim, 13 Lectures on Fermat's Last Theorem (New York; Springer-Verlag,1979);A. Wiles, Annals of Mathematics (2) 141 (1995), 443-551.

对于第4题,就是要证明费马大定理,对于这种世纪难题,我就看看,不说话。


第一章 基本概念

1.1算法

Algorithm E (Euclid's algorithm)欧式算法

给两个正整数m和n,找出他们的最大公约数,即找出一个最大的正整数能被m和n整除。

E1【找余数】用n去除m,r是余数

E2【余数是0吗?】如果r=0,算法结束;n就是答案。

E3【简化】设置m<---n,n<---r,回到E1。

其中E3中的m<---n就是用n代替m的意思。E3中的m<---n和n<---r的顺序不能调换。

读者不单单只是要读这个算法, 学习算法最好的方式是要试着去执行它。拿纸和笔好好的算算。

比如现在m=119,n=544;从E1开始,119除以544,商是0余数是119,所以r<---119。下一步是E2,因为r不等于0,所以E2不执行。在第三步,m<---544,n<---119。很明显,如果一开始m<n,在第一步的答案一定是0,在第三步,m和n就会互换位置,这样就很笨拙。所以,一开始要加一个步骤:

E0【确保m>n】如果m>n,把m和n互换,即m<--->n。

这样没有改变算法的本质,但是减少了运行时间。

算法有5个特征:

1,有限性。一个算法要在有限步后终止。

2,确定性。算法的每一步必须是精确,不模糊的定义。

3,输入。每个算法都有零个或者更多输入。

4,输出。每个算法都有一个或者多个输出。

5,有效性。算法是有效的,就是说算法的每个操作都能被我们用纸和笔在有限的时间内完成。举一个反例,比如有一个步骤是

“如果4是解决等式w^n+x^n+y^n=z^n的最大整数n(其中x,y,z是正整数),就到步骤E4”

这种说法就不是一个有效的操作,除非有人能构造一个算法去确定4到底是不是解决那个等式的最大整数。


下面给出一个计算方法的简单说明,以此说明算法这个概念可以建立在数学集合理论的基础之上。

让我们定义一个计算方法(a computational method) ,它是一个四元组(Q, I,  Ω, f ),Q 是一个包含了 I 子集和 Ω子集 的集合,f 是一个自变量和因变量都在Q上的一个函数。此外,对于在子集Ω 里的所有元素q,f (q) 是等于q的(pointwise fixed)。Q, I, Ω, f 分别用来表示计算的状态,计算的输入,计算的输出以及计算的规则。

每个在输入集合I 的元素x,都表示了一个计算的序列x0, x1, x2,...,其中,

x0=x, 以及xk+1 = f(xk) 对于 k>=0。

如果k是对于在集合Ω中的xk来说的最小的整数,就说计算的序列在k步内停止。有些计算序列可能永不停止。算法就是一个对于所有在集合I中的x,在有限多的步骤后停止的计算方法。

举一个例子就是,上文的欧式算法(Algorithm E) :Q表示所有的n,所有的有序对(m, n), 所有的有序四元组(m, n, r, 1), (m, n, r, 2 ), (m, n, p, 3), 其中, m, n , p 都是正整数,r 是一个非负的整数。I 就是Q的一个子集,它是所有有序对 (m, n) 的集合。Ω 也是Q的一个子集,它是所有 n 的集合。f 的定义如下:

f ( (m, n) ) = (m, n, 0, 1); f ( (n) )=(n);

f (  (m, n, r, 1) ) = ( m, n, remainder of  m divided by n, 2);

f ( (m, n, r, 2) ) = (n) if r=0,  (m, n, r, 3)  otherwise;

f ( (m, n, p, 3) ) = (n, p, p, 1).

这个定义与Algorithm E 的对应是十分明显的啦。

这个对算法的定义并没有把算法的有效性这一点囊括进来。比如说,Q可以是一个无法用纸和比计算出来的无限的序列,或者f是一个包含了人类还不能执行的操作。 如果我们要对有效性这一点加以限制的话, 我们可以对Q ,I , Ω, f 进行一些限制。

习题:

3.[20] 改进Algorithm E, 以避免所有的繁琐的代替,比如m<---n。用Algorithm E 的格式重写,并命名为Algorithm F。

0 0
原创粉丝点击