开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情
🔥 本文由 程序喵正在路上 原创,在稀土掘金首发!
💖 系列专栏:数据结构与算法
🌠 首发时间:2022年11月26日
🦋 欢迎关注🖱点赞👍收藏🌟留言🐾
🌟 一以贯之的努力 不得懈怠的人生
图的定义
图 由顶点集 和边集 组成,记为 ,其中 表示图 中顶点的有限非空集; 表示图 中顶点之间的关系(边)集合。若 ,则用 表示图 中顶点的个数,也称为图 的阶,, 用 表示图 中边的条数
注意:线性表可以是空表,树可以是空树,但图不可以是空图,即 一定是非空集,但 可以是空集
无向图、有向图
若 是无向边(简称边)的有限集合时,则图 为无向图。边是顶点的无序对,记为 或 ,因为 ,其中 是顶点。可以说顶点 和顶点 互为邻接点。边 依附于顶点 和 ,或者说边 和顶点 相关联
上图可以表示为
若 是有向边(也称弧)的有限集合时,则图 为有向图。弧是顶点的无序对,记为 ,其中 是顶点, 称为弧尾, 称为弧头, 称为从顶点 到顶点 的弧,也称为 邻接到 ,或 邻接自 。
上图可以表示为
简单图、多重图
简单图 —— 不存在重复边;不存在顶点到自身的边
多重图 —— 图 中某两个结点之间的边数多于一条,又允许顶点通过同一条边和自己关联,则 为多重图
简单图和多重图也有无向图和有向图之分
顶点的度、入度、出度
对于无向图:顶点 的度是指依附于该顶点的边的条数,记为
在具有 个顶点、 条边的无向图中,,即无向图的全部顶点的度的和等于边数的 倍
对于有向图:
- 入度是以顶点 为终点的有向边的数目,记为
- 出度是以顶点 为起点的有向边的数目,记为
- 顶点 的度等于其入度和出度之和,即
在具有 个顶点、 条边的有向图中,
顶点-顶点的关系描述
- 路径 —— 顶点 到顶点 之间的一条路径是指顶点序列
- 回路 —— 第一个顶点和最后一个顶点相同的路径称为回路或者环
- 简单路径 —— 在路径序列中,顶点不重复出现的路径称为简单路径
- 简单回路 —— 除第一个顶点和最后一个顶点外,其余顶点不重复出现的回路称为简单回路
- 路径长度 —— 路径上边的数目
- 点到点的距离 —— 从顶点 出发到顶点 的最短路径若存在,则此路径的长度称之为从 到 的距离;若从 到 根本不存在路径,则记该距离为无穷()
- 无向图中,若从顶点 到顶点 有路径存在,则称 和 是连通的
- 有向图中,若从顶点 到顶点 和从顶点 到顶点 之间都有路径,则称这两个顶点是强连通的
连通图、强连通图
若无向图 中任意两个顶点都是连通的,则称图 为连通图,否则称为非连通图
若有向图中任意一对顶点都是强连通的,则称此图为强连通图
对于 个顶点的无向图 :
- 若 是连通图,则最少有 条边
- 若 是非连通图,则最多有 条边
对于 个顶点的有向图 :
- 若 是强连通图,则最少有 条边(形成回路)
子图
设有两个图 和 ,若 是 的子集,且 是 的子集,则称 是 的子图
若有满足 的子图 ,则称其为 的生成子图,也就是比如说一个子图中有原图的所有点,但少了一些边,那么可以说这个子图是原图的生成子图
连通分量、强连通分量
无向图中的极大连通子图称为连通分量,其中,极大连通子图是指子图必须连通,且包含尽可能多的顶点和边
有向图中的极大强连通子图称为有向图的强连通分量,其中,极大强连通子图是指子图必须强连通,同时保留尽可能多的边
生成树
连通图的生成树是包含图中全部顶点的一个极小连通子图(边尽可能少,但要保持连通)
若图中顶点数为 ,则它的生成树有 条边。对生成树而言,若砍去它的一条边,则会变成非连通图,若加上一条边则会形成一个回路
生成森林
在非连通图中,每个连通分量的生成树构成了非连通图的生成森林
边的权、带权图/网
- 边的权 —— 在一个图中,每条边都可以标上具有某种含义的数值,该数值称为该边的权值
- 带权图/网 —— 边上带有权值的图称为带权图,也称为网
- 带权路径长度 —— 当图是带权图时,一条路径上所有边的权值之和,称为该路径的带权路径长度
几种特殊形态的图
-
无向完全图 —— 无向图中任意两个顶点之间都存在边
- 若无向图的顶点数 ,则
-
有向完全图 —— 有向图中任意两个顶点之间都存在方向相反的两条弧
- 若有向图的顶点数 ,则
-
边数很少的图称为稀疏图,反之称为稠密图,边数没有绝对的界限,一般来说 时,可以将 视为稀疏图
-
树 —— 不存在回路,且连通的无向图。对于 个顶点的树,必有 条边
-
个顶点的图,若 ,则一定有回路
-
有向树 —— 一个顶点的入度为 ,其余顶点的入度均为 的有向图,称为有向树,有向树不一定是强连通图