数据结构——图的基础

一、图的基础

1.图的引出

基础阶段:线性结构

进阶阶段:树形结构

图形结构

数据与数据的关系:

  • 集合:所有的元素除了同属一个集合之外,没有其他的关系
  • 线性:所以元素通过一根线串起来,元素与元素之间只有前后关系,也就是1对1的关系
  • 树形:所有的元素都是一层一层的,每一层的节点可以关联下一层的若干个节点,也就是1对多的关系
  • 图形:所有的元素之间可以任意关联,也就是多对多的关系

2.图的定义:

  • 图graph是由两个集合组成的,分别是顶点集合vertex和边edge记为G=(V,E)

顶点集合V={A, B, C, D,C ,E}
边集合={(A,B),(A,C),(A,D),(B,C),(B,E),(C,D)}

注意:顶点集是不能为空的

可以存在空表,空树,但是图必须至少一个顶点(可以没有边)

3.图的分类

  • 按照图的边是否存在方向来分:有向图/无向图
  • 按照顶点之间是否连通来分:连通图/非连通图
  • 按照边是否有权重来分:有权图/无权图

4.图的常用术语:

从头到尾说的都是简单图:简单图:不考虑重边和自环

注意:完全图不考虑重边和自环、

重边:重复的边

自环:自己指向自己的边

完全图:

图是可以只有顶点没有边 的,即使是有向图和无向图,边的个数都可以为0,图的边数最多时候,称之为完全图

有向完全图:

n个顶点的有向图,最多可以有n(n-1)个边

n个顶点的有向完全图的边数是n(n-1)

2.无向完全图

n个顶点的无向图,最多可以有n(n-1)/2个边

n个顶点的无向完全图的边数是n(n-1)/2

稀疏图/稠密图

如果一个图的边数特别多就是稠密图,反之就是稀疏图,稠密和稀疏限定没有明确的边界,但是在一些其他书上有限定:

例如:e:边数 n:顶点数

e<nlongn则认为是稀疏图

权和网

不管是无向图还是有向图,边都是可以带权值,这个权值在不同的场景下有不同的定义

例如:A->:88-则可以看做A->B花费88元,或者花费88分钟,或者距离88公里

有权图在很多教材里面也称之为网

领接

度

路径

回路:也是一条路径,出发顶点和目的顶点是同一个顶点

顶点不重复的路径叫做简单路径

子图

子图就是图的一部分

连通

连通图:

无向图中,一个顶点到另外一个顶点有路径,则这两个顶点连通,那如果任意两个顶点之间都连通,则称之为连通图

N个顶点的连通图至少需要N-1条边

N个顶点的连通图边数>=n-1

但是如果边数>=n-1,他不一定是连通图

非连通图:

把图中每一个单独连接在一起的子图称为连通分量

教材定义:连通分量==图的极大连通子图

连通分量,都是图的子图

连通分量,自身都是连通的

连通分量,这个"极大"指的是这个连通分量里面的顶点数量和边的数量已经达到饱和了,不能在添加了(换句话说:在额外添加一个新的顶点进来就不连通了)

极大连通图:说的是极大不是最大

最大有唯一的感觉,但是极大就没有

如果本身是一个连通图,如果要去找连通分量,则只有一个就是他自身

如果本身是一个非连通图,则可以根据不连通的切成多份,分成很多独立的个数,所以会存在多个连通分量

有向图的强连通图:

有向图中,任意两个顶点都互相有路径,则可以称之为强连通图

有向图的非强连通图:

有向图的非强连通图,也可以切开:

强连通分量==有向图中的极大连通子图

  1. 强连通分量,是原本的子图
  2. 强连通分量,本身是强连通分量
  3. 无法再扩展新的节点

生成树

生成树==连通图中包含所有顶点的极小连通子图

换句话说:用最少的边把所有的顶点连接起来

其生成树有:

生成树不唯一

极小:再少一条边就不连通了,反之再多一条边就形成环了

相关推荐
Severus_black2 小时前
【C++初阶】list使用及相关实现,思路顺滑流畅!
c语言·数据结构·c++·stl·list
二本咕咕-机械转码4 小时前
FreeRTOS深入解析(八)IPC机制之FromISR详解
数据结构·单片机·链表
1-1=06 小时前
C# 数据结构和特殊类型
数据结构·c#·.net·.netcore
希和20276 小时前
C语言程序设计题|有序数组插入数字冒泡排序
c语言·数据结构·算法
布莱克60517 小时前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map
D e re k ZH20 小时前
C++ 系统学习手记:从语法细节到工程实践
开发语言·数据结构·c++·算法
zh_xuan1 天前
LeeCode 496. 下一个更大元素I
数据结构·算法·栈·单调栈
白杨尚青1 天前
C++进阶篇(五):红黑树——四条规则、三种插入情况与旋转变色
开发语言·数据结构·c++·stl·红黑树·平衡二叉树
likexuec2 天前
数据结构(2)
数据结构