这是《具体数学-计算机科学基础》这个系列开篇的第一课,也希望我能够坚持将这本书读完并且有所收获,其实说来也是惭愧,这本书我是在一年前就购买了的,包括英文版和中文版,但由于种种原因,一直都没有开始去阅读(其实就是自己比较的懒),前几天突然在自己的书架上发现了这本书,我实在不忍心这么一本非常好的书籍就这样摆着,所以拿下来开始阅读,读完前言和目录,我发现这本书确实不同于一般的计算机类的书籍,也不同于一般的数学类书籍,所以准备好好的研读下。
今天我花了差不多半天左右的时候,将前言和第一章读完了,仔细的阅读了差不多2遍,习题还没有来得及做,下周会抽空做做,并且之后会将习题的相关情况和答案都上传上来的。好了,言归正传,下面我要详细的将今天的成果做一个总结。
首先,是大概四页左右的前言部分,这本著作是高纳德(要是连这位的名字都没有听过,那么就需要好好的去了解下这位计算机科学界的传奇人物事迹)《计算机程序设计艺术》的基础课。高纳德将《计算机程序设计艺术》中涉及到的相关数学知识全部都写到这本书里面啦,就是说,当年学完这本书的时候,你所具备的数学知识已经是可以完全应付《计算机程序设计艺术》的内容。从内容来说,这本书涉及的数学内容基本上是离散数学和组合数学的内容,但是从内容的侧重点来说,涉及的点是实用的数学,而不是抽象的数学,书中所有涉及的东西都是能够将其“算”出来的,而不是给你一个理论,一个“存在”或者“不存在”的理论。那这样的数学是很有“实用价值”的,可以立刻应用到相关的地方,例如:算法推导等等。
下面我们即将进入这本书的第一章,可以说,从内容和难以程度来说,这章相对于其他章节来说都不是非常的难的,但是又是非常重要的,这章让我们能够熟悉作者的写作手法和模式,像这章的主题是“递归问题”,“递归”对于学计算机的同学和计算机从业人员来说是最重要不过的概念,也是最应该被重视的一块地方,作者深知其重要性,所以将其放在开篇,写作手法上,作者采用了三个具体的案例:The Tower of Hanoi(河内塔问题)、Lines in the Plane(平面上的直线)、The Josephus Problem(约瑟夫问题),通过问题的提出,对问题的思考,一步一步的得出结论,并进一步扩展。
河内塔和平面直线问题(具体内容可以参看书籍)应该算是最早被人们熟知,也是数学家研究的最广泛的一类问题,这个问题中作者详细给出了推导出递推式的过程,并采用类似数学归纳法的方法给出了该递推式所对应的封闭形式解。
约瑟夫问题是这一章里面作者采用篇幅最多的,作者在这个例子里面得出了求解递归式的成套方法。该方法就像是能够开启递归式求解的钥匙,必须要好好的掌握。作者最后以一个基数进制变换的例子作为该方法的一个展示,从中可以看出作者的功力,作者希望我们在面对计算机中广泛会遇到的递归问题时候,不要是像之前一样盲人摸象,毫无章法,而是像求解微积分导数一样,有可以直接用上的方法。
总体来说,这一章的难度不大,多阅读几遍应该都是可以掌握的。但是习题可能是需要花一些时间,有些题目也是比较难的。争取这周能够将习题完成。如果对此感兴趣的朋友也可以留言一起交流。