当前位置: 首页 > news >正文

数据结构(8)

目录

一、图的基本概念

二、图的存储结构——非线性结构(m : n)

顺序存储结构

1、邻接矩阵表示法

2、网(即有权图)的邻接矩阵

3、比较


一、图的基本概念

1、若 n 个顶点的无向图有  \frac{n(n-1)}{2} 条边,称为无向完全图。

2、若 n 个顶点的有向图有  n(n-1) 条边,称为有向完全图。

3、稀疏图:边较少的图,边数 <<  n^{2} 。

4、稠密图:边很多的图。无向图中边数接近  \frac{n(n-1)}{2} ;有向图中边数接近 n(n-1)。

5、带权树:边上带权的图 <=> 网络 。

6、弧头和弧尾:有向边 (u,v) 称为弧,边的始点 u 叫弧尾,终点 v 叫弧头。在有向图中顶点 v 的度等于该顶点的入度与出度之和。

7、问:当有向图中仅1个顶点的入度为0,其余顶点的入度均为1,此时是何形状?

答:是树,而且是一棵有向树。

8、生成树:是一个极小连通子图,它必含有图中全部顶点,但只有 n-1 条边。

(1)如果在生成树上添加1条边,必定构成一个环。

(2)若图中有 n 个顶点,却少于 n-1 条边,必为非连通图。

9、生成森林:由若干棵有向树组成,含全部顶点,但只有足以构成若干棵不相交的有向树的弧。

路劲长度:

(1)非带权图的路径长度是指此路径上边的条数

(2)带权图的路径长度是指此路径上各边的权之和

简单路径:路径上各顶点 v_{1}v_{2}、......、v_{m} 均不相互重复

二、图的存储结构——非线性结构(m : n)

顺序存储结构

① 可用数组描述元素间的关系(多个顶点,无序可言)

② 图的顺序存储结构是指用数组(顺序表) 来存储图的顶点信息及顶点间的关系(边或弧),其核心是通过数组的下标或元素值描述顶点之间的邻接关系。与树的顺序存储不同,图的顶点之间没有固定的层次或父子关系(“无序可言”),因此需要专门的结构记录顶点间的连接状态。

1、邻接矩阵表示法

(1) 建立一个顶点表(记录各个顶点信息)和一个邻接矩阵(表示各个顶点之间关系)

(2) 邻接矩阵(Adjacency Matrix)是图的一种基本顺序存储方式,通过一个二维数组表示顶点间的邻接关系,适用于无向图或有向图(无权图)。

(3) 有关系填1,没关系填0

(4)核心定义

  • 设图有 n 个顶点,定义一个 n×n 的二维数组 A(称为邻接矩阵),其中:
    • A[i][j]=1:表示顶点 i 与顶点 j 之间存在一条边(无向图)或弧(有向图,从 i 到 j)。
    • A[i][j]=0:表示顶点 i 与顶点 j 之间不存在边或弧。
    • 对于无向图,邻接矩阵是对称矩阵(A[i][j]=A[j][i]);对于有向图,邻接矩阵不一定对称。

示例1:

a. 无向图的邻接矩阵是对称的

b. 顶点 i 的度=第 i 行(列)中1的个数

c. 特点:完全图的邻接矩阵中,对角元素为0,其余全为1

示例2:

a. 在有向图的邻接矩阵中,第 i 行含义:以结点 v_{i} 为尾的弧(即出度边)

b. 在有向图的邻接矩阵中,第 i 列含义:以结点 v_{i} 为头的弧(即入度边)

c. 有向图的邻接矩阵可能是不对称的

d. 顶点的出度=第 i 行元素之和,OD(v_{i})=\sum A.Edge[i][j]

e. 顶点的入度=第 i 列元素之和,ID(v_{i})=\sum A.Edge[j][i]

f. 顶点的度=第 i 行元素之和+第 i 列元素之和,TD(v_{i})=OD(v_{i})+ID(v_{i})

示例3:

  • 无向图:顶点集合 V={0,1,2,3},边集合 E={(0,1),(0,2),(1,2),(1,3)},邻接矩阵为:

      0 1 2 3
    0 0 1 1 0
    1 1 0 1 1
    2 1 1 0 0
    3 0 1 0 0
    

    (对称矩阵,如 A[0][1]=A[1][0]=1,表示 0 和 1 之间有边)。

  • 有向图:顶点集合 V={0,1,2},弧集合 E={<0,1>,<1,0>,<1,2>},邻接矩阵为:

      0 1 2
    0 0 1 0
    1 1 0 1
    2 0 0 0
    

    (非对称,如 A[0][1]=1 但 A[1][0]=1 是因为存在双向弧,而 A[1][2]=1 但 A[2][1]=0)。

(5)特点

  • 优点:
    • 判断两个顶点是否相邻(存在边)的时间复杂度为 O(1)(直接查 A[i][j])。
    • 便于计算顶点的度(无向图中顶点 i 的度是第 i 行或第 i 列的和;有向图中出度是第 i 行的和,入度是第 i 列的和)。
    • 容易实现图的操作,如:求某顶点的度、判断顶点之间是否有边(弧)、找顶点的邻接点等。
  • 缺点:
    • n 个顶点需要 n*n 个单元存储边(弧)。
    • 空间复杂度为 O(n2),不适合存储稀疏图(边数远小于 n2 的图),会浪费大量空间。
    • 对于 n 个顶点 e 条弧的网,建网时间效率=O(n^{2}+n+e*n)

2、网(即有权图)的邻接矩阵

网(Network)是带权值的图(边或弧具有权重,如距离、成本等),其邻接矩阵是无权图邻接矩阵的扩展,通过二维数组存储顶点间的权重值。

① A.Edge[i][j]=W_{ij}    (v_{i},v_{j})或<v_{i},v_{j}\in v_{R}

② A.Edge[i][j]= ∞       无边(弧)

③ 核心定义

  • 设网有 n 个顶点,定义 n×n 的二维数组 A,其中:
    • A[i][j]=w:表示顶点 i 与顶点 j 之间存在一条边或弧,权重为 w(w 为非负实数)。
    • A[i][j]=∞(无穷大,通常用一个远超最大权重的数表示):表示顶点 i 与顶点 j 之间不存在边或弧。
    • 对于无向网,邻接矩阵仍为对称矩阵(A[i][j]=A[j][i]);对于有向网,矩阵不一定对称。
    • 顶点自身到自身的权重通常为 0(A[i][i]=0)。

示例1:

  • 无向网:顶点集合 V={0,1,2},边及权重为 (0,1,5)、(0,2,3)、(1,2,1),邻接矩阵为:

        0    1    2
    0   0    5    3
    1   5    0    1
    2   3    1    0
    

    (对称,如 A[0][1]=A[1][0]=5,表示 0 和 1 之间的边权重为 5)。

  • 有向网:顶点集合 V={0,1,2},弧及权重为 <0,1,2>、<1,2,3>、<2,0,4>,邻接矩阵为:

        0    1    2
    0   0    2   ∞
    1  ∞    0    3
    2   4   ∞    0
    

    (非对称,如 A[0][1]=2 表示从 0 到 1 的弧权重为 2,而 A[1][0]=∞ 表示无反向弧)。

示例2:

④ 特点

  • 优点:
    • 不仅能表示顶点间的邻接关系,还能直接存储权重,适合 Dijkstra、Floyd 等最短路径算法的实现(依赖权重快速访问)。
    • 与无权图邻接矩阵一样,判断邻接和计算度(带权和)的效率高(O(1) 或 O(n))。
  • 缺点:
    • 空间复杂度仍为 O(n2),稀疏网(权值非 ∞ 的元素少)会浪费大量空间。

3、比较

类型核心存储内容空间复杂度适用场景
邻接矩阵(无权图)0/1 表示是否有边 / 弧O(n2)稠密图、需频繁判断邻接关系
网的邻接矩阵权重值 /∞ 表示边的权重O(n2)稠密网、需频繁访问权重(如最短路径计算)

两者均通过二维数组实现,本质是用 “空间换时间”,适合顶点数量固定且边数较多的图(稠密图 / 网);对于稀疏图 / 网,通常更适合用链式存储(如邻接表)。

http://www.dtcms.com/a/524080.html

相关文章:

  • [cpprestsdk] ~异步流处理(eg`basic_istream`、`basic_ostream`、`streambuf`) 底层
  • Linux 查找符合条件的文档
  • ​九小场所 / 乡镇监督防火 ——1 个平台管水源 / 隐患,整改率提 80%
  • 郑州做网站找绝唯科技地方类门户网站
  • 哪里可以做免费的物流网站国外室内设计案例网站
  • 【Linux系统】从零掌握make与Makefile:高效自动化构建项目的工具
  • ML:Supervised/Unsupervised
  • 开发网站多少钱北京 工业网站建设公司排名
  • 【后端开发面试题】
  • 【coze】基础概念与使用
  • Java 语法糖详解(含底层原理)
  • 企业网站介绍越南做企业网站
  • 免费建设电影网站宁波优化推广找哪家
  • JAVA1024 类 object类 包装类 享元模式 ;类继承 :interface ;构造方法
  • 树与二叉树的奥秘全解析
  • 《Python 正则表达式完全指南:从入门到精通》(AI版)
  • 【linux】vim快速清空整个文件
  • 基于单片机的故障检测自动保护智能防夹自动门设计及LCD状态显示系统
  • 2025妈妈杯大数据竞赛B题mathorcup:物流理赔风险识别及服务升级数学建模数模教学大学生辅导思路代码助攻
  • 对监控理解
  • 体育数据传输:HTTP API与WebSocket的核心差异
  • 货代如何做亚马逊和速卖通网站dedecms三合一网站源码
  • 燃烧学课程网站建设业之峰装饰官网
  • 做料理网站关键词怎么设置上海专业的网站建设
  • 英文 PDF 文档翻译成中文的优质应用
  • css实现拼图,响应不同屏幕宽度
  • html css js网页制作成品——HTML+CSS度年华电视剧网页设计(5页)附源码
  • 告别内网限制!用StirlingPDF+cpolar打造可远程访问的PDF工具站
  • cms代码做网站高端网站设计教程
  • Tailwind CSS实战:构建仿ChatGPT聊天页面(失败了)