数据结构【第十天】:图(一)

基本定义

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

注意:在图中数据元素称之为顶点,且顶点集合V是有穷非空的,即不存在空图这个定义


图按照有无方向可分为无向图和有向图

无向边:顶点vi与vj之间的边没有方向,用(vi.,vj)表示,也可用(vj,vi)表示

有向边:顶点vi到vj之间有方向,该有向边又称弧,用<vi,vj>表示,vi为弧尾,vj为弧头,方向从vi到vj,次序不可调换,用<>表示

简单图:不存在顶点到自身的边,且同一条边不重复出现

无向完全图:在无向图的基础上,若任意两个顶点之间都存在边,即n个顶点含有n*(n-1)/2条边

有向完全图:如果任意两个顶点之间都存在方向互为相反的两条弧

图按照边和弧的多少,可以分为稀疏图和稠密图

权:与图的边或弧相关的数

网:带权的图



顶点与边

无向图

对于无向图G(V,{E}),如果边(vi,vj)属于E,则顶点vi和vj互为邻接点,即vi与vj相邻接,或者说(vi,vj)与顶点vi,vj相关联

与顶点v相关联的边的数目,记为TD(v),称为v的

可发现顶点的度之和等于边数的2倍

有向图

对于有向图G(V,{E}),如果有弧<vi,vj>属于E,则称顶点vi邻接到顶点vj(或顶点vj邻接自顶点vi)。弧<vi,vj>与顶点vi,vj相关联

以顶点v为头的弧的数目称为v的入度,记为ID(v)

以顶点v为尾的弧的数目称为v的出度,记为OD(v)

顶点v的称为TD(v) = ID(v) + OD(v)

无向图中从顶点vi到vj的路径是一个顶点序列(v=vi,0 , vi,1 , vi,2 ,..., vj)其中(vi,j-1 , vi,j)属于E,1<=j<=m

路径长度:路径上边或者弧的数目

回路或环:第一个顶点到最后一个顶点相同的路径

简单路径:序列中顶点不重复出现的路径

简单回路或简单环:除了第一个和最后一个顶点之外,其余顶点不重复出现的回路



连通图

在无向图G中,若从顶点vi到顶点vj有路径,则称vi与vj是连通的。若对于图中任意两个顶点均是连通的,则称G是连通图

连通分量:无向图中极大连通子图

条件:子图、子图连通、连通的子图含有极大顶点数、具有极大顶点数的连通子图包含依附于这些顶点的所有边

 

在有向图G中,如果对于每一对vi,vj,从vi到vj和从vj到vi都有路径,则称G是强连通图

强连通分量:有向图中的极大强连通子图

 

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

一个图如果只有n个顶点和n-1条边,则为非连通图

如果一个有向图恰有一个顶点的入度为0,其余顶点的入度均为1,则是一棵有向树

一个有向图的生成森林由若干棵有向树组成,含有图中全部顶点,但只有足以构成若干棵不相交的有向树的弧


图的抽象数据类型

ADT 图(Graph)

Data 

    顶点的有穷非空集合和边的集合

Operation

    CreateGrapth(*G,V,VR);    //按照顶点集V和边弧集VR的定义构造图G

    DestroyGraph(*G);    //G存在删除G

    LocateVex(G,u);    //若图G中存在顶点u,返回其在图中位置

    GetVex(G,v);    //返回图G中顶点v的值

    PutVex(G,v,value);    //将图G中的顶点v赋值给value

    FirstAdjVex(G,*v);    //返回顶点v的一个邻接顶点,若顶点在G中无邻接顶点,则返回空

    NextAdjVex(G,v,*w);    //返回顶点v相对于顶点w的下一个邻接顶点,若w是v的最后一个邻接顶点则返回空

    InsertVex(*G,v);    //在图G中新增顶点v

    DeleteVex(*G,v);    //删除图G中顶点v及其相关的弧

    InsertArc(*G,v,w);    //在图G中新增弧<v,w>若G是无向图,还需增加对称的弧<w,v>

    DeleteArc(*G,v,w);    //在图G中删除弧<v,w>若G是无向图,还需删除对称的弧<w,v>

    DFSTraverse(G);    //对图G进行深度优先遍历,在遍历的过程中对每个顶点进行调用

    HFSTraverse(G);    //对图G进行广度优先遍历,在遍历的过程中对每个顶点进行调用

endADT

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值