【数据结构】3.图、最小生成树

本文深入探讨图的基本概念,包括顶点、边和表示方法,如邻接矩阵和邻接表。接着,介绍了图的遍历,如连通性和广度优先、深度优先搜索。然后,重点讨论了图中最短路径问题,特别是Dijkstra算法。最后,阐述了最小生成树的原理,涵盖Prim和Kruskal算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、图的基本概念

1.什么是图

图表示一种多对多的关系。图包括:
1)一组顶点:通常用 V (Vertex) 表示顶点集合
2)一组边:通常用 E (Edge) 表示边的集合
3)边是顶点对:(v, w) ∈ \in E ,其中 v, w ∈ \in V ;有向边 < v, w> 表示从v指向w的边(单行线);不考虑重边和自回路。

2.数据类型描述

数据对象集:G(V,E)由一个非空的有限顶点集合V和一个有限边集合E组成。

3.图的表示

1)邻接矩阵
在这里插入图片描述
2)邻接表
邻接表:G[N]为指针数组,对应矩阵每行一个链表,只存非0元素。
在这里插入图片描述
3)两种的比较:
邻接矩阵:
1)方便检查任意一对顶点间是否存在边
2)方便找任一顶点的所有“邻接点”(有边直接相连的顶点)
3)方便计算任一顶点的“度”(从该点发出的边数为“出度”,指向该点的边数为“入度”)
但是对于稀疏的图,十分浪费空间和时间。
邻接表:
1)方便找任一顶点的所有“邻接点”
2)节约稀疏图的空间:N个头指针 + 2E个结点(每个结点至少2个域)
3)对于无向图方便计算度,但是对于有向图,只方便计算出度,如果需要计算入度,需要一个逆邻接表。
4)不方便查找任意两顶点之间是否有边相连
对于稀疏的图,方便,对于稠密的图不如邻接矩阵省空间;而且如果点和边有权值,则需要更多的存储空间,但是邻接矩阵就可以直接修改矩阵中的值。

二、图的遍历

1.图连通的概念

连通:如果从V到W存在一条(无向)路径,则称V和W是连通的
路径:V到W的路径是一系列顶点{V, v1, v2, …, vn, W}的集合,其中任一对相邻的顶点间都有图
中的边。路径的长度是路径中的边数(如果带权,则是所有边的权重和)。如果V到W之间的所
有顶点都不同,则称简单路径
回路:起点等于终点的路径
连通图:图中任意两顶点均连通

连通分量:无向图的极大连通子图:两个条件:
极大顶点数:再加1个顶点就不连通了
极大边数:包含子图中所有顶点相连的所有边

强连通:有向图中顶点V和W之间存在双向路径,则称V和W是强连通的
强连通图:有向图中任意两顶点均强连通
强连通分量:有向图的极大强连通子图

2.广度优先、深度优先搜索

问题求解:状态空间图和盲目搜索

三、图中最短路径问题

1.概念

在网络中,求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径。
这条路径就是两点之间的最短路径(Shortest Path):
第一个顶点为源点(Source)
最后一个顶点为终点(Destination)

2.Dijkstra算法

对于无权图最短路径搜索的算法其实就是广度优先深度优先的形式,而对于有权图,最基本的算法就是Dijkstra算法。


2021.5.21

四、最小生成树

1.基本概念

2.Prim算法

3.Kruskal算法


2021.5.21

# 五、拓扑排序 拓扑序:如果图中从V到W有一条有向路径,则V一定排在W之前。满足此条件的顶点序列称为一个拓扑序,获得一个拓扑序的过程就是拓扑排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值