荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: bigone (好好学习), 信区: Program
标  题:  [4]续谈其他的一些计算数学
发信站: 荔园晨风BBS站 (Thu Jun  5 11:54:36 2003), 站内信件

组合数学我看的第一本好像是北大捐给我们学院的,一本外版书。感觉没有太适合
的国产书。还是读Graham和Knuth等人合著的经典"具体数学"吧,西安电子科技大
学出版社有翻译版。
  《组合数学》,《空间解析几何》还有那本《拓扑学》,看这三本书的时候是
极其费事的,原因有几点,首先是这三本书无一例外,都是用繁体字写的,第二就
是书真得实在是太脏了,我在图书馆的座位上看,同学们都离我做得很远。我十分
不自然,不愿意影响同学,但是学校不让向外借这种书(呵呵,说起这是也挺有意
思,别人都不看这种书,只有我在看,老师就特别的关注我,后来我和他讲了这些
书的价值,他居然把他们当作是震馆之宝,老师都不许借,不过后来他们看我真得
很喜欢看,就把书借给了我,当然用的是馆长的名义借出去的。)不过收获是非常
大的,再后来学习计算机理论时里面的很多东西都是常会用到的。当然如果你没看
过这些书绝对理解不到那个层次。拿拓扑学来说,我们学校似乎是美开设这门课程
,但是这门课程的重要性是显而易见的,没有想到的是在那本书的很多页中都夹着
一些读书笔记,而那个笔记的作者及有些造诣,有些想法可以用到现代网络设计当
中。
  抽象代数,国内经典为莫宗坚先生的《代数学》。此书听说是北大数学系教材
,深得好评。然而对本科生来说,此书未免太深。可以先学习一些其它的教材,然
后再回头来看"代数学"。国际上的经典可就多了,GTM系列里就有一大堆。推荐一
本谈不上经典,但却最简单的,最容易学的:http://www.math.miami.
edu/~ec/book/这本"Introduction to Linear and Abstract Algebra"非常通俗易
懂,而且把抽象代数和线性代数结合起来,对初学者来说非常理想,我校比较牛的
同学都有收藏。
  数论方面,国内有经典而且以困难著称摹冻醯仁邸?(潘氏兄弟著,北大版)
。再追溯一点,还有更加经典(可以算世界级)并且更加困难的"数论导引"(华罗庚
先生的名著,科学版,九章书店重印,繁体的看起来可能比较困难)。把基础的几
章搞定一个大概,对本科生来讲足够了。但这只是初等数论。本科毕业后要学计算
数论,你必须看英文的书,如Bach的"Introduction to Algorithmic Number
Theory"。
  计算机科学理论的根本,在于算法。现在很多系里给本科生开设算法设计与分
析,确实非常正确。环顾西方世界,大约没有一个三流以上计算机系不把算法作为
必修的。算法教材目前公认以Corman等著的《Introduction to Algorithms》为最
优。对入门而言,这一本已经足够,不需要再参考其它书。 深一点的就是大家作
为常识都知道的TAOCP了。即是《The Art of Computer Programming》3册内容全
世界都能看下来的本身就不多,Gates曾经说过"若是你能把这书上面的东西都看懂
,请把你的简历发给我一份"我的学长司徒彦南兄就曾千里迢迢从美国托人买这书
回来,别的先不说,可见这书的在我们计算机科学与技术系中的分量。
   再说说形式语言与自动机。我看过北邮的教材,应该说写的还清楚。有一本
通俗易懂的好书,MIT的sipser的 《introduction to theory of computation》
。但是,有一点要强调:形式语言和自动机的作用主要在作为计算模型,而不是用
来做编译。事实上,编译前端已经是死领域,没有任何open problems,北科大的
班晓娟博士也曾经说过,编译的技术已相当成熟。如果为了这个,我们完全没必要
去学形式语言--用用yacc什么的就完了。北邮的那本在国内还算比较好,但是在深
度上,在跟可计算性的联系上都有较大的局限,现代感也不足。所以建议有兴趣的
同学去读英文书,不过国内似乎没引进这方面的教材。可以去互动出版网上看一看
。入门以后,把形式语言与自动机中定义的模型,和数理逻辑中用递归函数定义的
模型比较一番,可以说非常有趣。现在才知道,什么叫"宫室之美,百官之富"!

   计算机科学和数学的关系有点奇怪。二三十年以前,计算机科学基本上还是
数学的一个分支。而现在,计算机科学拥有广泛的研究领域和众多的研究人员,在
很多方面反过来推动数学发展,从某种意义上可以说是孩子长得比妈妈还高了。但
不管怎么样,这个孩子身上始终流着母亲的血液。这血液是the mathematical
underpinning of computer science(计算机科学的数学基础),也就是理论计算机
科学。原来在东方大学城图书馆中曾经看过一本七十年代的译本(书皮都没了,可
我就爱关注这种书),大概就叫《计算机数学》。那本书若是放在当时来讲决是一
本好书,但现在看来,涵盖的范围还算广,深度则差了许多,不过推荐大一的学生
倒可以看一看,至少可以使你的计算数学入入门,也就是说至少可以搞清数学到底
在计算机科学什么地方使用。
  最常和理论计算机科学放在一起的一个词是什么?答:离散数学。这两者的关
系是如此密切,以至于它们在不少场合下成为同义词。(这一点在前面的那本书中
也有体现)传统上,数学是以分析为中心的。数学系的同学要学习三四个学期的数
学分析,然后是复变函数,实变函数,泛函数等等。实变和泛函被很多人认为是现
代数学的入门。在物理,化学,工程上应用的,也以分析为主。
  随着计算机科学的出现,一些以前不太受到重视的数学分支突然重要起来。人
们发现,这些分支处理的数学对象与传统的分析有明显的区别:分析研究的问题解
决方案是连续的,因而微分,积分成为基本的运算;而这些分支研究的对象是离散
的,因而很少有机会进行此类的计算。人们从而称这些分支为"离散数学"。"离散
数学"的名字越来越响亮,最后导致以分析为中心的传统数学分支被相对称为"连续
数学"。
  离散数学经过几十年发展,基本上稳定下来。一般认为,离散数学包含以下学
科:
  1) 集合论,数理逻辑与元数学。这是整个数学的基础,也是计算机科学的基
础。
  2) 图论,算法图论;组合数学,组合算法。计算机科学,尤其是理论计算机
科学的核心是算法,而大量的算法建立在图和组合的基础上。
  3) 抽象代数。代数是无所不在的,本来在数学中就非常重要。在计算机科学
中,人们惊讶地发现代数竟然有如此之多的应用。
牵砺奂扑慊蒲Ы鼋鼍褪窃谑У纳厦婕由?quot;离散"的帽子这么简单吗?
一直到大约十几年前,终于有一位大师告诉我们:不是。D.E.Knuth(他有多伟大,
我想不用我再说了)在Stanford开设了一门全新的课程Concrete Mathematics。
Concrete这个词在这里有两层含义:
  首先:对abstract而言。Knuth认为,传统数学研究的对象过于抽象,导致对
具体的问题关心不够。他抱怨说,在研究中他需要的数学往往并不存在,所以他只
能自己去创造一些数学。为了直接面向应用的需要,他要提倡"具体"的数学。在这
里我做一点简单的解释。例如在集合论中,数学家关心的都是最根本的问题--公理
系统的各种性质之类。而一些具体集合的性质,各种常见集合,关系,映射都是什
么样的,数学家觉得并不重要。然而,在计算机科学中应用的,恰恰就是这些具体
的东西。Knuth能够首先看到这一点,不愧为当世计算机第一人。其次,Concrete
是Continuous(连续)加上discrete(离散)。不管连续数学还是离散数学,只要是能
与我们研究的内容挂上钩的都是有用的数学!

--
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.1.49]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店