算法与数据结构基本知识.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


• 定义: • 特殊的形态:二叉树。 • 二叉树的三种普通遍历和一种特殊遍历
– 前序 – 中序 – 后序 – 层次
• 一些扩展问题:使用前序/后序和中序遍历 恢复树的结构

• 表达式与树
• 三种遍历的实现方法,一般二叉树的存储 结构 • 前序遍历的非递归实现 • 树作为一种存储结构
– 二叉排序树 – 平衡二叉树 – 旋转
Dijkstra
City 1 City 2 City 3 City 4 City 5 City 6
Dist
0
2
3
1
12
15
Visited
1
0
0
0
0
0
Dijkstra
City 1 City 2 City 3 City 4 City 5 City 6
Dist
0
2
3
1
8
10
Visited
1
0
0
1
0
0
Dijkstra
线性表
• 能够实现如下功能的结构:
– 维护一个列表。 – 可以插入节点,删除节点,查找节点
• 实现方法:
– 数组 – 链表
• 复杂度分析
一种特殊的链表实现方法
• 用巨型数组模拟内存 • 省去申请内存的步骤 • 省去使用指针的步骤
特殊的线性表
• 栈Stack
– 特点:先进后出
• 队列Queue
– 特点:先进先出
• 理想的平衡情况下,树作为存储结构,每 次查找、插入、删除的复杂度为O(logn)

• 图上的一些问题
– 遍历 – 最短路 – 最小生成树 – 最大流 – 匹配 – 关节点
最小生成树
最大流问题
二分图匹配
图的存储方法
• 邻接矩阵
– 注意有向图和无向图的存储 – 缺点:存储空间耗费为O(n^2),存储的点的数 目一般不超过3000个 – 遍历图时耗时
指针
type pint = ^integer; var a,b:integer; x,y:pint; procedure fun(a , b: pint); var k:integer; begin k:=a^; a^:=b^; b^:=k; end; begin a:=3; b:=6; x:=@a; y:=@b; fun(x,y); writeln(a,',',b); end.
Kruskal算法
Kruskal算法
最短路算法 Dijkstra's algห้องสมุดไป่ตู้rithm
• NOIP原题 • 有6个城市,任何两个城市之间都有一条道 路连接,6个城市两两之间的距离如下表所 示,则城市1到城市6的最短距离为 _____________。
最短路算法 Dijkstra's algorithm
Prim算法
原图,准备在此图上求最小生成树
Prim算法
顶点D被任意选为起始点。顶点A、B、E和F通过单条 边与D相连。A是距离D最近的顶点,因此将A及对应 边AD以高亮表示。
Prim算法
下一个顶点为距离D或A最近的顶点。B距D为9,距A为7, E为15,F为6。因此,F距D或A最近,因此将顶点F与相 应边DF以高亮表示。
控制语句
• Break语句 • Continue语句 • Exit函数或过程
看程序,写代码:
指针,NOIP原题
var a,b:integer; x,y:^integer; procedure fun(a,b:integer); var k:integer; begin k:=a; a:=b; b:=k; end; begin a:=3; b:=6; x:=@a; y:=@b; fun(x^,y^); writeln(a,',',b); end.
Prim算法
算法继续重复上面的步骤。距离A 为7的顶点B被高亮表示。
Prim算法
在当前情况下,可以在C、E与G间进行选择。C距B为8, E距B为7,G距F为11。E最近,因此将顶点E与相应边BE 高亮表示。
Prim算法
这里,可供选择的顶点只有C和G。C距E为5,G 据E为9,故选取C,并与边EC一同高亮表示。
City 1 City 2 City 3 City 4 City 5 City 6
Dist
0
2
3
1
5
10
Visited
1
1
0
1
0
0
Dijkstra
City 1 City 2 City 3 City 4 City 5 City 6
Dist
0
2
3
1
5
8
Visited
1
1
1
1
0
0
Dijkstra
City 1 City 2 City 3 City 4 City 5 City 6
Kruskal算法
The next-shortest arcs are AB and BE, both with length 7. AB is chosen arbitrarily, and is highlighted. The arc BD has been highlighted in red, because there already exists a path (in green) between B and D, so it would form a cycle (ABD) if it were chosen.
Dist
0
2
3
1
5
7
Visited
1
1
1
1
1
0
Dijkstra
City 1 City 2 City 3 City 4 City 5 City 6
Dist
0
2
3
1
5
7
Visited
1
1
1
1
1
1
图的遍历
• 遍历的意思就是按照一定的顺序,访问整 个图的所有顶点 • 深度遍历DFS • 广度遍历BFS
SECTION C.一些Pascal语言 的知识
Prim算法
顶点G是唯一剩下的顶点,它距F为11,距E为9,E 最近,故高亮表示G及相应边EG。
Prim算法
现在,所有顶点均已被选取,图中绿色部分即 为连通图的最小生成树。在此例中,最小生成 树的权值之和为39。
Kruskal算法
Kruskal算法
Kruskal算法
Kruskal算法
Kruskal算法
NOIP Course 3
By Peng Kejing @ SCAU-GIS
SECTION A. 算法与数据结构 基本知识
什么是数据结构
• 一种存在于计算机内存或文件中的数组组 织方法。 • 根据一定的功能抽象出来的。 • 仅存在于人的思维之中,是一种抽象的结 构。
• 人们研究这些抽象的结构如何在计算机之 上进行实现。
• 邻接表
– 使用数组模拟链表 – 可以应对10万个以上的点
最小生成树的算法
• Prim算法
– 一开始有一个顶点v0 – 每次找连接“未添加到最小生成树的顶点”与 “已添加到临时最小生成树的顶点”的最短边
• Kruskal算法*
– 对边进行排序(从小到大) – 按顺序选取边,每添加一条边,就会连接一个 新的节点 – 需要一个结构来判断某些点是否已经连在一起
相关文档
最新文档