算法复习——图算法篇之图的基本概念

算法复习——图算法篇之图的基本概念

以下内容主要参考中国大学MOOC《算法设计与分析》,墙裂推荐希望入门算法的童鞋学习!

1. 图的概念

1.1 图的定义

  • 可以表示为一个二元组 G = < V , E > G = <V, E> G=<V,E>,其中
    • V V V表示非空顶点集,其元素称为顶点(Vertex)
    • E E E表示边集,其元素称为(Edge)
  • e = ( u , v ) e = (u, v) e=(u,v)表示一条,其中 u ∈ V u \in V uV, v ∈ V v \in V vV, e ∈ E e \in E eE

1.2 相邻与关联

  • 相邻(Adjacent)
    • ( u , v ) (u, v) (u,v)连接的顶点 u u u v v v相邻
  • 关联(Incident)
    • ( u , v ) (u, v) (u,v)和其连接的顶点 u u u(或 v v v)相互关联

1.3 度

  • 顶点的度(Degree of a Vertex)
    • 顶点 v v v的度 d e g ( v ) deg(v) deg(v) v v v关联的边数
  • 图的度(Degree of a Graph)
    • G = < V , E > G = <V, E> G=<V,E>的度,是图各顶点的度之和, d e g ( G ) = ∑ v ∈ V d e g ( v ) deg(G) = \sum_{v \in V}deg(v) deg(G)=vVdeg(v)
  • 握手定理(Handshaking Lemma)
    • 无向图的度是边数的两倍, d e g ( G ) = 2 ∣ E ∣ deg(G)=2|E| deg(G)=2E
    • 证明:因为边 e = ( u , v ) e=(u,v) e=(u,v) d e g ( u ) deg(u) deg(u) d e g ( v ) deg(v) deg(v)中各被计算一次,所以每条边为图的度贡献为2, d e g ( G ) = ∑ e ∈ E 2 = 2 ∣ E ∣ deg(G)=\sum_{e \in E}2=2|E| deg(G)=eE2=2E

1.4 路径

  • 路径(Path)
    • 图中的一个顶点序列 < v 0 , v 1 , . . . , v k > <v_0, v_1, ..., v_k> <v0,v1,...,vk>称为 v 0 v_0 v0 v k v_k vk的路径
    • 路径包含顶点 v 0 , v 1 , . . . , v k v_0, v_1, ..., v_k v0,v1,...,vk和边 ( v 0 , v 1 ) , ( v 1 , v 2 ) , . . . , ( v k − 1 , v k ) (v_0, v_1), (v_1, v_2), ..., (v_{k-1}, v_k) (v0,v1),(v1,v2),...,(vk1,vk)
    • 存在路径 < v 0 , v 1 , . . . , v k > <v_0, v_1, ..., v_k> <v0,v1,...,vk>,则 v 0 v_0 v0可达 v k v_k vk
    • 如果 v 0 , v 1 , . . . , v k v_0, v_1, ..., v_k v0,v1,...,vk互不相同,则该路径是简单

1.5 环路

  • 环路(Cycle)
    • 如果路径 < v 0 , v 1 , . . . , v k > <v_0, v_1, ..., v_k> <v0,v1,...,vk> v 0 = v k v_0 = v_k v0=vk至少包含一条边,则该路径构成环路
    • 如果 v 1 , v 2 , . . . , v k v_1, v_2, ..., v_k v1,v2,...,vk互不相同,则该环路是简单
  • 无环图(Acyclic Graph):图中不存在环路

1.6 连通

  • 连通(Connectivity)
    • 如果图的任意对顶点互相可达,则称该图是连通的,反之称为非连通
  • 连通分量(Connected Components)
    • 根据是否连通将顶点进行分组相互可达的顶点集称为连通分量

1.7 子图

  • 子图(Subgraph)
    • 如果 V ′ ⊆ V , E ′ ⊆ E V' \subseteq V, E' \subseteq E VV,EE,则称图 G ′ = < V ′ , E ′ > G'=<V', E'> G=<V,E>是图 G G G的一个子图
  • 生成子图(Spanning Subgraph)
    • 如果 V ′ = V , E ′ ⊆ E V' = V, E' \subseteq E V=V,EE,则称图 G ′ = < V ′ , E ′ > G'=<V', E'> G=<V,E>是图 G G G的一个生成子图

1.8 树

  • (Tree)
    • 连通无环 T = < V T , E T > T=<V_T, E_T> T=<VT,ET>,树有 ∣ V T ∣ − 1 |V_T|-1 VT1条边
  • 森林(Forest)
    • 一至多颗树组成的无环图

2. 图的表示

2.1 邻接链表

  • G = < V , E > G=<V, E> G=<V,E>,其邻接链表由 ∣ V ∣ |V| V条链表的数组构成
  • 每个顶点有一条链表,包含所有与其相邻的顶点
  • 空间大小 O ( ∣ v ∣ + ∣ E ∣ ) O(|v|+|E|) O(v+E)

在这里插入图片描述

2.2 邻接矩阵

  • G = < V , E > G=<V, E> G=<V,E>的邻接矩阵由 ∣ V ∣ ∗ ∣ V ∣ |V|*|V| VV的二维数组 A A A构成,满足:
    A i j = { 1 , ( i , j ) ∈ E 0 , ( i , j ) ∉ E A_{ij}=\left\{ \begin{array}{rcl} 1, & & {(i, j) \in E}\\ 0, & & {(i, j) \notin E} \end{array} \right. Aij={1,0,(i,j)E(i,j)/E

  • 空间大小 O ( ∣ V ∣ 2 ) O(|V|^2) O(V2) O ( 1 ) O(1) O(1)判断是否有边

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值