数据结构——6.2 图的存储与基本操作

6.2 图的存储与基本操作

  • 概念
  1. 图的存储

数据结构——6.2 图的存储与基本操作_第1张图片

  1. 邻接矩阵存有向图和无向图

    1. 数据结构——6.2 图的存储与基本操作_第2张图片

    2. 根据邻接矩阵求度:

      1. 无向图:第i个结点的度 = 第i行 (或第列) 的非零元素个数

      2. 有向图:

        1. 第i个结点的出度 =第i行的非零元素个数

        2. 第i个结点的入度 =第i列的非零元素个数

        3. 第i个结点的度 = 第i行、第i列的非零元素个数之和

      3. 邻接矩阵法求顶点的度/出度/入度的时间复杂度为 O(|V|)

  2. 邻接矩阵存带权图(网)

    1. 数据结构——6.2 图的存储与基本操作_第3张图片

    2. 0与∞都表示两点间不存在边

  3. 邻接矩阵的性能分析

    1. 空间复杂度:O(|V|2):只和顶点数相关,和实际的边数无关

    2. 适合用于存储稠密图

    3. 无向图的邻接矩阵是对称矩阵,可以压缩存储 (只存储上三角区/下三角区)

    4. 数据结构——6.2 图的存储与基本操作_第4张图片

  4. 邻接矩阵的性质

    1. 从顶点i到顶点j长度为n的路径个数求法

    2. 数据结构——6.2 图的存储与基本操作_第5张图片

    3. 数据结构——6.2 图的存储与基本操作_第6张图片

    4. 数据结构——6.2 图的存储与基本操作_第7张图片

  5. 邻接表法(顺序+链式存储)

    1. 数据结构——6.2 图的存储与基本操作_第8张图片

    2. 数据结构——6.2 图的存储与基本操作_第9张图片

    3. 数据结构——6.2 图的存储与基本操作_第10张图片

    4. 邻接表法求顶点的度、入度、出度

      1. 无向图:遍历顶点的边链表即可得到与该点相连的所有边,计数即为度

      2. 有向图:

        1. 出度:遍历该顶点的边链表即可得到出度,和从该点指出去的所有弧

        2. 入度:遍历所有顶点的边链表

    5. 邻接表与邻接矩阵的区别 … 数据结构——6.2 图的存储与基本操作_第11张图片

  6. 十字链表法存储有向图

    1. 数据结构——6.2 图的存储与基本操作_第12张图片

    2. 数据结构——6.2 图的存储与基本操作_第13张图片

  7. 邻接多重表存储无向图

    1. 数据结构——6.2 图的存储与基本操作_第14张图片

    2. 边的删除数据结构——6.2 图的存储与基本操作_第15张图片

    3. 点的删除数据结构——6.2 图的存储与基本操作_第16张图片

    4. 数据结构——6.2 图的存储与基本操作_第17张图片

  8. 图的基本操作

    1. 数据结构——6.2 图的存储与基本操作_第18张图片
  • 理解
  1. 假设n个顶点,e个边的有向图用邻接表表示,则删除某个顶点v相关的所有边的复杂度为O(n+e)

  2. 在有向图的邻接表存储结构中,顶点v在边表中出现的次数为:顶点v的入度

  • 技巧
  1. 若图的邻接矩阵中,除主对角线全0外,矩阵其他元素全为1,则该图一定是完全图

  2. A ( n ) ( i j ) A^(n)_(ij) A(n)(ij)表示顶点i到顶点j,长度为n的路径一共有 A ( n ) ( i j ) A^(n)_(ij) A(n)(ij)

你可能感兴趣的:(408,数据结构,算法)