(附思维导图)数据结构(邓俊辉)清华大学-第一章-绪论

©版权声明:本文为博主原创文章,未经博主允许不得转载。

首先,附上第一章的思维导图:
这里写图片描述

1 计算机与算法

1.1 计算

  • 对象:规律、技巧
  • 目标:高效、低耗

1.2 伸缩计算机

古埃及利用勾股定理,过某点做某条指定直线的垂线。

绳索计算机

计算机是什么?

计算过程中所允许的工具。

  • 计算=信息处理

    借助某种工具,遵照一定规则,以明确而机械的程序进行

1.3 有穷性文本

Hailstone序列的定义

有穷性计算

算法的有穷性

1.4 好算法

正确、健壮、可读、效率(运行时间,所需内存空间,所需资源)

2 计算模型

2.1 问题规模

DSA:DATA STRUCTURE & ARTHITECHTURE

对不同DSA进行描述

划分等价类

最坏情况

最坏性能

2.2 理想模型

图灵机模型
图灵机模型a
图灵机模型b
图灵机模型c
图灵机模型d

3 大O记号

考察成本的增长趋势

大O记号

  • O(1)

常数,有一些特例,不一定不含循环(logn几乎是常数),不一定不含分支转向(分支转向不可得到的地方),不一定不能有递归调用。

  • O(logn)

对数,底数无所谓,常数次幂无所谓;对数多项式,ploy-log function,取高阶。

  • O(n^x)

多项式(polynomial function)

线性(linear function):所有O(n)类函数

效率通常认为可令人满意

  • O(2^n)

intractable,难解问题,无效算法。

O,上界,覆盖;omiga,下界。

3.1 2-subset

难解问题,化为有效算法的过程可能是很难的。

问题描述:

S包含n个正整数,sum S=2m

S是否有子集T,满足sum T=m?

实际例子:

美国大选,各自洲,是否可能选票相同的情况。

**定理 **2-Subset is NP-complete

就目前的计算模型而言,不存在可在多项式时间内回答此问题的算法。

4 递归

是一种减而治之的策略,递归每深入一层,带求解问题的规模就缩减为一个常数,直至最终蜕化为平凡的简单问题。

上面是书中的介绍,我认为递归是一种解决问题的方式,直接得到问题的通解不容易,但是得到问题的递推公式(即利用n-1规模的解来求n规模的问题)和平凡解很简单,于是让计算机来计算整个调用过程,这种算法策略,就叫做递归。

还有一个比较类似的算法策略叫做迭代,也是一个重复反馈的过程,但是与递归不同的地方在于,迭代是重复进行同一个运算,来逼近所需目标,而不是减小问题的规模来求解的思路,因此不需要用内存保存n-1、n-2……3、2、1规模的解。所以一般使用迭代来解决问题,可以节省空间成本,但是相应的,对程序员来说,会比递归的方法要难想到一点。

声明:本文部分图片引用自“清华大学-学堂在线-数据结构课程”、《数据结构(C语言版)邓俊辉-清华大学》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值