数据结构与算法学习笔记-图

声明:本博客仅为本人学习途中做的笔记 采自青岛大学王卓老师的视频教学 主要内容为算法思路,具体代码实现还需修改后才能运行,望各位看官多多包涵,您的点赞与评论是对我最大的肯定!


1.图的定义和基本术语

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

无向图:每条边都是无方向的
有向图:每条边都是有方向的
完全图:任意两个点都有一条边相连
稀疏图:有很少边或弧的图(e<nlogn)
稠密图:有较多边或弧的图
网:边/弧带权的图
邻接:有边/弧相连的两个顶点之间的联系
存在(vi,vj),则称vi和vj互为邻接点
存在<vi,vj>,则称vi邻接到vj,vj邻接于vi
关联(依附):边/弧与顶点之间的关系
存在(vi,vj)/<vi,vj>,则称该边/弧关联于vi和vj
顶点的度:与该顶点相关联的边的数目,记为TD(v)
在有向图中,顶点的度等于该顶点的入度与出度之和。
顶点v的入度是以v为终点的有向边的条数,记作ID(v)
顶点v的出度是以v为始点的有向边的条数,记作OD(v)

在这里插入图片描述

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

在这里插入图片描述

有向图中,若任意两个顶点 Vi 和 Vj,满足从 Vi 到 Vj 以及从 Vj 到 Vi 都连通,也就是都含有至少一条通路,则称此有向图为强连通图。

权与网:图中边或弧所具有的相关数称为权。表明从一个顶点到另一个顶点的距离或耗费。 带权的图称为网。
子图:设有两个图G=(V,{E})、G1= (V1,{E1}),若V1 ∈ \in V,E1 ∈ \in E,则称G1是G的子图。
在这里插入图片描述

连通分量(强连通分量):无向图G的极大连通子图称为G的连通分量。
极大连通子图意思是:该子图是G连通子图,将G的 任何不在该子图中的顶点加入,子图不再连通。
在这里插入图片描述在这里插入图片描述
极小连通子图:该子图是G的连通子图,在该子图中删除任何一条边,子图不再连通。
生成树:包含无向图G所有顶点的极小连通子图。(不存在回路)
生成森林:对非连通图,由各个连通分量的生成树的集合。

2.图的存储结构

图的逻辑结构:多对多
图没有顺序存储结构,但可以借二维数组来表示元素间的关系
数组表示法:邻接矩阵
链式存储结构:多重链表 --> 邻接表、邻接多重表、十字链表
重点介绍:邻接矩阵(数组)表示法、邻接表(链式)表示法

邻接矩阵

1、数组(邻接矩阵)表示法
建立一个顶点表(记录各个顶点信息)和一个邻接矩阵(表示各顶点间关系)
设图A=(V,E)有n个顶点,则
顶点表Vexs[n]

i 0 1 2 n-1
Vexs[i] v1 v2 v3 vn

图的邻接矩阵是一个二维数组A.arcs[n] [n],定义为:
A . a r c s [ i ] [ j ] = { 1 , 如 果 < i , j > ∈ E   或 者 ( i , j ) ∈ E 0 , 否 则 A.arcs [i][j]= \begin{cases} 1,\qquad\qquad如果<i,j>\in E \,或者(i,j)\in E\\ 0,\qquad\qquad否则 \end{cases} A.arcs[i][j]={ 1,<i,j>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值