数据结构——图结构:图

数据结构与算法分析——目录

  第一部分:数据结构

    数据结构——图结构:图

图基础

\quad 图是一种比线性表和数更为复杂的数据结构。在图结构中,结点之间的关系可以是任意的,也就是说,图中的任意两个数据元素之间都可能相关。

\quad 图的应用十分广泛,已渗透到诸如物理、化学、计算机科学,以及数学等其它分支中。

图的定义

\quad (Graph) G G G 由两个集合 V V V E E E 组成。通常将图记作二元组 G = ( V , E ) G=(V,E) G=(V,E)。其中

  • 集合 V V V 中的元素称为 顶点(Vertex);
  • 集合 E E E 中的元素对应一对顶点 ( u , v ) (u,v) (u,v),表示它们之间存在某种关系,称为 (Edge) ;
  • E ⊆ V × V E \subseteq V \times V EV×V.

\quad 在图 G G G 中,顶点集合 V ( G ) V(G) V(G) 为非空有穷集合(没有顶点的空图没有实际意义),边集合 E ( G ) E(G) E(G)可以为空,表示图 G G G 只有顶点没有边。

\quad 按照图中边是否有向,可将图分为 有向图无向图

  • 在有向图中 G = ( V , E ) G=(V,E) G=(V,E) 中,边 ( u , v ) (u,v) (u,v) 是有序的,称作从顶点 u u u 到 顶点 v v v有向边。因此,边 ( u , v ) (u,v) (u,v) 与 边 ( v , u ) (v,u) (v,u) 是不同的两条有向边。
  • 在无向图 G = ( V , E ) G=(V,E) G=(V,E) 中,边 ( u , v ) (u,v) (u,v) 是无序的,称作顶点 u u u 和 顶点 v v v 之间的 无向边。因此,边 ( u , v ) (u,v) (u,v) 与 边 ( v , u ) (v,u) (v,u) 是同一条有向边。


\quad 有向图中的边 ( u , v ) (u,v) (u,v) 也可以记作 < u , v > <u,v> <u,v>。有向边也称为 (arc),在弧 < u , v > <u,v> <u,v> 中, u u u弧头 v v v弧尾

在这里插入图片描述

图 1 : 有 向 图   G 1   与 无 向 图   G 2 图1:有向图~G_1~与无向图~G_2 1 G1  G2

图的基本术语

完全图与有向完全图

\quad n n n 表示图 G G G 的顶点数目,用 e e e 表示边的数目,则:

  • 无向图的边数 e e e 的取值范围为 0 ∼ n ( n − 1 ) 2 0 \sim\frac{n(n-1)}{2} 02n(n1),边数为 n ( n − 1 ) 2 \frac{n(n-1)}{2} 2n(n1) 的无向图称为 完全图
  • 有向图的边数 e e e 的取值范围为 0 ∼ n ( n − 1 ) 0 \sim n(n-1) 0n(n1),边数为 n ( n − 1 ) n(n-1) n(n1) 的有向图称为 有向完全图

稀疏图与稠密图

\quad 边数较少的图称为 稀疏图(Sparse graph),反之为 稠密图(Dense graph)。

子图

\quad G 1 = ( V 1 , E 1 ) G_1 = (V_1,E_1) G1=(V1,E1) G 2 = ( V 2 , E 2 ) G_2=(V_2,E_2) G2=(V2,E2) 是两个图,若 V 1 ⊆ V 2 V_1 \subseteq V_2 V1V2 E 1 ⊆ E 2 E_1 \subseteq E_2 E1E2,则称 G 1 G_1 G1 G 2 G_2 G2子图

在这里插入图片描述
图 2 : 有 向 图   G 1   的 子 图 图2:有向图~G_1~的子图 2 G1 

在这里插入图片描述
图 3 : 无 向 图   G 2   的 子 图 图3:无向图~G_2~的子图 3 G2 

权和网

\quad 图的边或弧上具有与之相关的数称为 (Weight)。带权的图称为 (Network)。

  • 无向图 → \rightarrow 无向网;
  • 有向图 → \rightarrow 有向网。

邻接

\quad 在无向图 G = ( V , E ) G=(V,E) G=(V,E) 中,若边 ( u , v ) ∈ E (u,v) \in E (u,v)E,则称顶点 u u u v v v 互为 邻接点(Adjacent node),顶点 u u u v v v 相邻接。称边 ( u , v ) (u,v) (u,v) 依附于 顶点 u u u v v v,或者称边 ( u , v ) (u,v) (u,v) 与顶点 u , v u,v u,v 相关联

\quad 在有向图 G = ( V , E ) G=(V,E) G=(V,E) 中,若 ( u , v ) ∈ E (u,v) \in E (u,v)E,则称顶点 u u u 邻接到顶点 v v v,或者顶点 v v v 邻接自顶点 u u u

与顶点 v v v 相关联的边的数目称为该顶点的 (Degree),记作 T D ( v ) TD(v) TD(v)

入度

\quad 在有向图 G = ( V , E ) G=(V,E) G=(V,E) 中,以顶点 v ∈ V v \in V vV 为弧头的弧的数目称为该顶点的 入度(InDegree),记作 I D ( v ) ID(v) ID(v)

出度

\quad 在有向图 G = ( V , E ) G=(V,E) G=(V,E) 中,以顶点 v ∈ V v \in V vV 为弧尾的弧的数目称为该顶点的 出度(OutDegree),记作 O D ( v ) OD(v) OD(v)

在具有 n n n 个顶点, e e e 条边的图 G = ( V , E ) G=(V,E) G=(V,E) 中,记顶点 v i ∈ V v_i \in V viV 的度为 T D ( v i ) TD(v_i) TD(vi),则有
e = 1 2 ∑ i = 1 n T D ( v i ) 。 (1) e =\frac{1}{2} \sum_{i=1}^{n}{TD(v_i)}。 \tag{1} e=21i=1nTD(vi)(1)

路径

\quad 若图 G = ( V , E ) G=(V,E) G=(V,E) 是无向图,则顶点 u ∈ V u \in V uV 到顶点 v ∈ V v \in V vV路径 是一个顶点序列 ( u = w i 1 , w i 2 , ⋯   , w i k = v ) (u=w_{i_1},w_{i_2},\cdots,w_{i_{k}}=v) (u=wi1,wi2,,wik=v),其中 ( w i j − 1 , w i j ) ∈ E , 1 ≤ j ≤ k (w_{i_{j-1}},w_{i_{j}}) \in E,1 \le j \le k (wij1,wij)E,1jk

\quad 若图 G = ( V , E ) G=(V,E) G=(V,E) 是有向图,则顶点 u ∈ V u \in V uV 到顶点 v ∈ V v \in V vV路径有向路径,同样可以表示为顶点序列 ( u = w i 1 , w i 2 , ⋯   , w i k = v ) (u=w_{i_1},w_{i_2},\cdots,w_{i_{k}}=v) (u=wi1,wi2,,wik=v),其中 < w i j − 1 , w i j > ∈ E , 1 ≤ j ≤ k <w_{i_{j-1}},w_{i_{j}}> \in E,1 \le j \le k <wij1,wij>E,1jk

\quad 路径的长度 是路径上的边或弧的数目。

\quad 第一个顶点和最后一个顶点相同的路径称为 回路(Cycle)。

\quad 一条路径的顶点序列中,若不存在重复的顶点,则称该路径为 简单路径

\quad 除第一个顶点和最后一个顶点之外,其余顶点都不重复出现的回路称为 简单路径简单环

连通图

\quad 在无向图 G = ( V , E ) G=(V,E) G=(V,E) 中,若从顶点 u ∈ V u \in V uV 到顶点 v ∈ V v \in V vV 存在路径,则称顶点 u u u v v v连通 的。

\quad 在无向图 G = ( V , E ) G=(V,E) G=(V,E) 中,若任意两个顶点 v i , v j ∈ V v_i,v_j \in V vi,vjV 都是连通的,则称 G = ( V , E ) G=(V,E) G=(V,E)连通图(Connected graph)。

在这里插入图片描述
图 4 : 连 通 图   G 3 图4:连通图~G_3 4 G3

\quad 无向图中的 极大连通子图 称为 连通分量(Connected component)。
在这里插入图片描述

图 5 : 无 向 图   G 4   的 连 通 分 量 图5:无向图~G_4~的连通分量 5 G4 

\quad 在有向图 G = ( V , E ) G=(V,E) G=(V,E) 中,若对于任意两个顶点 v i , v j ∈ V , v i ≠ v j v_i,v_j \in V,v_i \ne v_j vi,vjV,vi=vj,从顶点 v i v_i vi 到顶点 v j v_j vj 和从顶点 v i v_i vi 到顶点 v j v_j vj 都存在路径,则称 G = ( V , E ) G=(V,E) G=(V,E)强连通图

\quad 有向图中的 极大强连通子图 称为 强连通分量

在这里插入图片描述

图 6 : 有 向 图   G 1   的 强 连 通 分 量 图6:有向图~G_1~的强连通分量 6 G1 

连通图的生成树

\quad 连通图的 极小连通子图 称为该连通图的 生成树。它含有图中全部的顶点,但只有足以构成一棵树的 n − 1 n-1 n1 条边。

注意

  • 若在一棵生成树上添加一条边,则必定构成一个环,因为这条边使得它依附的两个顶点之间产生了第二条路径。
  • 一棵有 n n n 个顶点的生成树有且仅有 n − 1 n-1 n1 条边。若一个图有 n n n 个顶点但边数少于 n − 1 n-1 n1,则该图不是连通图,因此没有生成树。
  • n − 1 n-1 n1 条边的图也不一定是生成树,因为图中可能有环。

有向树与生成森林

\quad 若一个有向图中恰好有一个顶点的入度为 0 0 0,其余顶点的入度均为 1 1 1,则是一棵
有向树

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

参考文献

[1] 严蔚敏, 李冬梅和吴伟民. 数据结构(C语言版). 第2版. 北京: 人民邮电出版社, 2011.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值