数据结构之图的基本概念

一、图的定义

顶点(Vertex):在图中,数据元素被称为顶点。图是不允许没有顶点的(有穷非空性)。

边(Edge):顶点之间的连接关系用边来表示。边可以是无向的(无向图),也可以是有向的(有向图)。

二、图的分类

无向图(Undirected Graph)

定义:图中任意两个顶点之间的边都是无向边,即没有方向的边。

无向完全图:如果无向图中任意两个顶点之间都存在边,则称该图为无向完全图。含有n个顶点的无向完全图有n(n-1)/2条边。

连通图:如果无向图中任意两个顶点都是连通的(即存在路径),则称该图为连通图。

有向图(Directed Graph)

定义:图中任意两个顶点之间的边都是有向边,即有方向的边。

有向完全图:如果有向图中任意两个顶点之间都存在方向互为相反的两条边,则称该图为有向完全图。n个顶点的有向完全图含有n*(n-1)条边。

强连通图:如果有向图中任意两个顶点vi、vj(vi≠vj),从vi到vj和从vj到vi都存在路径,则称该图为强连通图。

稀疏图与稠密图

稀疏图:边数较少的图。假设一个图的顶点数为n,如果边数小于nlogn,则该图为稀疏图。

稠密图:边数较多的图。如果边数大于nlogn,则该图为稠密图。

有环图与无环图

有环图:图中存在至少一个环(即至少有一个顶点序列,序列的第一个顶点和最后一个顶点相同,且序列中除了第一个和最后一个顶点外,其余顶点均不重复)。

无环图:图中不存在环的图。特别地,有向无环图(DAG)在计算机科学中有广泛应用。

加权图与无权图

加权图:图中的边带有权重的图。权重可以表示距离、耗费等。

无权图:图中的边不带权重的图,也称为等权图。

三、图的存储结构

邻接矩阵(Adjacency Matrix)

使用两个数组来表示图。一个一维数组存储顶点信息,一个二维数组(邻接矩阵)存储边的信息。对于无向图,邻接矩阵是对称的;对于有向图,邻接矩阵不一定对称。

邻接表(Adjacency List)

由表头节点和表节点两部分组成。每个顶点对应一个表头节点,表头节点存储顶点的信息,并通过指针域指向邻接节点链表。邻接表可以有效地减少空间浪费,特别适用于稀疏图的存储。

四、图的基本术语

度(Degree):在无向图中,与顶点相关联的边的数目称为该顶点的度。在有向图中,分为入度(指向该顶点的边的数目)和出度(从该顶点出发的边的数目)。

路径(Path):顶点序列的边序列,表示从一个顶点到另一个顶点的路径。

简单路径:没有重复顶点的路径。

环(Cycle):包含相同顶点两次或两次以上的路径。

相关推荐
不会敲代码113 分钟前
我花了三天时间,终于把 Cookie、XSS、CSRF 和浏览器存储给整明白了
javascript·面试
swipe21 分钟前
Mem0 x Agent 实战系列:分层记忆 + 三路召回,搭建真正可用的长期记忆层
前端·javascript·面试
Lee川29 分钟前
Event Loop 面试通关:从原理到口述再到实战
前端·面试
happymaker06261 小时前
LeetCodeHot100——42.接雨水
算法
kyriewen1 小时前
手写 call、apply、bind:从原理到实现,附 3 个最容易忽略的边界情况
前端·javascript·面试
胡萝卜术1 小时前
从内存视角重新认识 JavaScript 数据类型:一份深度学习笔记
前端·javascript·面试
sensen_kiss1 小时前
CPT304 SoftwareEngineeringII 软件工程 2 Pt.8 软件测试 (Software Testing)(上)
学习·软件工程
力学与人工智能1 小时前
PPT分享 | 洛桑联邦理工学院魏震:深度几何学习在工业设计优化中的应用
学习·优化·工业设计·深度几何学习·洛桑联邦理工学院
Waay1 小时前
K8s ETCD 详解|备份恢复+静态Pod原理+kubectl查询底层流程(面试必考)
面试·kubernetes·etcd
阿正的梦工坊1 小时前
【Rust】07-错误处理:Option、Result 与 ? 运算符
开发语言·算法·rust