数据结构:前言
前言
Example 1 修复照片
原理:拿周边相近的部分来补充
关键技术
-
数据结构 分成小块,
“搜索”
统计特性相同的小块 -
信号处理 小块的边界处理
Example 2 水的模拟
原理:
- 用很多的小球代替液体,每个小球都遵循牛顿力学体系,用单个粒子的物理运动来模拟水的非线性运动。
- 粒子多,效果好,运算量大;粒子少,效果差,运算量小。
那么如何在性能和效率上达到平衡呢?(时间、空间复杂度)
外围红色小球用小直径,内围蓝色小球用大直径。
Example 3 人工智能
AlphaGo & 区块链
原理: 区(结点)+链表+hash+分布式
启示
- 从生活和实际需求产生——观察
- 抽象出模型——数学模型——才能解决它
- 程序模拟——与其他方法的比较
实际问题—模型—模型的性质—解决方案—评估—提出新的问题—实际应用
- 抽象——逻辑工具、逻辑能力
- 还原——具体实施、编程能力
如何增强实践能力?
- 自己多动手编程实现已有算法
- 编程实现自己的算法,可以考虑作业题
启示
计算机思维:
是一个解决问题的流程,包括一系列的特征和处理方式、方法和流程。
- 理工科思维
- 数据、量化、逻辑性
- 计算机思维
- 更强调逻辑性
例题
100桶酒,其中一桶被混毒,有若干志愿者试验,试到毒便死。求以最短的时间内找到毒酒所在那桶,问至少要多少名志愿者?给出你的方案。
解:由题意得,共有100桶酒,七位志愿者,可列下表以直观展现过程。
-
首先将100桶酒利用二进制进行编号,则需要七位数( 100 < 2 7 = 128 100<2^7=128 100<27=128)。如第1桶为0000001,第100桶为1100100。
-
列出如下表格
-
采用这样的方法:
让每个志愿者都试自己所在列的位数为1的酒,例如一号志愿者要喝掉第100号酒。
-
假如,6号志愿者出现反应,便排除了第六列位数为0的酒,再根据其他志愿者的反应,就可以确定到底是哪一桶酒。
本质上是“计算”。
计算机里为什么要采用二进制?
二进制将计算转化为逻辑判断。
数据结构的学习的目的?
培养计算机思维
培养如何用计算机解决实际的问题,学会思考问题的方法以及如何将此问题转化为计算机可解的问题。
数据结构提升本科生的能力?
- 具有批判性和系统性推理的能力
- 具有形成概念和解决问题的能力
- 具有判断什么意味着彻底理解某种东西的能力
- 具有独立思考的能力
- 具有辨别重要与琐碎,持久与短暂的东西的能力
下面对于数据结构的学习的几个问题看看你是否能回答上来?
课程的目标是什么?
解决什么问题
解决问题的方法是什么?
是系统的方法还是一门技术
有什么实际应用?
如何应用这些理论和方法解决其他的问题,见前面的例子。
对于这三个问题必须能清晰的回答出来,才可以说你的数据结构课程的理解到位。而不是课程考了多少分。
那如何学习数据结构呢?
多动脑
—深入理解问题的本质,抽象出模型
多动笔
—纸上推演,深刻领会
多动手
—上机编程实践
深入思考比勤奋更重要!
前言部分就结束了。如果你觉得很简单,那我羡慕你,如果你觉得难,那我想说很正常,数据结构不是单纯的一门技术(如果是的话,可能早过时了)。它作为一门系统的方法论,像哲学一样,一步步的带我们领悟计算机思维,把现实问题抽象为计算机问题,寻求最高效率的求解,这是一件有难度且也有魅力的事情。那接下来的课程,请随我一同探索吧~~ ^_^