数据结构9-图

本文介绍了图的基本概念,包括无向图、有向图、完全图和稀疏图,以及顶点的度、路径、回路等。深入探讨了图的存储结构,如邻接矩阵和邻接表,并分析了它们在深度优先搜索(DFS)和广度优先搜索(BFS)中的效率。此外,还讨论了图在实际问题中的应用,如最小生成树、最短路径问题,以及拓扑排序和关键路径分析。这些概念在解决网络优化和路径选择问题中起到重要作用。
摘要由CSDN通过智能技术生成

图形结构——多个对多个

图:G=(V,E)
V:顶点(数据元素)的有穷非空集合;
E:边的有穷集合。

无向图:每条边都是无方向的
有向图:每条边都是有方向的

完全图:任意两个点都有一条边相连
在这里插入图片描述
稀疏图:有很少边或弧的图(e<nlogn)。
稠密图:有较多边或弧的图。
网:边/弧带权的图。
邻接:有边/弧相连的两个顶点之间的关系。
存在(Vi,v;),则称v;和V;互为邻接点;
存在<Vi,Vi>,则称v;邻接到vj,V;邻接于Vi
关联(依附):边/弧与顶点之间的关系。
存在(Vi,Vi)/<Vi,Vi>,则称该边/弧关联于v;和Vi

顶点的度:与该顶点相关联的边的数目,记为TD(v)
在有向图中,顶点的度等于该顶点的入度与出度之和。
顶点v的入度是以v为终点的有向边的条数,记作ID(v)
顶点v的出度是以v为始点的有向边的条数,记作OD(v)
在这里插入图片描述

路径:接续的边构成的顶点序列。
路径长度:路径上边或弧的数目/权值之和。
回路(环):第一个顶点和最后一个顶点相同的路径。
简单路径:除路径起点和终点可以相同外,其余顶点均不相同的路径。
简单回路(简单环):除路径起点和终点相同外,其余顶点均不相同的路径。

在这里插入图片描述

连通图(强连通图)
在无(有)向图G=(V,{E})中,若对任何两个顶点v、u
都存在从v到u的路径,则称G是连通图(强连通图)。

在这里插入图片描述

权:
图中边或弧所具有的相关数称为权。表明从一个顶点到另一个顶点的距离或耗费。
网:
带权的图称为网。
子图
设有两个图G=(V,(E)、G1=(V1,(E1),若V1cV,E1CE,则称G1是G的子图。
在这里插入图片描述
连通分量(强连通分量):
无向图G的极大连通子图称为G的连通分量。
极大连通子图意思是:该子图是G连通子图,将G的任何不在该子图中的顶点加入,子图不再连通。
在这里插入图片描述
极小连通子图:该子图是G的连通子图,在该子图中删除任何一条边子图不再连通。边的数目最少删除一条边不再连通
生成树:包含无向图G所有顶点的极小连通子图。
生成森林:对非连通图,由各个连通分量的生成树的集合。
在这里插入图片描述

图的抽象类型定义

在这里插入图片描述
在这里插入图片描述

图的存储结构

在这里插入图片描述

邻接矩阵(数组)表示法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
邻接矩阵的存储表示:用两个数组分别存储顶点表和邻接矩阵
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
特点:
在这里插入图片描述
在这里插入图片描述

邻接表(链式)表示法

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

特点:
在这里插入图片描述
** 邻接矩阵与邻接表表示法的关系**

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图的遍历

  • 遍历定义:
    从已给的连通图中某一顶点出发,沿着一些边访遍图中所有的顶点,且使每个顶点仅被访问一次,就叫做图的遍历,它是图的基本运算。
  • 遍历实质:找每个顶点的邻接点的过程。有路才能到达
  • 图的特点:
    图中可能存在回路,且图的任一顶点都可能与其它顶点相通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过的顶点。
  • 怎样避免重复访问?(计算机是模拟现实世界,生活中你会怎么避免重复访问过了就做个标记)
    解决思路:设置辅助数组visited[n],用来标记每个被访问过的顶点
    ·初始状态visited门为0
    ·顶点i被访问,改visited门为1,防止被多次访问
    图常用的遍历:
深度优先搜索(Depth_First Search——DFS)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • DFS算法效率分析
    用邻接矩阵来表示图,遍历图中每一个顶点都要从头扫描该顶点所在行,时间复杂度为O(m2)。
    用邻接表来表示图,虽然有2e个表结点,但只需扫描e个结点即可
    完成遍历,加上访问个头结点的时间,时间复杂度为O(n+e)。
  • 结论:
    ·稠密图适于在邻接矩阵上进行深度遍历;
    ·稀疏图适于在邻接表上进行深度遍历。
广度优先搜索(Breadth_Frist Search——BFS)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图的应用

最小生成树

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最小生成树可能不唯一
在这里插入图片描述


最短路径

在这里插入图片描述

  • 问题抽象:在有向网中A点(源点)到达B点(终点)的多条路径中,寻找一条各边权值之和最小的路径,即最短路径。

  • 最短路径与最小生成树不同,路径上不一定包含n个顶点,也不一定包含n-1条边。

  • 单源最短路径–迪杰斯特拉在这里插入图片描述

  • 所有定点间最短路径----弗罗伊得在这里插入图片描述

  1. 迪杰斯特拉
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 弗洛伊德算法
    算法思想:
    · 逐个顶点试探
    · 从v;到v的所有可能存在的路径中
    · 选出一条长度最短的路径
    在这里插入图片描述

拓扑排序和关键路径

针对有向无环图:无环的有向图,简称DAG图(Directed Acycline Graph)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 拓扑排序
    在AOV网没有回路的前提下,我们将全部活动排列成一个线性序列,使得若AOV网中有弧<i,j>存在,则在这个序列中,i一定排在j的前面,具有这种性质的线性序列称为拓扑有序序列,相应的拓扑有序排序的算法称为拓扑排序。
    在这里插入图片描述
    在这里插入图片描述

  2. 关键路径
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值