7.1 图的定义和术语

本篇记录了数据结构图这一章学习的第一部分,
即图的定义和术语。

有向图

  • 顶点:数据

  • 表示方法:<v,w>有序对
  • 弧头 v
  • 弧尾 w

无向图

  • 表示方法:(v,m)无序对
    <>
  • 如何表示一个无向图?
    G1 =(V1 , {E1} )
    V1={v1,v2,v3,v4,v5}
    G1=

图的抽象数据类型定义:

ADT Graph{
	数据对象V:顶点集;
	数据关系R:R={VR}
		VR={<v,w>|v,w∈V,且P(v,w), <v,w>表示从v到w的弧,
			P(v,w)定义了弧<v,w>的意义或信息}
}

图的基本操作

1 CreateGraph(&G, V, VR);
初始条件:V是图的顶点集,VR是图中弧的集合
操作结果:按V和VR的定义构造图G
2 DestroyGraph(&G);
初始条件:图G存在
操作结果:销毁图G
3 LocateVex(G,u);
初始条件:图G存在,u和G中顶点有相同特征
操作结果:若G中存在顶点u,则返回该顶点在图中位置;否则返回其它信息。
4 GetVex(G, v);
初始条件:图G存在,v是G中某个顶点
操作结果:返回v的值
5 PutVex(&G, v, value);
初始条件:图G存在,v是G中某个顶点
操作结果:对v赋值value
6 FirstAdjVex(G, v);
初始条件:图G存在,v是G中某个顶点
操作结果:返回v的第一个邻接顶点。若顶点在G中没有邻接顶点,则返回“空”。
7 NextAdjVex(G, v, w);
初始条件:图G存在,v是G中某个顶点,w是v的邻接顶点。
操作结果:返回v的(相对于w的)下一个邻接顶点。若w是v的最后一个邻接点,则返回“空”。
8 InsertVex(&G, v);
初始条件:图G存在,v和图中顶点有相同特征。
操作结果:在图G中增添新顶点v
9 DeleteVex(&G, v);
初始条件:图G存在,v和图中顶点有相同特征
操作结果:删除G中顶点v及相关的弧
10 InsertArc(&G, v, w);
初始条件:图G存在,v和w是G中两个顶点。
操作结果:在G中增添弧<v,w>,若G是无向的,则还增添对称弧<w,v>
11 DeleteArc(&G, v, w);
初始条件:图G存在,v和w是G中两个顶点。
操作结果:在G中删除弧<v,w>,若G是无向的,则还删除对称弧<w,v>
12 DFSTraverse(G, v, Visit( ));
初始条件:图G存在,v是G中某个顶点,Visit是顶点的应用函数。
操作结果:从顶点v起深度优先遍历图G,对每个顶点调用函数Visit一次且仅一次。一旦visit( )失败,则操作失败
13 BFSTraverse(G, v, Visit( ));
初始条件:图G存在,v是G中某个顶点,Visit是顶点的应用函数。
操作结果:从顶点v起广度优先遍历图G,对每个顶点调用函数Visit一次且一次。一旦visit( )失败,则操作失败

子图

  • 设有两个图G =(V,E)G1 =(V1,E1),若V1∈V,
    E1 ∈ E,则称 G1是G的子图;

编辑器打不出集合包含符号,先用∈代替

常见的图

  • 1.有向完全图
    n个顶点的有向图最大边数是n(n-1)
  • 2.完全图
    n个顶点的无向图最大边数是n(n-1)/2
  • 3.稀疏图/稠密图
    边数少为前者,多为后者
  • 4.权
    与图的边或弧相关的数为权
  • 5.网
    带权的图

顶点的度

  • 无向图中,
    顶点的度为与每个顶点相连的边数
  • 有向图中,
    顶点的度分成入度与出度
    • 入度:以该顶点为头的弧的数目
      • 出度:以该顶点为尾的弧的数目

邻接点

  • 对于无向图G=(V,{E}),如果边 (v,v’)∈E,则称顶点v和v’互为邻接点(Adjacent),即v和v’相邻接。边(v,v’) 依附(Incident) 于顶点v和v’或者说 (v,v‘)和顶点v和v'相关联
  • 对于有向图G=(V,{A})),如果弧<v,v’>∈A,则称顶点v邻接到顶点v’,顶点v’邻接自顶点v,弧<v,v’>和顶点v,v’相关联**。

路径

两个顶点之间的顶点序列,该序列的每个顶点与其前驱是邻接点,每个顶点与其后继也是邻接点

  • 路径长度——沿路径边的数目或沿路径各边权值之和
  • 回路——第一个顶点和最后一个顶点相同的路径叫~
  • 简单路径——序列中顶点不重复出现的路径叫~
  • 简单回路——除了第一个顶点和最后一个顶点外,其余顶点不重复出现的回路叫~

连通图(强连通图)

  • 无向图中,若任意两点都存在路径,此图是连通图。
  • 有向图中,若任意两点都存在互通路径,此图是强连通图。

连通分量

无向图G的极大连通子图成为G的连通分量。
连通分量

极大连通子图:该子图是G连通子图,将G的任何不在该子图中的顶点加入,子图不再连通。

强连通分量

有向图D的极大强连通子图成为D的强连通分量。
在这里插入图片描述

极大强连通子图意思是:该子图是D强连通子图,将D的任何不在该子图中的顶点加入,子图不再是强连通的。

  • 下面总结了如何判断连通子图是不是极大或极小连通子图。
    (这个问题好像在离散数学提到过)

若在一个连通子图中,包含了与其中顶点有关所有边(the more the better),则是极大连通子图;若只包含了必不可少的边(the less the better),那就是极小连通子图。

关于此概念,下面的博文讲的很好,上面的总结也是受教于这位博主。
原文链接:https://blog.csdn.net/merlyn_yang/article/details/82467980

版权声明:本文为CSDN博主「merlyn_yang」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

生成树

  • 包含无向图G所有顶点的的极小连通子图称为G生成树。
    它含有图中全部顶点,但只有足以构成一棵树的n-1条边。一棵有n个顶点的生成树有且仅有n-1条边。
posted @ 2020-08-14 20:37  夜明_Yoake  阅读(328)  评论(0编辑  收藏  举报