数据结构19————图的定义和基本概念

数据结构19————图的定义和基本概念

文章目录

  • 数据结构19————图的定义和基本概念
      • 一.内容:
      • 二.图的定义
        • 1.形式化定义
      • 三.图的相关概念
        • 1.各种图定义
        • 2.图的顶点和边间关系
        • 3连通图相关术语
      • 四.图的ADT
        • 五.参考资料

一.内容:

  1. 图的定义
  2. 各种图的相关概念
  3. 图的ADT

二.图的定义

1.形式化定义

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

  • 图中的数据元素,我们称为顶点
  • 图不存在空集,图中不允许没有顶点
  • 任何两个顶点之间都可能有关系,顶点之间的逻辑关系用边表示

三.图的相关概念

1.各种图定义

  • 无向边:若顶点vi到vj之间没有方向,则称这条边为无向边,有无序偶对(vi,vj)来表示。
  • 无向图:如果图中任意两个顶点之间的边都是无向边,则称该图为无向图
  • 有向边:若从顶点vi到vj的边有方向为有向边,也称为弧,用 有序偶< vi, vj> 来表示,vi称为弧尾,vj称为弧头。
  • 有向图:如果图中任意两个顶点之间的边都是有向边,则称该图为有向图。
  • 简单图:在图中,如果不存在顶点到其自身的边,且同一条边不重复出现,则称这样的图为简单图。
  • 无向完全图:在无向图,如果任意两个顶点之间都有存在边,则称该图为无向完全图。
  • 有向完全图:在有向图中,如果任意两个顶点之间都存在互为相反的弧,则称该图为有向完全图
  • 稀疏图&稠密图:有很少的边或弧的图称为稀疏图,反之称为稠密图
  • 权:有些图的边或者弧具有与他相关的数字,这个相关的数称为权
  • 网:这种带权的图通常称为网

2.图的顶点和边间关系

  • 对于无向图G=(V,{E}),如果边(v1,v2)∈E , 则称顶点v1和v2互为邻接,即v1,v2相邻接。边(v1,v2)依附于顶点v1和v2,或者说(v1,v2)于顶点v1,v2相关联。顶点v的度为是和v相关联的边的数目,记做TD(v)
  • 对于有向图G=(V,{E}),如果弧< v1,v2>∈E,则称顶点v1邻接到顶点v2,顶点v2邻接自顶点v1.弧< v1,v2>和顶点v1,v2相关联,自顶点v1为头的弧的数目为v1的入度,记为ID(v),以v1为弧尾的弧的数目称为v1的出度,记为OD(v),顶点v的度TD(v)=ID(v)+OD(v).
  • 路径:无向图G(V,{E})中从顶点v1到顶点v2的路径是从v1到v2途经顶点的序列
  • 路径的长度:路径上的边或者弧的数目
  • 回路(环):第一个顶点到最后一个顶点相同的路径称为回路或者环
  • 简单路径:序列中顶点不重复出现的路径称为简单路径
  • 简单回路(环):除了第一个顶点和最后一个顶点外,其余顶点不重复出现的回路,称为简单回路或者简单环

3连通图相关术语

  • 连通: 在无向图G中,如果从顶点v1到顶点v2有路径,则称v1和v2是连通的
  • 连通图:如果对于无向图中任意两个顶点vi,vj,vi和vj都是连通的,则称该图是连通图
  • 连通分量:无向图中的极大连通子图称为连通分量。
  • 强连通图:在有向图中,任如果意两个顶点vi,vj,vi和vj都是连通的,则称该图是强连通图
  • 强连通分量:有向图中的极大强连通子图称作有向图的强连通分量

四.图的ADT

ADT Graph{  

     数据对象V:V是具有相同特性的数据元素的集合,称为顶点集。  

         数据关系R:R={VR}  

     VR={|v,w∈V且P(v,w),表示从v到w的弧,  

         谓词P(v,w)定义了弧的意义或信息}  

     基本操作:  

     CreateGraph( &G, V, VR )  

     初始条件:V是图的顶点集,VR是图中弧的集合。  

     操作结果:按V和VR的定义构造图G。  

     DestroyGraph( &G )  

     初始条件:图G存在。  

     操作结果:销毁图G。  

     LocateVex( G, u )  

     初始条件:图G存在,u和G中顶点有相同特征。  

     操作结果:若G中存在顶点u,则返回该顶点在图中位置;否则返回其它信息。  

     GetVex( G, v )  

     初始条件:图G存在,v是G中某个顶点。  

     操作结果:返回v的值。  

     PutVex( &G, v, value )  

     初始条件:图G存在,v是G中某个顶点。  

     操作结果:对v赋值value。  

     FirstAdjVex( G, v )  

     初始条件:图G存在,v是G中某个顶点。  

     操作结果:返回v的第一个邻接顶点。若顶点在G中没有邻接顶点,则返回“空”。  

     NextAdjVex( G, v, w )  
   
     初始条件:图G存在,v是G中某个顶点,w是v的邻接顶点。  

     操作结果:返回v的(相对于w的)下一个邻接顶点。若w是v的最后一个邻接点,则返回“空”。  

     InsertVex( &G, v )  

     初始条件:图G存在,v和图中顶点有相同特征。  

     操作结果:在图G中增添新顶点v。  

     DeleteVex( &G, v )  

     初始条件:图G存在,v是G中某个顶点。  

     操作结果:删除G中顶点v及其相关的弧。  

     InsertArc( &G, v, w )  

     初始条件:图G存在,v和w是G中两个顶点。  

     操作结果:在G中增添弧,若G是无向的,则还增添对称弧。  

     DeleteArc( &G, v, w )  

     初始条件:图G存在,v和w是G中两个顶点。  

     操作结果:在G中删除弧,若G是无向的,则还删除对称弧。  

     DFSTraverse( G, Visit() )  

     初始条件:图G存在,Visit是顶点的应用函数。  

     操作结果:对图进行深度优先遍历。在遍历过程中对每个顶点调用函数Visit一次且仅一次。一旦visit()失败,则操作失败。  

     BFSTraverse( G, Visit() )  

     初始条件:图G存在,Visit是顶点的应用函数。  

     操作结果:对图进行广度优先遍历。在遍历过程中对每个顶点调用函数Visit一次且仅一次。一旦visit()失败,则操作失败。   
     
         
         
}ADT Graph 

图的存储以及相关算法见后续的博客

五.参考资料

《大话数据结构》
《数据结构与算法》

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