图的存储

    • 图的定义:

    图 G 是由两个集合顶点集 V(G) 和边集 E(G) 组成的,记作G=( V(G),E(G) ),简称G=(V,E)。V是顶点的有穷非空集合,E是两个顶点之间的关系——边的有穷集合。

    有时对图的边或弧赋予相关的数值,这种与图的边或弧相关的数值叫做权。

    这些权可以表示从一个顶点到另一个顶点的距离。可以表示从一个顶点到另一个顶点的耗费。

    • 顶点的度

    顶点的度:即与该顶点相关联的边的条数。在有向图中,指向该顶点的边的条数称之为入度,而从该顶点指出来的边的条数称之为该顶点的出度,而该顶点的度数为入度和出度之和。

    • 连通

    在无向图中:

    如果从顶点v到顶点v'有路径,则称v和v'之间是连通的。如果图G中的任意连个顶点都是连通的,那么称这个图为连通图

    对于无向图,在非连通图中连通分量是指该图中最大连通子图。

    在有向图中:

    如果从顶点v到顶点v'有路径,并且从v'到v之间也有路径,则说明v和v'之间是连通的。如果一个有向图中,任意选取两个顶点,都是连通的,则称这个图为强连通图

    对于有向图,在非连通图中强连通分量是指该图中最大连强通子图。

    • 图的存储结构
      1. 邻接矩阵:

    邻接矩阵存放 n 个顶点信息和 n2 条边或弧信息。其每一个元素 aij 定义为:


    非带权图


    带权图(Wij表示权重)

    例有向图 G:


    (习惯性的会给图中每一个节点标号,标号从1开始。)其邻接矩阵为:

     

    有向图的邻接矩阵不是对称矩阵。

    无向图:


    其邻接矩阵为:


    无向图的邻接矩阵是对称矩阵。

    邻接矩阵的优点:

    1.  容易判断任意两个顶点之间是否有边或弧。

    2.  容易求取各个顶点的度。

    1. 邻接表和逆邻接表

    对图中每一个顶点建立一个单链表,指示与该顶点关联的边或出弧。

    头节点存储结构(存储顶点信息):


    表节点存储结构(存储边信息):

     

    对于无向图:


    对应邻接表:


    一般所有的头节点会定义成一个数组。

    所需存储空间:n + 2e。

    而对于有向图:


    对应邻接表(存储所有顶点的入度信息):


    对应逆邻接表(存储所有顶点的出度信息):

    存储空间:2n+2e。

    邻接表和邻接矩阵的比较:


    比较省存储空间的是邻接表,求两个顶点是否连通更方便的是邻接矩阵(邻接矩阵直接查找aij是否为0或者无穷大,而邻接表要做一个线性查找)。

    1. 十字链表

    针对有向图,为了更好的存储信息和节省空间,采取十字链表的方法。

    十字链表头节点存储结构:

     

    十字链表表节点存储结构:


    例如:


    对应的十字链表:


     

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值