7.1图的基本概念

7.1图的基本概念

一、图的定义

图(Graph)是一种网状数据结构,其形式化定义如下:

Graph=(V,R) 
V={x∣x∈DataObject} 
R={VR} 
VR={<x,y>∣P(x,y)∧(x,y∈V)} 

DataObject为一个集合,该集合中的所有元素具有相同的特性。
V 中的数据元素通常称为顶点(vertex), VR 是两个顶点之间的关系的集合。P(x,y)表示 x 和 y 之间有特定的关联属性 P。

  • 若<x,y>∈VR,则<x,y>表示从顶点 x 到顶点 y 的一条弧(arc),并称 x 为 弧尾(tail)或起始点,称 y 为弧头(head)或终端点,此时图中的边是有方向的,称这样的图为有向图。
  • 若<x,y>∈VR,必有<y,x>∈VR,即 VR 是对称关系,这时以无序对(x,y) 来代替两个有序对,表示 x 和 y 之间的一条边(Edge),此时的图称为无向图。
    在这里插入图片描述

所谓的“顶点在图中的位置”是指该顶点在这个人为的随意排列中的位置序 号。同理,也可以对某个顶点的邻接点进行人为的排序,在这个序列中,自然形成了第 1 个和第 k 个邻接点,并称第 k+1 个邻接点是第 k 个邻接点的下一个邻接点,而最后一个邻接点的下一个邻接点为“空”。

下面给出图的抽象数据类型定义:
ADT Graph
数据对象 V: 一个集合,该集合中的所有元素具有相同的特性。
数据关系 R: R={VR} VR={<x,y>∣P(x,y)∧(x,y∈V)}
基本操作:

  • (1)CreateGraph(G)
    操作前提:已知图 G 不存在
    操作结果:创建图 G。
  • (2)DestoryGraph(G)
    操作前提:已知图 G 存在;
    操作结果:销毁图 G。
  • (3)LocateVertex(G,v)
    操作前提:已知图 G 存在,顶点 v 值合法;
    操作结果:若图 G 中存在顶点 v,则返回顶点 v 在图 G 中的位置。若图 G 中没有顶点 v,则函数返回值为“空”。
  • (4)GetVertex(G,i)
    操作前提:已知图 G 存在;
    操作结果:返回图 G 中的第 i 个顶点的值。若 i 大于图 G 中顶点数,则函 数返回值为“空”。
  • (5)FirstAdjVertex(G,v)
    操作前提:已知图 G 存在,顶点 v 值合法;
    操作结果:返回图 G 中顶点 v 的第一个邻接点。若 v 无邻接点或图 G 中无 顶点 v,则函数返回值为“空”。
  • (6)NextAdjVertex(G,v,w)
    操作前提:已知图 G 存在,w 是图 G 中顶点 v 的某个邻接点。
    操作结果:返回顶点 v 的下一个邻接点(紧跟在 w 后面)。若 w 是 v 的最 后一个邻接点,则函数返回值为“空”。
  • (7)InsertVertex(G,u)
    操作前提:已知图 G 存在,u 值合法;
    操作结果:在图 G 中增加一个顶点 u。
  • (8)DeleteVertex(G,v)
    操作前提:已知图 G 存在,v 值合法;
    操作结果:删除图 G 的顶点 v 及与顶点 v 相关联的弧。
  • (9)InsertArc(G,v,w)
    操作前提:已知图 G 存在,v 值、w 值合法;
    操作结果:在图 G 中增加一条从顶点 v 到顶点 w 的弧。
  • (10)DeleteArc(G,v,w)
    操作前提:已知图 G 存在,v 值、w 值合法,存在弧(v,w) ;
    操作结果:删除图 G 中从顶点 v 到顶点 w 的弧。
  • (11)TraverseGraph(G)
    操作前提:已知图 G 存在;
    操作结果:按照某种次序,对图 G 的每个顶点访问一次且仅访问一次。

二、基本术语

(1)完全图、稀疏图与稠密图

设 n 表示图中顶点的个数,用 e 表示图中边或弧的数目,并且不考虑图中每 个顶点到其自身的边或弧。即若<vi,vj>∈VR,则 vi≠vj。
对于无向图而言,其边 数 e 的取值范围是 0~n(n-1)/2。有 n(n-1)/2 条边(图中每个顶点和其余 n-1 个顶点都有边相连)的无向图为无向完全图。
对于有向图而言,其边数 e 的取值 范围是 0~n(n-1)。有 n(n-1)条边(图中每个顶点和其余 n-1 个顶点都有弧相连)的有向图为有向完全图。对于有很少条边的图(e < n log n)称为稀疏图, 反之称为稠密图

(2)子图

在这里插入图片描述

(3)邻接点

对于无向图 G=(V,{E}),如果边(v,v/)∈E,则称顶点 v,v/互为邻接点, 即 v,v/ 相邻接。边(v,v/)依附于顶点 v 和 v/,或者说边(v,v/)与顶点 v 和 v/ 相关联。对于有向图 G=(V,{A})而言,若弧<v,v/>∈A,则称顶点 v 邻接到 顶点 v/,顶点 v/ 邻接自顶点 v,或者说弧<v,v/>与顶点 v,v/相关联。

(4)度、入度和出度

对于无向图而言,顶点 v 的度是指和 v 相关联边的数目,记作 TD(v)。例 如:上面图 G2 中顶点 C 的度是 3,A 的度是 2;在有向图中顶点 v 的度有出度和 入度两部分,其中以顶点 v 为弧头的弧的数目成为该顶点的入度,记作 ID(v), 以顶点 v 为弧尾的弧的数目称为该顶点的出度,记作 OD(v),则顶点 v 的度为 TD(v)= ID(v)+ OD(v)。

例如:上面图 G1 中顶点 A 的入度是 ID(A)=1,出度 OD(A)=2,顶点 A 的度 TD(A)= ID(A)+ OD(A)=3。一般地,若图 G 中有 n 个顶点,e 条边或弧,则图中顶点的度与边的关系如下:
在这里插入图片描述

(5)权与网

在实际应用中,图的边或弧上往往与具有一定意义的数有关,即每一条边都 有与它相关的数,称为,这些权可以表示从一个顶点到另一个顶点的距离或耗费等信息。这种带权的图称为赋权图或网,如下图所示。
在这里插入图片描述

(6)路径与回路

无向图 G=(V,{E})中从顶点 v 到 v/的路径是一个顶点序列 vi 0, vi1, vi2,…, vin,其中(vij-1,vij)∈E,1≤j≤n。如果图 G 是有向图,则路径也是有向的, 顶点序列应满足<vij-1,vij>∈A,1≤j≤n。路径的长度是指路径上经过的弧或边 的数目。在一个路径中,若其第一个顶点和最后一个顶点是相同的即 v =v/,则 称该路径为一个回路或环
若表示路径的顶点序列中的顶点各不相同,则称这样 的路径为简单路径
除了第一个和最后一个顶点外,其余各顶点均不重复出现的回路为简单回路。如下图(a),( b)所示。

(7)连通图

在无向图 G=(V,{E})中,若从 vi到 vj有路径相通,则称顶点 vi与 vj是连 通的。如果对于图中的任意两个顶点 vi、vj∈V,vi,vj都是连通的,则称该无向 图 G 为连通图。例如:G2 就是连通图。无向图中的极大连通子图称为该无向图的连通分量。在有向图 G=(V,{A})中,若对于每对顶点 vi、vj∈V 且 vi≠vj, 从 vi 到 vj和 vj到 vi都有路径,则称该有向图为强连通图。有向图的极大强连通 子图称做有向图的强连通分量,图 G1 的强连通分量如下图(c)所示。一个连通 图的生成树是一个极小连通子图,它含有图中全部顶点,但只有足以连通 n 个点 的 n-1 条边。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值