学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图

视频链接:
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第1张图片

数据结构与算法基础(青岛大学-王卓)–第六章图

本章知识框架:
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第2张图片

目录:

      • 1.图的定义和基本术语
      • 2.案例引入
      • 3.图的类型定义(抽象数据类型)
      • 4.图的存储结构
      • 5.图的遍历
      • 6.图的应用

1.图的定义和基本术语

  • 图表示多对多关系
  • 图是由顶点(V集合)和边(E集合)构成,G=(V,E)
  • 无向图:每条边都是无方向的
  • 有向图:每条边都是有方向的

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第3张图片
上图G1的顶点V集合={V1,V2,V3,V4};E集合={V1->V3,V1->V2,V3->V4,V4->V5}
上图G2的顶点V集合={V1,V2,V3,V4};E集合={E1,E2,E3,E4,E5,E6,E7}
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第4张图片

  • 完全图:任意二个点都有一条边相连

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第5张图片

  • 稀疏图,稠密图,网,邻接,关联(依附)

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第6张图片
弧:有向图中的边(为了区分有向图和无向图的边)
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第7张图片
稀疏图(e表示边,n表示顶点的数目):
在这里插入图片描述
稠密图:
(e>=nlogn)

网:边/弧带权值
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第8张图片
邻接:
(V1,V2)表示V1,V2互为邻接点
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第9张图片
V1邻接到V2或V2邻接于V1
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第10张图片

  • 有向图和无向图的度

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第11张图片
无向图V0的度为2(红色边的数量):
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第12张图片
有向图V0的入度为1:
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第13张图片
有向图V0的出度为2:
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第14张图片

  • 有向树:在有向图中仅有一个顶点的入度为0其余顶点的入度为1的图

在这里插入图片描述

  • 路径,路径长度,回路(环),简单路径,简单回路(简单环)

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第15张图片

  • 连通图

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第16张图片
无向图的连通图:
下图连通图:V0可以去到任意顶点V1,V2,V3,V4,同理V1,V2,V3,V4也可以
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第17张图片
下图非连通图:V0,V1,V2,V3无法去到V4,V5同理V4,V5无法去到V0~V3
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第18张图片
有向图的连通图:
下图强连通图:V0可以去到任意顶点V1,V2,V3,同理V1,V2,V3也可以
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第19张图片
下图非强连通图:V1无法去到V0,V2,V3
在这里插入图片描述

  • 权与网

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第20张图片
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第21张图片

  • 子图

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第22张图片

  • 无向图连通分量

G1,G2为G的连通子图并且都为极大连通子图(不管是G2或G1的顶点只要加入另外一个子图就会不在连通),G1,G2也称为G的连通分量
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第23张图片

  • 有向图强连通分量

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第24张图片
下图是一个非强连通图(V1无法到达V0,V2,V3),将V1去掉看成一个子图,这时候V1和(V0,V2,V3)分别为G的强连通分量
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第25张图片

  • 极小连通子图,生成树,生成森林

极小连通子图:该子图是G的连通子图,在该子图中删除任何一条边子图不再连通
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第26张图片
下图就是一个极小连通子图,删除任意一条边就不再连通
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第27张图片
连通图G1的生成树:包含G1中所有顶点的极小连通子图
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第28张图片

2.案例引入

  • 六度空间理论
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第29张图片
  • 六度空间理论的验证
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第30张图片

3.图的类型定义(抽象数据类型)

  • 属性

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第31张图片

  • 操作

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第32张图片
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第33张图片

4.图的存储结构

  • 顺序存储结构,图是没有顺序存储结构的,但是可以通过二维数组来表示元素之间的关系,这种方式称为数组表示法(邻接矩阵)
  • 链式存储结构,链式存储结构的前驱和后驱不知道要定义多少(图是多对多关系)所以无法使用多重链表,但是可以通过邻接表,邻接多重表十字链表来表示

数组表示法(邻接矩阵)
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第34张图片

  • 无向图的邻接矩阵表示法

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第35张图片

  • 有向图的邻接矩阵表示法
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第36张图片
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第37张图片

  • 网(即有全图)的邻接矩阵表示法
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第38张图片

  • 邻接矩阵利与弊
    利:学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第39张图片
    弊:
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第40张图片
    邻接表表示法(链式)
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第41张图片
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第42张图片

  • 无向图
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第43张图片

  • 有向图
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第44张图片

邻接表(指针域指向出度方向接收顶点)
V1对应上图的V1->V3(数组下标为2),V1->V2(数组下标为1)
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第45张图片

特点:
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第46张图片
逆邻接表(指针域指向入度方向发出顶点)
V1对应上图的V4->V1(数组下标为3)
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第47张图片
特点:
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第48张图片

  • 邻接表的特点

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第49张图片

  • 邻接矩阵与邻接表表示法的关系

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第50张图片
在这里插入图片描述
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第51张图片

  • 邻接表中存在的问题

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第52张图片
十字链表

  • 什么是十字链表

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第53张图片

  • 十字链表结构

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第54张图片

邻接多重表
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第55张图片
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第56张图片
上图V1指向V4和V2,(V1,V4)和(V1,V2)
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第57张图片

5.图的遍历

  • 什么是图的遍历
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第58张图片
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第59张图片
    如何避免重复访问
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第60张图片

  • 图的遍历算法
    深度优先遍历(DFS)
    广度优先搜索( BFS)

深度优先遍历(DFS)
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第61张图片

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第62张图片
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第63张图片
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第64张图片

  • 邻接矩阵表示的无向图深度遍历实现
    辅助数组用来避免重复访问
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第65张图片
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第66张图片

  • 非连通图的遍历
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第67张图片

  • 深度优先遍历(DFS)效率分析
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第68张图片
    广度优先搜索( BFS)
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第69张图片
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第70张图片

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第71张图片

  • 非连通图的广度遍历
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第72张图片
  • 实现(通过队列实现)
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第73张图片
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第74张图片
  • BFS算法效率分析
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第75张图片
  • DFS并BFS算法效率比较
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第76张图片

6.图的应用

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第77张图片

最小生成树

  • 什么是最小生成树

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第78张图片

  • 最小生成树的作用
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第79张图片
  • 构造最小生成树
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第80张图片
  • MST
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第81张图片
  • 构造最小生成树方法一: 普里姆(Prim)算法
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第82张图片
  • 构造最小生成树方法二:克鲁斯卡尔(Kruskal)算法。
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第83张图片
  • 两种算法比较
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第84张图片

最短路径

  • 最短路径
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第85张图片

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第86张图片

  • 问题抽象

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第87张图片

  • 第一类问题:两点间最短路径

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第88张图片

  • 第二类问题某源点到其他各点最短路径
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第89张图片
  • 针对上述二个问题的算法

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第90张图片

  • 艾兹格.W:迪杰斯特拉(Edsger Wybe Dijkstra)
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第91张图片
  • Dijkstra算法

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第92张图片
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第93张图片
在这里插入图片描述
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第94张图片

  • 问题二的解决办法
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第95张图片
  • Floyd算法
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第96张图片
    拓扑排序
  • 有向无环图

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第97张图片

  • 有向无环图及其应用

  • AOV网
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第98张图片
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第99张图片

  • AOE网

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第100张图片

  • 什么是拓扑排序

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第101张图片

  • 拓扑排序例子

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第102张图片

  • 拓扑排序的方法
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第103张图片
  • 拓扑排序的一一个重要应用
    学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第104张图片

关键路径
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第105张图片
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第106张图片

  • 关键路径

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第107张图片
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第108张图片

  • 对于AOE网,需要关心的二个问题

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第109张图片

  • 通过4个描述量确定关键路径

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第110张图片

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第111张图片
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第112张图片

学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第113张图片
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第114张图片
学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图_第115张图片

你可能感兴趣的:(数据结构与算法,数据结构,算法,图,数据结构图)