离散数学跟数据结构与算法的关系
来源:1-1 欢迎学习《玩转数据结构》
岁月长ch
2018-04-16
科班都会有一门离散数学,不清楚这两门课有什么关系。
3回答
-
离散数学是一门包含内容很广的学科,集合论,群论,数论,图论,数理逻辑,博弈论,组合数学,拓扑学,运筹学等内容,都可以放到离散数学的篮子里。
简单的说,离散数学是和连续数学相对应的,是处理“离散的数据”的数学(而非像实数这样的连续数据)。由于计算机处理的很多任务都是基于离散数据的,所以,离散数学在揭示很多算法的底层数学原理。
比如大多数同学学习计算机,都会编写辗转相处求最大公约数的算法,包括各种筛素数或者验证素数的算法,他们背后其实是数论;
再比如说图算法一般是本科计算机算法学习的一个大块头,在算法学习中,可能更强调实现,但是离散数学中图论领域更强调图模型背后的数学原理和性质;
又比如,动态规划也是本科计算机算法学习必学的内容,而动态规划本身也会在运筹学中作为一个经典的最优化方法讲解。
如果你曾经参加过算法竞赛,将会看到更多问题,其实很难说是算法问题还是数学问题,比如在博弈论,组合数学,群论,数论等领域。很多问题编程实现是简单的,但是分析这个问题本身是困难的,需要相应的数学基础,在传统算法领域,数学基础通常指的就是离散数学。
不过,如果你不是科班出身,我个人认为接触算法与数据结构之前,也不需要先掌握离散数学。对于大多数,尤其是基础的算法和数据结构知识,不去学习离散数学,直接去学习算法和数据结构,是完全没有问题的。当然了,如果你有时间,也有兴趣,接触一下离散数学,会让你对很多问题的认识更深刻的:)
加油!
442018-12-24 -
WhatsUpBitch
2018-04-18
现在有点后悔当初大二的时候没好好学离散,现在做算法题的有时候吃力。。。
00 -
岁月长ch
提问者
2018-04-16
懂了。谢谢bobo老师
00
相似问题