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。
- The art of computer programming Donald E. Knuth volumn one third edition读书笔记2-1
- The art of computer programming Donald E. Knuth volumn one third edition读书笔记1
- The Art of Computer Programming
- The Art of Computer Programming
- The Art of Computer Programming
- The Art of Computer Programming(TAOCP)
- 《The Art of Computer Programming》的PREFACE
- The art of computer programming chapter1
- The Art of Donald McGill
- 高德纳(Donald E. Knuth)
- Donald E.Knuth
- 读《计算机程序设计艺术》有感 The art of Computer Programming
- 5月1日买了《The Art of Computer Programming》
- 算法大师:Donald E. Knuth
- opencv-3-computer-vision-application-programming-cookbook-third-edition.pdf
- The Art Of Unix Programming ---part 1
- Art of Computer Programming 的学习 练习
- The Art of Unix Programming
- 优秀博客网址
- LOD原理
- vim-go安装
- C++编译链接过程
- JAVA 静态成员不具有多态性
- The art of computer programming Donald E. Knuth volumn one third edition读书笔记2-1
- C#的Socket实现UDP协议通信
- Objective-C 7 NSArray常用方法
- Activity中的Intent的用法
- Utral Edit中打开多个文件标签
- C/C++编译链接过程详解
- android实现自定义RelativeLayout可拖动、缩放、旋转TextView
- jdk7 并行计算框架Fork/Join
- vmware安装Apache Storm集群