数据结构

第一章 绪论(上)

(a)计算

01-a-1:计算

整个计算机科学的研究对象 

计算机只是手段,计算才是最终目标

对象:规律,技巧

目标:高效,低耗

01-a-2:绳索计算机

勾股定理

01-a-3:尺规计算机

尺规做正七边形?

做不出来

尺规做正多边形的高斯判据:

N=

正N边形,可用尺规作图求得当且仅当

尺规作图,三等分一线段

机械执行有限的若干步,子问题,算法可套用

01-a-4:算法

外延的角度?

非退化?

01-a-5:有穷性

素因子?

hailstone序列?

程序 != 算法

死循环 || 栈溢出

设计、优化

如何评判算法优劣?

01-a-6:好算法

既要马儿快快跑

又要马儿吃得少

 (b)计算模型

01-b-1:性能测度

对dsa的性能进行有效的测量

1)尺子

2)咋用

01-b-02:问题规模

将不同的问题具体实例以输入规模划分等价类来便于分析

01-b-3:最坏情况

要以算法的最坏情况来评价他

01-b-4:理想模型

实验统计会有众多影响因素导致无法准确评价算法优劣

 引入图灵机模型

01-b-5:图灵机

tape:划分为许多小格初始默认为#

alphabet:字符种类有限

head:对准一格,可移动

state:小格状态反转等改变

transition function:(q,c;d,l/r,p) h停机

 01-b-6:图灵机实例

 非负整数加一

(<,1,0,L,<)

 (<,0,1,R,>)

(>,0,0,R,>)

(>,#,#,L,H)

复位是必要的,是规范,接口

01-b-7:RAM模型

》寄存器顺序编号,总数无限

》基本操作

 》》R[i] <- c             R[i] <- R[R[j]]        R[i] <-R[j] + R[k]

         R[i] <- R[j]         R[R[j]] <- R[i]        R[i] <- R[j] -R[k]

         IF R[i] = 0 GOTO 1   IF R[i] >0 GOTO 1    GOTO 1 STOP

简化 抽象 从实际问题脱离

把时间转化为基本操作的次数

01-b-8:RAM 实例

问题:向下取整的整除操作

算法:反复地从R[0] = 1 + c 中间去r【1】 = d

在统计下溢前,所作减法的次数x

0    r[3] <- 1

1    r[0] <- r[0] + r[3]

2     r[0] <- r[0] - r[1]

3     r[2] <- r[2] + r[3]

4     if r[0] > 0 goto 2

5      r[0] <- r[2] - r[3]

6     stop

尺子有了,怎么用呢?

 c 大O记号

01 -c -1:增长速度

 01-c-2:大O记号

 

01-c-3:高效解

》常数复杂度     

O(1)

不含转向(循环、调用、递归) 必须顺序执行  

》对数多项式复杂度

O(logn)

都可以转换为常系数,忽略

 01-c-5:难解

指数

2^n

从O(n^c)到O(2^n)是有效解到无效解的分水岭

 01-c-6:2-SUBSET

典型的NP-complete

不存在多项式算法,只能是2^n

 01-c-7: 增长速度

多项式?

复杂度?

第一章 绪论(下)

(D)算法分析

01-d-1:算法分析

去粗存精的估算

正确性(不变性x单调性)+ 复杂度

迭代:级数求和

递归:递归跟踪+地推方程

猜测+验证

01-d-2:级数

算术级数:与末项平方同阶

T(n)=1+2+3+……+n=n(n+1)/2=O(n^2)

啊啊啊 概率论 啊  高数(级数)  啊

具体数学

 01-d-3:循环

01-d-4 : 实例:非极端元素+起泡排序

01-d-5:正确性的证明

不变性

单调性

正确性

01-d-6:封底估算-1

当量  周长

01-d-7: 封底估算-2

 算法改进威力巨大

 (e)迭代与递归

01-e-1:迭代与递归

螺旋上升

分而治之

01-e-2 : 减而治之

 01-e-3:递归跟踪

 

 01-e-4:递推方程

01-e-5:数组倒置

01-e-6:分而治之

01-e-7:二分递归:数组求和

01-e-8:二分递归:MAX2

原文地址:https://www.cnblogs.com/yueruifeng/p/9951169.html