超越离散数学

Posted cdai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超越离散数学相关的知识,希望对你有一定的参考价值。

早些时候曾写过一篇程序员的数学修养,介绍了一些程序员可以学习的数学分支。虽然与编程有一定的相关,但自学起来也不是一件容易的事。所以本文再推荐一些专门为程序员写的数学书,可以用作入门。有了一定基础知识,可以再根据需要去学习和选读一些更偏向数学的书。说到程序员数学,可能第一反应就是离散数学,再就是算法。国外的几本经典教材可能大家也都耳熟能详,所以本文会侧重一些不是很热门或者新出版的书籍。


1.抽象代数

《From Mathematics to Generic Programming》和《The Elements of Programming》,两本书出自同一作者。后者中文名《编程原本》,是一本老书,可能更出名一些。前者则更为新一些,而且内容不那么枯燥。除了抽象代数和数论等基础知识,还额外介绍了一些编程中的应用及相关历史人物生平简介等。总体上来说,还是一本值得读一读的好书。读过之后,可以再考虑挑战后一本。


2.范畴论

《Basic Category Theory for Computer Scientists》,作者是大牛,除了这本还写了可能更为有名的《Type of Programming Language》。此外,还有一本《Category Theory for Programmers》评价也很不错。值得一提的是作者还在不断完善更新,并在国外的自出版网站Lulu上出售。按需印刷,价格非常低廉。


3.信息论

作为程序员怎能不知信息论。首先是两本科普性质的书《Decoding the Universe》和《The Information》,后者是个大部头,英文原版不太好读,前者则用词和内容都更为简洁一些。如果读过觉得还不够过瘾,还可以看看《A Mind at Play》介绍信息论之父香农的生平事迹。但这几本毕竟都是科普自传类的,要真正深入学习还是得艰苦一些,这里推荐口碑爆棚的《An Introduction to Information Theory: Symbols, Signals and Noise》。Dover出版,非常便宜。


4.线性代数

说到线性代数,可能唯一一本能入选本文的就是那本《Coding the Matrix: Linear Algebra through Applications to Computer Science》。全书除了介绍理论,还用Python真正代码实现,可以说是对码农们相当友好了。


5.逻辑

逻辑在计算机科学中主要是自动证明,《Logic in Computer Science: Modelling and Reasoning about Systems》评价还不错。再就是“小不点”系列中的《The Little Prover》和《The Reasoned Schemer》。最后一本还没入手,据说要看第二版,第一版非常的绕。


6.关系代数

作为数据库理论的关系代数,主要涉及集合论和逻辑。关于这方面的知识有两本好书可以参考,《Database in Depth: Relational Theory for Practitioners》和《Applied Mathematics for Database Professionals》。前者据说是关系理论之父的好友,内容触及关系理论的本质,不可不读。


7.大全

还有一些比较全面的书,比如大名鼎鼎的《具体数学》,还有新出的《A Programmer’s Introduction to Mathematics》。后者排版很一般,内容尚可,作为这一类为数不多的书还是支持推荐一下吧。除此之外,还是忍不住推荐一本有点像离散数学教材的百科大全式的书《Mathematics for Computer Science》。此书的开本非常夸张,加上超过1000页的厚度,可以说是一本巨无霸。相信如果真能读完,必会内功大涨。不过估计大部分真能买实体书的同学,也可能像我一样,只是当参考书查阅。

以上是关于超越离散数学的主要内容,如果未能解决你的问题,请参考以下文章

算法基础之微积分--线性代数--离散数学

离散数学2代数系统与图论个人总结

浅谈离散数学中数理逻辑与集合论的数学本质

布尔代数是怎么出现的?

离散数学

数学分支(转)