IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构学习笔记6——图 -> 正文阅读

[数据结构与算法]数据结构学习笔记6——图

6.1 图的基本概念

基本元素G=(V,E)V(G)E(G)|V|>0|E|
度TD(v)入度ID出度OD
路径回路/环简单路径简单回路路径长度、距离
有向图衍生概念有向边/弧<v,w>弧尾v弧头wv邻接到w
无向图衍生概念无向边/边(v,w)w和v互为邻接点边(v,w)依附于w和v边(v,w)和w,v相关联
AOE网衍生概念开始顶点/源点结束顶点/汇点关键路径(路径长度最大)关键活动(关键路径上的活动)

图的分类:

不相交的概念1不相交的概念2衍生概念
有向图无向图
有向完全图(简单/无向)完全图
连通图(有向图)连通图、非连通图(都是无向图)
简单图多重图
稀疏图稠密图
连通分量=极大连通子图(最多)生成树=极小连通子图(最少)
生成子图(顶点数不变)
带权图/网边的权值
有向树
AOV网∈有向无环图DAG(可表示表达式)AOE网∈DAG拓扑排序

6.2 图的存储

邻接矩阵邻接表十字链表邻接多重表
顶点结点一维数组(可省略)顶点表:顺序存储顺序存储顺序存储
边结点二维数组边表/出边表:单链表弧结点:十字链表链表
优点易得到顶点的出度易求得顶点的出度和入度比邻接表更易判断两点间的关系
缺点占用空间大不易得到顶点的入度
适用范围无向图、有向图、带权图/网无向图、有向图有向图无向图
其他邻接矩阵A^n的元素=由顶点i到顶点j的长度为n的路径数目逆邻接表的优缺点与之相反所有依附于同一顶点的边串联在同一链表中;边结点跟边一一对应

6.3 图的遍历

广度优先搜索BFS深度优先搜索DFS
类似于树的遍历二叉树的层序遍历树的先序遍历
辅助队列递归工作栈
是否递归是(因为需往回退)
需辅助数组标记是否被访问过
原理——外循环外循环次数=子图个数同左
原理——内部——初始化内循环第一步:对外循环的当前顶点先访问再压入队列中访问当前顶点
原理——内部——循环当队列不空时:出队列——其邻接点依次访问并入队列遍历当前顶点的邻接点,重走“内部”函数
空间复杂度辅助队列→O(|V|)递归工作栈→O(|V|)
时间复杂度——邻接表每个顶点至少入队一次+搜每个点的邻接点时每个边至少访问一次=O(|V|)+O(|E|)同左
时间复杂度——邻接矩阵查找每个点的邻接点需O(|V|)→O(|V|^2)同左
应用生成广度优先生成树生成深度优先生成树/森林
应用求非带权图的单源最短路径d(v_0,v_i):令v_0为BFS外循环的第一个结点

6.4 图的应用

最小生成树MST——Prim最小生成树MST——Kruskal最短路径——Dijkstra最短路径——Floyd拓扑排序
使用范围非带权图、带权图(MST唯一)同左带权图:单源最短路径带权图:每对顶点间AOV网
类似方法DijkstraPrim
原理——初始化任选一个顶点每个顶点自成一个连通分量把源点放入集合S,
dist[]初始值dist[0]=arcs[0][i]

邻接矩阵

将没前驱的顶点入栈,选一个出栈
原理——循环添加最小权值且不构成回路的边同左选出最小权边并将顶点v_j放入S,
修改V-S中的每个顶点v_k:若dist[k]>dist[j]+arcs[j][k]则令左=右
依次把各个顶点作为中介顶点,即依次令k=0,1…n,并修改矩阵元素值:

?
将与其相连的点入度-1,并将入度变为0的点入栈
时间复杂度O(|V|^2)用堆存放边故每次选最小权边需O(log|E|)*用并查集描述生成树=O(|E|log|E|)O(|V|^2)O(|V|^3)删除顶点+删除相应的边=O(|V|+|E|)
适用于边稠密的图边稀疏而顶点较多的图权值为正不允许带负权的边成回路邻接矩阵是三角矩阵时
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 10:05:03  更:2021-08-06 10:07:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 8:25:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码