50-图的定义

1. 图的定义

这里写图片描述
图1-图的定义

图形结构是属于复杂的非线性结构。


图的定义:
  图由顶点的集合和边的集合构成。

  图的形式化定义通常表示为:G = ( V , E)

  其中G表示一个图

  集合V(vertex):表示图G中顶点的有限非空集合,记为V ( G )。

  图G中的0,1,2,3,4这几个数据元素称为顶点,对于n个顶点的图,对每个顶点连续编号,即顶点的编号为0 ~ n-1,通过编号唯一确定一个顶点。

  集合E(Edge):连接V中两个不同顶点(顶点对)的边的有限集合,记为E ( G ),是图G中边的集合。

2. 有向图和无向图

这里写图片描述
图2-无向图

  在图2中,如果表示边的顶点对是无序的,则称G为无向图,用圆括号序偶表示无向边。比如在上图中(0,1)表示一条无向边,其实和(1,0)是同一条边。



这里写图片描述
图3-有向图

  如果表示边的顶点对是有序的,则称G为有向图,用尖括号序偶表示有向边,比如下面的<0 , 1>明确表示是0到1,是有向的。


3. 抽象数据类型——ADT

这里写图片描述
图4-抽象数据类型

  我们从图4中可以知道,这是一个有向图,对于图中的每个节点都有前驱和后继关系,比如:对于节点3来说,它的节点之间的关系有这些:<0,3>,<1,3>,<2,3>,<4,3>,它有多个前驱节点,节点0,1,2,4都是节点3的前驱节点。再比如对于节点1来说,它的节点之间的关系:<1,2>,<1,3>,它也有多个后继节点,节点2,3都是节点1的后继节点。我们可以理解为<i,j>中,i为前驱节点,j为后继节点



根据图的数据之间的关系和数据操作,图的抽象数据类型ADT定义如下:

ADT
ADT Graph
{
数据对象:
    //ElemType为类型标识符
    D = {ai | ai∈ElemType, i=1 , 2 , … , n , n ≧ 0 } 

数据关系:
    R = {<ai,aj> | ai, aj∈D, i=1,2,…,n, j=1,2,…,n,其中每个元素可以有零个或多个前驱节点,可以有零个或多个后继节点}

数据操作:
    (1)初始化图InitGraph(&g):构造一个空的图g
    (2)销毁树ClearGraph(&g):释放图g占用的内存空间
    (3)DFS(G,v):从顶点v出发,深度优先遍历图g
    (4)BFS(G,v):从顶点v出发,广度优先遍历图g
    ... ...
}

猜你喜欢

转载自blog.csdn.net/qq_35733751/article/details/81023580