离散数学跟数据结构与算法的关系

来源:1-1 欢迎学习《玩转数据结构》

岁月长ch

2018-04-16

科班都会有一门离散数学,不清楚这两门课有什么关系。

写回答

3回答

liuyubobobo

2018-04-16

离散数学是一门包含内容很广的学科,集合论,群论,数论,图论,数理逻辑,博弈论,组合数学,拓扑学,运筹学等内容,都可以放到离散数学的篮子里。


简单的说,离散数学是和连续数学相对应的,是处理“离散的数据”的数学(而非像实数这样的连续数据)。由于计算机处理的很多任务都是基于离散数据的,所以,离散数学在揭示很多算法的底层数学原理。

比如大多数同学学习计算机,都会编写辗转相处求最大公约数的算法,包括各种筛素数或者验证素数的算法,他们背后其实是数论;

再比如说图算法一般是本科计算机算法学习的一个大块头,在算法学习中,可能更强调实现,但是离散数学中图论领域更强调图模型背后的数学原理和性质;

又比如,动态规划也是本科计算机算法学习必学的内容,而动态规划本身也会在运筹学中作为一个经典的最优化方法讲解。

如果你曾经参加过算法竞赛,将会看到更多问题,其实很难说是算法问题还是数学问题,比如在博弈论,组合数学,群论,数论等领域。很多问题编程实现是简单的,但是分析这个问题本身是困难的,需要相应的数学基础,在传统算法领域,数学基础通常指的就是离散数学。


不过,如果你不是科班出身,我个人认为接触算法与数据结构之前,也不需要先掌握离散数学。对于大多数,尤其是基础的算法和数据结构知识,不去学习离散数学,直接去学习算法和数据结构,是完全没有问题的。当然了,如果你有时间,也有兴趣,接触一下离散数学,会让你对很多问题的认识更深刻的:)


加油!

4
4
liuyubobobo
回复
中南小蜜罐
https://mp.weixin.qq.com/s?__biz=MzU4NTIxODYwMQ==&mid=2247483836&idx=1&sn=90854aa76507281403e4dd9cd434a12b&chksm=fd8caefacafb27ec78f999fde4f1217c04c6e2ff28cf51fe511d8fa29d484d9281ff91de8c9c&mpshare=1&scene=1&srcid=1129Lc5eLidIW6D8VoKA8Pu4&pass_ticket=RV9qWCQgTyPGHQdgs1SiOhOosKSl5aQPVIIhf5rmqgutcztN9UJySUpu5R0dVEIS#rd 加油!
2018-12-24
共4条回复

WhatsUpBitch

2018-04-18

现在有点后悔当初大二的时候没好好学离散,现在做算法题的有时候吃力。。。

0
0

岁月长ch

提问者

2018-04-16

懂了。谢谢bobo老师

0
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程