数据结构 — 图的概述

一、基础知识


1、欧拉闭迹:每个顶点的度均为偶数,才可能存在从任意顶点出发,经过所有边恰好一次,并最终回到出发顶点的走法。

2、定义:图G = (V,E)由有穷非空集合V(G)-> 顶点(vertex) 和 有穷允空集合E(G) -> 边(edge)构成。

3、分类:无向图 ->(v0,v1)和(v1,v0)表示同一条边,有向图 ->(v0,v1)表示顶点v0为尾,顶点v1为头的边,即v0指向v1。

4、概念:

1)限制:(1)不能有自身环 (2)同一条边在图中不能出现两次或者两次以上即多重图

2)完全图:具有边数最多的图,对于n个顶点的无向图,边数为 n*(n-1)/2;对于n个顶点的有向图,边数为n(n-1)。

3)边(v0,v1)与v0和v1关联;边(v0,v1)、(v0,v2)和(v0,v3)关联于 v0。

4)简单路径:路径上除了起点和终点可能相同外,其余顶点都互不相同。环路(回路)是起点和终点相同的简单路径。

5)连通分支,即分支,无向图中的极大连通子图;有向图G每对不同的顶点vi和vj,都存在vi到vj 以及vj到vi的有向路径则为强连通;强连通分支是有向图的极大强连通子图。

6)顶点的度(degree)是关联与该顶点的边的条数;入度(in-degree)定义为  箭头指向v的边数;出度(out-degree)相反;

7)   边(edge)带权值(weight)的图成为网络(network)。


二、图的存储(之后要写几个示例,这里用文字简单说说)

(1)邻接矩阵 (2)邻接表(适合稀疏图)(3)逆邻接表(方便求顶点的度)(4)邻接多重表(方便找到第二顶点和标记扫过的边)


三、图的连通性


1、连通

在无向图G中,v0 与 v1 之间存在一条路径,称v0 与 v1 是连通的;G为无向图,所以必然存在一条v0到v1的路径;当任意两个节点vi 与 vj之间都存在一条路径,则称无向图G是连通的。

2、连通分支

在无向图G中,一个极大连通子图则称为无向图G的连通子图。

3、强连通

在有向图G中,任意两个节点vi与 vj之间 可以任意到达(vi -> vj 或 vj ->vi)则称该有向图G是强连通的。

4、强连通分支

强连通分支时有向图的极大强连通子图。

5、关节点

在图G中,存在节点v ,当删除该节点以及关联在该节点上的所有边后,得到的图G’至少包含两个连通分支,那么该节点v 则成为图G 的关节点。

6、双连通图

双连通图是没有关节点的连通图。

7、双连通分支

在图G中一个最大的双连通子图。

8、求解图的双连通分支的思路

1)最大的双连通子图 -> 双连通图 -> 关节点

2)如果顶点v是深度优先生成树的根结点,且v至少有两个儿子,则v为关节点;如果v 不是生成树的根节点,那么当且仅当v有个儿子w,使得low(w)>= dfn(v),则v为关节点。

注释:

dfn(v):深度优先编号,在深度优先搜索过程中被访问的顺序。

low(v):从v 出发,经过一条由w形成的路径 和 一条回退边所能到达的具有最小深度优先编号的  顶点的编号。(说白了就是,他儿子节点能回到的最小深度优先编号,如果比他大,说明该点是关键点)

你可能感兴趣的:(数据结构,图)