数据结构之图

1.图

图是由顶点的有穷非空集合和顶点之间的边的集合组成,通常表示为:G(V,E),其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合

2.图中定义

2.1无向边

若顶点Vi到Vj之间的边没有方向,则称这个边为无向边(Edge),用无序对(Vi,Vj)来表示。如果图中任意两个顶点之间的边都是无向边,则称该图是无向图;

2.2有向边

若顶点Vi到Vj之间的边有方向,则称这个边为有向边,也称为弧(Arc)。用有序对<Vi,Vj>来表示。其中vi称为弧尾(Tail),vj称为弧头(Head)。如果图中任意两个顶点之间的边都是有向边,则称该图是有向图;

2.3简单图

在图中,若不存在顶点到其自身的边,且同一条边不重复出现,则称这样的图为简单图

2.4无向完全图

在无向图中,如果任意两个顶点之间都存在边,则该图称为无向完全图。

2.5图的权

有些图的边或者弧具有与它相关的数字,这种与图的边或者弧相关的数叫做权(Weight)。这些权可以表示从一个顶点到另一个顶点的距离或耗费,这种带权的图通常称为网。

2.6有向图的弧度

以顶点v为头的弧的数目称为v的入度(InDegree),记做ID(v);以v为尾的弧的数目称为v的出度(OutDegree),记做OD(v);顶点v的度为TD(v)=ID(v)+OD(v)。

2.7回路与简单环

第一个和最后一个顶点相同的路径称为回路或环。序列中顶点不重复出现的路径称为简单路径。

2.8连通图

在无向图G中,如果顶点v到顶点v‘有路径,则称v和v’是连通的。如果对于图中任意两个顶点vi、vj∈E,Vi、Vj都是连通的,则称G是连通图。(Connected Graph)。

2.9无向图中的极大连通子图

  • 1.要是子图;
  • 2.子图要是连通的;
  • 3.连通子图含有极大顶点数;
  • 4.具有极大顶点数的连通子图包含依附于这些顶点的所有边
  • 2.10.有向图中的强连通分量

    在有向图中,如果对于每一对vi、vj∈V,从vi到vj和从vj到vi都存在路径,则称G是强连通图。有向图中的极大强连通子图称做有向图的强连通分量。

    3.连通图的生成树

    一个连通图的生成树是一个极小的连通子图,它含有图中全部的n个顶点,但只有足以构成一棵树的n-1条边。

    4.1图的邻接矩阵

    图的临接矩阵(Adjacency Matrix)存储方式是用2个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(称为临界矩阵)存储图中的边或者弧的信息。

    无向图

    有了这个矩阵,

  • 我们要知道某个顶点的度,其实就是这个顶点vi在邻接矩阵中第i行(或者第i列)的元素之和;
  • 求顶点vi的所有邻接点就是将矩阵中的第i行元素扫描一遍。arc[i][j]为1的就是邻接点。
  • 有向图

    有向图的邻接矩阵并不对称。vi的入度是vi列各数之和,出度为vi行各数之和。

    网图

    4.2邻接表

    对于边数相对顶点较少的图,邻接矩阵浪费存储空间。
    将数组和链表相结合的存储方法称为邻接表。


    • 1.图中顶点用一个一维数组存储。(也可以采用单链表,不过数组元素可以容易地读取顶点信息,更加方便。)另外,在顶点数组中,每个数据元素还需要存储指向第一个邻接点的指针,以便于查找该顶点的边信息。
    • 2.图中每个顶点vi的所有邻接点构成一个线性表,由于邻接点个数不一定,所以用单链表存储,无向图称为顶点vi的边表,有向图称为顶点vi作为弧尾的出边表。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值