概述:数据时代

数据结构与算法Python版(MOOC 北京大学 陈斌老师)

一、概述:数据时代

信息时代就是数据的时代

问题求解的计算之道
what -> why -> how
数学:解决问题的终极工具
那么如果光靠人用数学来解决问题(未知事物)太累了,数学家希尔伯特提出“能否找到一种基于有穷观点的能行方法,来判定任何一个数学命题的真假”,这就是计算数学概念的提出


计算数学即通过计算来解决数学问题

计算数学有两个关键词:有穷和能行
有穷:指令有穷
能行:每条指令都可以机械地被精确执行,而不需要智慧和灵感


图灵机计算模型

基本思想是用机器来模拟人们用纸笔进行数学计算的过程
一条纸带,一个读写头,用户定义的有限个状态
五元组(当前状态,读写头读到的符号,读写头欲写的符号,如何移动读写头,下一个状态)


算法和计算复杂性

计算数学关注的是“可计算性”。也就是是否能够有穷能行地解决问题,而不在意解决的效率,即可行性。
计算复杂性理论只是对问题的难易程度有一个分类,它是不管问题的解决方案的。
算法不同,算法是要给出问题的解决方案的。


什么是 抽象和实现

计算机科学不仅仅是对于计算机的研究,它包括计算复杂性理论和算法的研究
抽象:去除一些对事物影响不大的因素,从逻辑和物理两个层次来分析事物


什么是ADT 抽象数据类型 abstract data type

简单的说就是一种封装好的数据结构,在用的时候只要知道这个数据结构的各个接口,调用就行,而不需要知道这个数据结构的具体实现细节(这太常见了)



c语言代码的编译到执行过程

compile 编译到机器码
link 与各种库链接
execute 执行目标程序






2020-12-11总结

1、分析一个问题的时候首先要从数学的角度来看,即能不能通过有穷观点的能行方法来解决这个问题,注意有穷观点的能行方法(即计算数学)并不是说只能解决计算机能解决的算法问题的,它是涵盖了理论推理等多种方法的。
2、计算复杂性理论和算法理论是不同的,计算复杂性理论只是为这个问题定义界别,说这个问题是属于简单问题,中等的问题还是难的问题,但是算法是要给出问题的解决方案的
3、在衡量一个算法的时候和衡量一个程序的好坏的时候,这个算法时间效率和这个程序的时间效率都是衡量好坏的一个指标,除此之外,还有一个空间效率也是一个衡量的指标。 但是程序的衡量结果并不是这个算法的衡量结果,程序的时间效率的衡量,如测算出这个程序运行的时间,跟运行机器,程序语言,和程序的实现技巧都有关系。而算法的衡量只是逻辑上的衡量,如衡量算法的时间效率,也就是算法的时间复杂度时,我们想要知道这个算法逻辑上的运行时间,我们选取算法中的赋值语句作为基本语句,这是因为赋值语句兼顾取值,计算,存储三个基本的步骤,这对应着计算机系统中的控制,运算,存储三大功能,所以赋值语句更能体现计算机的操作特性,这样我们就能通过算法中赋值语句的多少来衡量算法的时间效率(注意这时候程序可能还没有写出来,但是赋值语句的条数是可以估算的),然后不同的问题规模肯定对应出不同的赋值语句的条数,那么算法规模n对应赋值语句条数的函数就是算法的时间复杂度,把一些不必要的因素,如常尾数,常系数去掉的表示方法就称为大O表示法,因为它认为真正的赋值语句的条数不过是将大O中的函数做一些线性变换得到,然后大家都用大O表示法的话,事实上这也就会成为一种广为流行的标准。因此大O中的函数也叫作数量级函数,由于去掉了常系数和低次项,实际上的O(n)来的要比T(n)小呢~~~
4、上面一点中阐述了衡量算法和衡量程序的方法,两者虽然方法不同,但是要知道程序肯定是根据算法写出来的嘛,所以程序在运行的时候针对不同的问题规模n,所运行的不同时间,也是满足算法的时间复杂度规律的,比如使用的算法就是一个n^2量级的时间复杂度的算法,那么这个程序在运行的时候它的运行时间和问题规模的函数曲线作出来肯定也是平方量级的。另外,针对相同的问题规模,不同的实例(如在排序算法中,一组长度相同的不同数据)在同样的算法,赋值语句的条数也是不一样的,即所需要的时间也是不一样的,这样就有三种算法的时间复杂度了,即最好,最坏和平均,一般来说最好的时间复杂度对于我们理解问题没啥意义了,因为这个就好像是投机取巧的意思,所以我们分析的是平均和最坏的时间复杂度呢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值