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

珠海网站建设策略哈尔滨75号公告

珠海网站建设策略,哈尔滨75号公告,石家庄划定6个高风险区,贵州健康码app下载408答疑 文章目录 二、图的存储图的存储相关概念邻接矩阵存储方式邻接矩阵的定义顶点的度计算邻接矩阵的特点邻接矩阵的局限性 应用场景邻接矩阵的幂次意义(了解即可) 邻接表存储方式邻接表定义邻接表结构邻接表的特点 邻接矩阵和邻接表的适用性差异十字…

408答疑


文章目录

  • 二、图的存储
    • 图的存储相关概念
    • 邻接矩阵存储方式
      • 邻接矩阵的定义
      • 顶点的度计算
      • 邻接矩阵的特点
        • 邻接矩阵的局限性
      • 应用场景
      • 邻接矩阵的幂次意义(了解即可)
    • 邻接表存储方式
      • 邻接表定义
      • 邻接表结构
      • 邻接表的特点
    • 邻接矩阵和邻接表的适用性差异
    • 十字链表
      • 十字链表定义
      • 十字链表结构
      • 十字链表的特点
      • 十字链表的适用性
    • 邻接多重表
      • 邻接多重表定义
      • 邻接多重表结构
      • 邻接多重表的特点
      • 邻接多重表的适用性
    • 总结对比
  • 六、参考资料
    • 鲍鱼科技课件
    • 26王道考研书


二、图的存储

图的存储相关概念

  • 图的存储必须要完整、准确地反映顶点集和边集的信息。
  • 根据不同图的结构和算法,采用不同的存储方式将对程序的效率产生相当大的影响,因此所选的存储结构应适合于待求解的问题。

邻接矩阵存储方式

邻接矩阵的定义

对于顶点数为 n n n 的图 G = ( V , E ) G=(V, E) G=(V,E),其邻接矩阵 A A A n × n n \times n n×n 的二维数组。邻接矩阵存储方式通过二维数组表示图的结构:

  1. 顶点信息:使用一维数组存储图中所有顶点的信息。
  2. 边信息:使用二维数组(邻接矩阵)存储顶点之间的邻接关系。

若顶点编号为 v 1 , v 2 , ⋯ , v n v_1, v_2, \cdots, v_n v1,v2,,vn,则矩阵元素定义为:

  • 普通图(无权重)
    A [ i ] [ j ] = { 1 , 若存在边  ( v i , v j ) 或  < v i , v j > 0 , 否则 A[i][j] = \begin{cases} 1, & \text{若存在边 $(v_i, v_j)$ 或 $<v_i, v_j>$} \\ 0, & \text{否则} \end{cases} A[i][j]={1,0,若存在边 (vi,vj)  <vi,vj>否则
  • 有向图的邻接矩阵中,非对称元素表示单向边。
  • 无向图的邻接矩阵为对称矩阵。
    在这里插入图片描述
  • 带权图(网)
    A [ i ] [ j ] = { w i j , 若存在边  ( v i , v j ) 或  < v i , v j > 0 或  ∞ , 否则(通常对角线元素用  0 表示) A[i][j] = \begin{cases} w_{ij}, & \text{若存在边 $(v_i, v_j)$ 或 $<v_i, v_j>$} \\ 0 \text{ 或 } \infty, & \text{否则(通常对角线元素用 $0$ 表示)} \end{cases} A[i][j]={wij,0  ,若存在边 (vi,vj)  <vi,vj>否则(通常对角线元素用 0 表示)
  • 网的邻接矩阵中,非零元素表示边的权值, 0 0 0 ∞ \infty 表示无边。
    在这里插入图片描述

顶点的度计算

  1. 无向图:顶点 v i v_i vi 的度 TD ( v i ) \text{TD}(v_i) TD(vi) 等于邻接矩阵第 i i i 行(或第 i i i 列)非零元素个数。
  2. 有向图
    • 出度 OD ( v i ) \text{OD}(v_i) OD(vi):第 i i i 行非零元素个数。
    • 入度 ID ( v i ) \text{ID}(v_i) ID(vi):第 i i i 列非零元素个数。

邻接矩阵的特点

  1. 有向图与无向图的区别
    • 有向图的邻接矩阵可能不对称。
    • 无向图的邻接矩阵是对称矩阵。
  2. 空间复杂度:顶点数为 n n n 时,邻接矩阵的空间复杂度为 O ( n 2 ) O(n^2) O(n2),适合稠密图。
  3. 二维数组的行和列对应顶点的编号,矩阵元素表示顶点间的连接关系。
    • 例如,矩阵中第 i i i 行第 j j j 列的值表示顶点 v i v_i vi v j v_j vj 是否存在边或边的权重。
  4. 邻接矩阵的遍历时间复杂度:基于邻接矩阵的遍历(如DFS、BFS)时间复杂度为 O ( n 2 ) O(n^2) O(n2)
邻接矩阵的局限性
  • 边数统计:需遍历整个矩阵,时间复杂度为 O ( n 2 ) O(n^2) O(n2)
  • 稀疏图效率低:存储大量 0 0 0 ∞ \infty 元素浪费空间。

应用场景

  • 邻接矩阵便于快速判断顶点间的邻接关系(时间复杂度 O ( 1 ) O(1) O(1))。
  • 适合需要频繁查询边存在的场景,但对稀疏图存储效率较低。

邻接矩阵的幂次意义(了解即可)

  • 设邻接矩阵为 A A A,则 A n [ i ] [ j ] A^n[i][j] An[i][j] 表示顶点 i i i j j j 的长度为 n n n 的路径数目。

邻接表存储方式

邻接表定义

  • 邻接表是数组和链表的结合存储操作。
  • 数组存放的是顶点,链表的结点表示边。

邻接表结构

  • 顶点表结点由两个域组成:

    • 顶点域(data):存储顶点 v i v_i vi 的相关信息。
    • 边表头指针域(firstarc):指向第一条边的边表结点。
      在这里插入图片描述
  • 边表结点至少由两个域组成:

    • 邻接点域(adjvex):存储与头结点顶点 v i v_i vi 邻接的顶点编号。
    • 指针域(nextarc):指向下一条边的边表结点。
      在这里插入图片描述
  • 无向图和有向图的邻接表的实例
    在这里插入图片描述
    在这里插入图片描述

邻接表的特点

  1. 存储空间
    • G G G 为无向图,则所需的存储空间为 O ( ∣ V ∣ + 2 ∣ E ∣ ) O(|V| + 2|E|) O(V+2∣E)
    • G G G 为有向图,则所需的存储空间为 O ( ∣ V ∣ + ∣ E ∣ ) O(|V| + |E|) O(V+E)
  2. 稀疏图的存储
    • 对于稀疏图(即边数较少的图),采用邻接表表示将极大地节省存储空间。
  3. 操作效率
    • 在邻接表中,给定一个顶点,能很容易地找出它的所有邻边,因为只需要读取它的邻接表。
    • 在邻接矩阵中,相同的操作则需要扫描一行,花费的时间为 O ( n ) O(n) O(n)。但是,若要确定给定的两个顶点间是否存在边,则在邻接矩阵中可以立刻查到,而在邻接表中则需要在相应结点对应的边表中查找另一结点,效率较低。
  4. 顶点的度
    • 在无向图的邻接表中,求某个顶点的度只需计算其邻接表中的边表结点个数。
    • 在有向图的邻接表中,求某个顶点的出度只需计算其邻接表中的边表结点个数;但求某个顶点 x x x 的入度则需遍历全部的邻接表,统计邻接点(adjvex)域为 x x x 的边表结点个数。
  5. 邻接表的唯一性
    • 图的邻接表表示并不唯一,因为在每个顶点对应的边表中,各边结点的链接次序可以是任意的,它取决于建立邻接表的算法及边的输入次序。

邻接矩阵和邻接表的适用性差异

  • 对于稀疏图,邻接表法比邻接矩阵法更节省存储空间。
  • 在邻接表中,给定顶点查找其所有邻边的效率较高,但在邻接矩阵中,确定两个顶点间是否存在边的效率更高。

十字链表

十字链表定义

  • 十字链表是针对有向图的一种链式存储结构。
  • 在十字链表中,有向图的每条弧用一个结点(弧结点)来表示,每个顶点也用一个结点(顶点结点)来表示。

十字链表结构

  • 弧结点

    • 有 5 个域:tailvexheadvexhlinktlinkinfo
      • tailvexheadvex 两个域分别指示弧尾和弧头这两个顶点的编号。
      • hlink 指向弧头相同的下一个弧结点。
      • tlink 指向弧尾相同的下一个弧结点。
      • info 存放该弧的相关信息。
    • 弧头相同的弧在同一个链表上,弧尾相同的弧也在同一个链表上。
      在这里插入图片描述
  • 顶点结点

    • 有 3 个域:datafirstinfirstout
      • data 域存放该顶点的数据信息,如顶点名称。
      • firstin 域指向以该顶点为弧头的第一个弧结点。
      • firstout 域指向以该顶点为弧尾的第一个弧结点。

在这里插入图片描述

  • 顶点结点之间是顺序存储的,弧结点省略了 info 域。
    在这里插入图片描述

十字链表的特点

  • 在十字链表中,既容易找到 V i V_i Vi 为尾的弧,也容易找到 V i V_i Vi 为头的弧,因而容易求得顶点的出度和入度。
  • 图的十字链表表示不是唯一的,但一个十字链表表示唯一确定一个图。

十字链表的适用性

  • 十字链表适合用于有向图的存储,能够有效地表示和操作有向图的边和顶点。

邻接多重表

邻接多重表定义

  • 邻接多重表是无向图的一种链式存储结构。
  • 在邻接表中,容易求得顶点和边的各种信息,但在邻接表中求两个顶点之间是否存在边而对边执行删除等操作时,需要分别在两个顶点的边表中遍历,效率较低。

邻接多重表结构

  • 每条边用一个结点表示,其结构如下所示:
    • ivexjvex 这两个域指示该边依附的两个顶点的编号;
    • ilink 域指向下一条依附于顶点 ivex 的边;
    • jlink 域指向下一条依附于顶点 jvex 的边;
    • info 域存放该边的相关信息。

在这里插入图片描述

  • 每个顶点也用一个结点表示,它由两个域组成:
    • data 域存放该顶点的相关信息;
    • firstedge 域指向第一条依附于该顶点的边。

在这里插入图片描述

  • 邻接多重表的各种基本操作的实现和邻接表类似。
    在这里插入图片描述

邻接多重表的特点

  • 在邻接多重表中,所有依附于同一顶点的边串联在同一个链表中,因为每条边依附于两个顶点,所以每个边结点同时链接在两个链表中。
  • 对无向图而言,其邻接多重表和邻接表的差别仅在于,同一条边在邻接表中用两个结点表示,而在邻接多重表中只有一个结点。

邻接多重表的适用性

  • 邻接多重表适合用于无向图的存储,能够有效地表示和操作无向图的边和顶点。
  • 邻接多重表的各种基本操作的实现和邻接表类似。

总结对比

存储方式邻接矩阵邻接表十字链表邻接多重表
空间复杂度 O ( O( O(| V V V| 2 ) ^2) 2)无向图: O ( O( O(| V V V|+2| E E E| ) ) )
有向图: O ( O( O(| V V V|+| E E E| ) ) )
O ( O( O(| V V V|+| E E E| ) ) ) O ( O( O(| V V V|+| E E E| ) ) )
找相邻边遍历对应行或列的时间复杂度为 O ( O( O(| V V V| 2 ) ^2) 2)找有向图的入度必须遍历整个邻接表很方便很方便
删除边或顶点删除边很方便,删除顶点需要大量移动数据无向图中删除边或顶点都不方便很方便很方便
适用于稠密图稀疏图和其他只能存有向图只能存无向图
表示方式唯一不唯一不唯一不唯一

六、参考资料

鲍鱼科技课件

b站免费王道课后题讲解: link
在这里插入图片描述

网课全程班: link
在这里插入图片描述

26王道考研书


文章转载自:

http://C7ZpAgGF.mnyzz.cn
http://0cnDYt37.mnyzz.cn
http://W8sDDvvO.mnyzz.cn
http://rz6LyBOS.mnyzz.cn
http://tMv5aoXF.mnyzz.cn
http://juLUpZNV.mnyzz.cn
http://nJkl33MC.mnyzz.cn
http://SWCXBlmU.mnyzz.cn
http://SDMI8iaq.mnyzz.cn
http://YgSsHs2B.mnyzz.cn
http://18HAM2et.mnyzz.cn
http://JzmHdSZk.mnyzz.cn
http://vK65pPIf.mnyzz.cn
http://0aT1iQMj.mnyzz.cn
http://WdGj1eg3.mnyzz.cn
http://241goGxf.mnyzz.cn
http://wyZZ4szW.mnyzz.cn
http://zoKV5PTP.mnyzz.cn
http://11IrOSQJ.mnyzz.cn
http://UaTw44Tg.mnyzz.cn
http://6ikSJVrg.mnyzz.cn
http://P5IrDrq7.mnyzz.cn
http://PGSXuCf8.mnyzz.cn
http://zaDLNhcP.mnyzz.cn
http://9iLgv5iN.mnyzz.cn
http://rtPH30fr.mnyzz.cn
http://y84FqWq3.mnyzz.cn
http://TG0aX1gJ.mnyzz.cn
http://V3dT2O8U.mnyzz.cn
http://HaxKHYr6.mnyzz.cn
http://www.dtcms.com/wzjs/636976.html

相关文章:

  • 安徽建设工程信息网新网站哪儿登陆wordpress payjs
  • 学习网站建设要什么学历网站建设书籍
  • 推广员网站图片展示网站php源码
  • 课程网站建设简介响应式网站有什么区别
  • 营销网站的概念在淘宝上做代销哪个网站好
  • 营销网站的案例分析wordpress+客户端
  • 建筑常用的模板下载网站有哪些.net网站开发简介
  • 无锡鑫融建设网站php连接wordpress数据库
  • 网站建设收费标准如何招标网址
  • 北京地区网站制作公司保定企业网站开发
  • 站内推广的几种方式企业软件
  • 湛江手机网站建设wordpress 直播 视频
  • 龙山网站建设sem推广竞价托管公司
  • 网站引导页动态效果怎么做网站app免费软件
  • 网站建设空格怎么打现在能不能去西安
  • 广安门外网站建设余江区建设局网站
  • 网站被什么叫网站降权
  • 品牌网站建设制作做网站一般图片多大
  • 门户网站盈利模式答题app制作教程
  • 上海网站建设制wordpress怎么安装导航
  • 邢台做网站动态雅安网站建设公司
  • 小米商城网站建设分析宜春个人网站建设
  • wordpress修改网站菜单位置软件网站建设基本流程
  • 网站配置服务Wordpress局域网网站域名怎么做
  • 做盗版电影网站问题河北邯郸的最新通告
  • 高端大气的网站首页怎么开发直播平台
  • 在哪个网站可以学做甜点建设网站南昌
  • 企业网络推广做网站推广公司至道品牌设计公司
  • 网站站点不安全中文域名是什么
  • 网站主题编辑工具WordPress自己建的网站地址