数据结构与算法学习笔记(1)

这篇博客记录了作者对数据结构与算法的学习,特别是问题求解过程,如农夫狼羊过河问题,介绍了数据抽象、数据结构(如顺序结构、链接、索引结构、散列结构)和抽象数据类型的概念。同时,讨论了算法的特性、分类(如穷举法、回溯、递归分治、贪心法、动态规划),并分析了算法的效率与度量方法,包括大O表示法和大Ω表示法。
摘要由CSDN通过智能技术生成

本篇是笔者对

https://www.icourse163.org/course/PKU-1002534001

该视频的记录和一些个人理解

1.2问题求解:

问题求解过程举例-农夫狼羊过河问题

(1)问题抽象:

①只有人能过河

②狼和羊、羊和菜不能在没有人时共处

③船只有两个位置

(2)数据抽象:图模型

不合理状态:狼羊、人菜、羊菜、人狼、狼羊菜、人

10种合理的原岸存在状态(包括“空”)及关联关系

PS:原案状态中人羊狼菜可以通过“人羊一起走”这种方式变成狼菜这种原岸状态,就称这两种状态关联(图中线段连接)

(3)数据结构

相邻矩阵

PS:根据前面的结论,共有10中合理的状态,我们可以构建一个10*10的矩阵,在这个矩阵中行列两种状态关联的元素标记为1就得到如下矩阵

问题转化为“对上图求一个起始状态到终止状态的最短可达路径”

(4)算法抽象

①求最短可达路径(最优解)

②一般通过Dijkstra算法求解

注:在上述问题求解过程中如果从不同角度去抽象将会得到不同的数据模型,也就需要不同的算法模型去求解

小节:这一节主要讲了问题求解的一般方法,让我们对算法设计的过程大开眼界

 

1.3数据结构与抽象数据类型

(1)数据结构三大组成部分:

①逻辑结构

②存储结构

顺序结构:例如数组等线性结构。许多非顺序逻辑结构可以通过线性化变为顺序结构

链接:指针的地址指向关系。比如链表,一个变量同时包含数据和指向下个节点的指

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值