离散数学视频、书籍推荐及学习体会

转眼之间开学也两个月了,中间因为一些杂七杂八的恶心的事情,耽误了一个月左右的功夫,其他时间基本都是在学离散数学,现在也基本学完了,对学习内容、方法、书籍做一下小结。
第一,离散数学到底包含哪些内容?传统的讲法,包括数理逻辑、集合论、代数系统和图论;有的书籍还包含组合数学、数论、甚至离散概率论等等内容。这些内容,其实每一部分单独开设一门课讲授,都是不为过的,所以想要在一本书中把它们都尽善尽美的表述清楚是不可能的。对于用哪本书,怎么学的确是一个大问题。我的学习方法基本上是视频+书籍。视频我完整的看过两个:一个是中科院高随祥老师的离散数学,另一个是吉林大学刘叙华老师的视频。它们对应的书籍是屈婉玲的《离散数学》(04年版)和刘叙华的《离散数学》。我还稍微翻了一下大名鼎鼎的《离散数学及其应用》(第六版,第七版中文会在今年年底出)。下面对其一一进行说明:
高随祥老师的讲课,基本上照本宣科,然后把一些不容懂的地方做一下解释,没有什么自己的理解或者理论体系。讲授的内容包含了数理逻辑、集合论、代数系统和图论。其他部分讲的还基本可以听懂,代数系统讲的非常差劲。就是听懂了,你也不明白是干什么的。差不多搞懂了里面的所有定理和例题,但是还是不能理解为什么古代数学3大难题:
1.三等分角问题:将任一个给定的角三等分。 
2.立方倍积问题:求作一个正方体的棱长,使这个正方体的体积是已知正方体体积的二倍。 
3.化圆为方问题:求作一个正方形,使它的面积和已知圆的面积相等
为什么不能做出来。
但是这又不能全怪老师,因为数理逻辑、集合论、代数系统这三大部分内容,一共就上了9天的课,图论内容也只讲了3天。每天讲一下午!可能是中科院的天才少年们真的智力超群,能够跟上,但是我自己这种智商一般的人就觉得很吃力了。讲课内容也是紧扣考试大纲,考什么,怎么考,就怎么讲,比如布尔代数这部分内容,就没有讲(理由就是大纲里没有要求)。但是听完以后,的确能够做出大部分的课后题,至于这些知识有什么用,就没有时间讲授了。


再说刘叙华老师的课。讲的非常棒!首先他会对每一部分的内容,发展历史,做出介绍,让人很有兴趣。其次,他对离散数学有着自己深刻的理解,比如(以下内容均为大意):
“数学是对具体问题的抽象,数理逻辑是对推理问题的抽象,他不关心哪个命题是否正确,而是关心这种推理方式是否正确。”
“使用一一对应来定义相等,是非常朴素的观点。比如小时候分糖吃,那时候不会把总数加起来除以二来分,而是你一个我一个的分”
“谓词就像函数。”
“抽象代数是对代数运算的抽象,不关心具体的运算结果,只关心运算的性质。”
讲解过程中数学味十足:定义,定理,证明,非常严格,就连左单位元什么时候等于右单位元等等一些看似不起眼的东西,都给出了证明。就像老师最后一节课结尾时所说的(这里是大意):“我一辈子可能学过好几千个定理,其中的很多定理这这一辈子都没有用过,但是它们培养了我精密的头脑,这是一个计算机科学家所必需的。”不过可惜的是,由于是电大的课程,数理逻辑中的谓词推理没有讲,代数系统的内容只讲了群,对于环、域,拉格朗日定义、商群等等内容,没有讲,布尔代数中的内容也有一定的缺失。不仅如此,由于年代久远(九几年),所以视频录制的效果不佳,还有个别章节画面与声音不同步(可以通过把视频下载下来,同时开两个播放器解决)。
其他视频由于我没有仔细看过,所以不做评价。
下面说一下书籍。屈婉玲的《离散数学》:这应该是一个经典的版本了。我只能说一般,08年出了新版,增加了组合数学和数论初步的内容,删减了代数系统的内容。总体的感觉就是毫无特点。首先,它很想跟应用挂上勾,但是书中的例子不仅很少,而且有些甚至让人觉得莫名其妙,导致前面的内容需要后面章节的知识。而且书里面的讲法沿用了传统教科书的风格——简略,各种“显然”,对于自学的孩子,是非常痛苦的。个人感觉学数学,一定要“说汉语”,把每个定理的含义,公式推导的理由,用自然语言描述清楚,才能让人更好的理解问题。因为数学问题是把实际的问题抽象(符号化),只有通过说汉语,将这些抽象的公式变换回去,才能反映出它的本来面目。于此同时,介绍这个知识的背景,以及它是如何使用的等等。但这本书的好处在于,习题多,配有答案书,所以是一门应试教育的优秀教材。这本书还有一个显著地问题,就是引入的符号不太好,导致我有时候不得不翻一会儿书,才能找到这个符号是哪里的。书后面的那个术语、名词、符号表基本不能用,反正当我碰到哪个不认识的时候,查表肯定是没戏的。当然,个人感觉除了代数系统这一部分以外,集合论、数理逻辑的讲解是很清楚的,也偶有亮点,比如在数理逻辑中通过完备集说明了为什么电路中只使用与非门或者或非门就够了;清楚的证明了为什么反正法是有效的;还有那个消解法(不过我没看懂)等等。
刘叙华的《离散数学》:这本书没啥名气,学校图书馆里竟然都没有,如果书中内容与他上课所讲内容一致的话,绝对不失为一本优秀的入门教材。(话说这本书是93年出的,现在还能买到,可见还是得到市场认可的)。这本书的还有一个显著的特点,就是使用的符号很少,函数的复合就是用普通的乘法;二元关系就使用(x,y),并不使用<x,y>强调有序对等等。最遗憾的莫过于,据说刘老师已经成了植物人(消息来源于网络,不可考证),所以此书一直没有再版过。不禁唏嘘不已。
最后说一下Rosen的《离散数学及其应用》,我只看了数理逻辑部分,大概说一下感受。第一,面对的受众、功能很明确,就是离散数学的基本内容,虽然知识面广,但是难度都很低,比如数理逻辑中就没有讲“范式”的内容,代数系统中只讲了布尔代数(并且不是从格的角度讲的),第二,紧扣应用,里面的很多例子都与计算机有关。第三,就是会介绍你认识一大推与数理逻辑有关的科学家,算是课外阅读吧。第四,全书的题量非常大,而且有答案书可以配套,便于自学。


最后是一点关于离散数学的一些学习体会,仅供参考。
并不是所有跟计算机有关的数学,或者能用计算机实现的数学都应该放在离散数学里讲的,不然数值分析(计算方法)也要被拉进来了。前面已经说过,最好的每个内容单开一门课,否者肯定会出现学不精的情况。如果实在不允许,我觉得集合论、数理逻辑、代数系统、图论的知识是必须的。
集合论是整个数学的基础(不管是离散数学还是连续数学),所以如果没有专门学过,那么出现在离散数学中还是很合适的。至于由集合引出的二元关系,函数等内容,也是理所当然的。

数理逻辑是一个让人眼前一亮的东西。我第一次发现原来有些复杂的推理问题,是可以通过“计算”的方法解决的。这无疑为我这种笨人提供了福音,至于整个数理逻辑的内容讲多少,的确得按照情况而定。至于前面提到的那个消解法(就是编程计算命题公式的真值),我个人觉得他很重要,但是难度有点大,所以估计会的人比较少(包括老师)。

代数系统除了布尔代数以外,在计算机和通信领域有一个重要的应用就是编码,但是编码一些复杂的编码需要使用伽罗瓦域的知识,所以除了讲到布尔代数,如果能讲到伽罗瓦域就更好了。但是如果讲不到伽罗瓦域,那么整个讲解就有点鸡肋;因为不使用抽象代数的观点,布尔代数也能很好的被描述出来,但是就无法展现出集合代数与命题代数其实只不过是布尔代数的两种不同解释这一重要的观点了。

图论又是一门非常有用的学问。它很好地抽象了“关系”这个本来很难描述的东西,而且使用矩阵这种喜闻乐见的形式表达的出来。树和图的应用很多,比如霍夫曼编码,最短路径等等。个人觉得如果先学过数据结构,了解一点应用,就会对这些抽象的问题更有体会。
组合数学不好评论,因为没有学过。数论最常见的应用在于密码学,如果你没有接触这方面东西,那么不会数论也无所谓。
至于先学什么,个人觉得先讲数理逻辑会好一点,毕竟虽然集合论是整个数学的基础,但是逻辑推理可以认为是数学的基础。先把逻辑理顺了,后面使用逻辑符号,能让其他的理论看起来更加简明。
最后一点,做题是很有效地方法检查你对知识的理解是否到位:一般难度的题,如果你会做,那么基本上就理解了这个知识点,如果你不会做,但是能看懂答案,说明你对如何使用它还是有所欠缺;如果连答案都看不懂,那么你是你没有理解知识点,那么就是书的确写的不咋地。多做点题绝对没有坏处。
PS:以前没学过离散数学,但是在看《算法导论》时,我发现数学,真的就在自己的身边,它指导着我们进行算法的设计,因此才狠下功夫看了一阵。离散数学的学习内容并没有写成笔记跟大家分享,主要是因为:1.公式太多,写起来麻烦;2.自己对这门课的理解也不深刻,基本都是书上的内容。而且数学书上的内容很难被“压缩”,所以我就不献丑了。

至于离散数学到底带给了我什么,估计以后看过《离散数学及其应用》这本书以后,我才能有一些切实的体会,这里就不多说了。
就这么多吧,两个月一直没有更新博客,跟大家说声抱歉,以后有机会了我会继续分享我的学习心得的。

你可能感兴趣的:(离散数学视频、书籍推荐及学习体会)