THU_数据结构_学习笔记(2)

数据结构,邓俊辉老师
平台——学堂在线 https://www.xuetangx.com/course/THU08091000384/5883586?channel=learn_title

计算模型

Turing Machine

Tape, Alphabet, Head, State, Transition Function
当前状态,当前字符;改写后字符,转向L或R,转入新状态;特定状态h,表示停机
图灵机实例:将二进制非负整数加一
必须复位,严格的标准,相互合作的准则,后续更多以接口形式存在

Random Access Machine

每个寄存器,由一个自然数唯一标识
基本功能,直接赋值,间接赋值:R[i] <- R[R[j]], 加减运算,绝对转向,STOP(对应图灵机中的h),条件转向语句
在这里插入图片描述
两者都是一般计算工具的简化和抽象

  • 可以独立于具体的平台,对算法的效率做出可信的比较与评判
  • 算法运行的时间转化为所需执行基本操作的次数来度量
  • 时间问题转化为次数的整体求和问题
  • 优点,不取决于CPU主频的快慢,更客观

RAM功能实例,向下取整的除法
执行过程记录为一行表,清晰的、客观的、没有歧义的
一个清晰的尺度
,对算法进行度量

+问题,“尺子”怎么用? 有哪些规则?哪些技巧?
定性和定量,达到一个适度这种,更迅速抓住DSA主要方面
引出,大O记号,至关重要

Mathematics is more in need of good notations than of new theorems.
- Alan Turing

+【总体思想】
好读书不求甚解
没有会意,便欣然忘食 - 陶渊明
即,要考虑长远和主流

+【问题】,足够大的规模,成本总体增长趋势?
Asymptotic analysis: 当n大于大于2后,对于规模为n输入,算法
需执行的基本操作次数?T(n)
需占用的存储单元数?S(n)

大O记号,Paul Bachmann, 1894

大O记号

简洁,反映前者的增长趋势
+重要处理手法,常系数可以忽略;低次项可忽略
大O记号给出了 T(n)的upper bound(当n足够大时)
在这里插入图片描述

Big Omega 和 theta

其他记号,Big Omega,构成原来复杂度函数的下界
theta,上述悲观和乐观的两者组合
多采用悲观角度,即使用大O记号
在这里插入图片描述

线性复杂度

规模为n的问题,恰好就是由n,一阶的来度量
编程习题主要覆盖的范围,从O(n)到O(n^2),tractable
习惯于估算,详见老师视频

指数复杂度

指数复杂度,intractable
指数算法容易实现,设计出多项式复杂度算法却极其不易

+【问题描述】
给定n个positive int,总和为2m
是否有子集T,满足总和为m

  • 美国大选的实例问题 给定一张表,若干个州,各自的选举人票,会不会出现恰好一半对一半选举人票的情况?
  • 2-Subset is NP-complete,不存在可在多项式内时间内回答此问题的算法
    在这里插入图片描述
    +【重点】
    关注指数复杂度2^n的增长趋势
    回到前面提到的考虑长远和主流
    +【自己思考】为什么n, sqrt(n), logn时间复杂度在算法中就是可以被接受的,一样,考虑长远趋势

如何运用工具对DSA进行分析

去粗存精式的估算

He calculated just as men breathe, as eagles sustain themselves in the air.—Francois Arago夸奖欧拉

+【两个主要任务】
正确性+复杂度,其中正确性包括不变性和单调性
不仅指平铺直叙的代码段,
还包括分支转向 goto,迭代循环,调用和递归

具体方法

迭代:级数求和的能力
递归:递归跟踪(直观)+ 递推方程(抽象)
猜测+验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值