图的基本概念和结论
- 图是由顶点集V与边集E组成,例如G=(V,E),V={A,B,C},E={(A,B),(A,C)};
- 图的V是有限非空的,图的E可以是空的;
- 无向图的边集是用()表示,有向图的边集是用<>表示;
- 简单图无重复边,不存在结点到自身的边;多重图与简单图刚好相反;
- 无向完全图:任意两个顶点之间都存在边;有向完全图:任意两个顶点之间都存在方向相反的弧。
- 强连通与连通
- 在保证连通或者强连通的情况下,尽可能的包含进点以及点对应的边。当无法再吸收点时,此时的无向图或者有向图就是极大连通子图or极大强连通子图。
- 当原图就是连通图or强连通图时,极大连通子图就是原图;当原图不是连通图or强连通图时,极大连通子图有多个。 (以下一句百度百科、严书皆是这个说法,网上的一些文章只把非连通图的极大连通子图当作连通分量)无向图的极大连通子图 == 连通分量,有向图的极大连通子图 == 强连通分量。
- 极小连通子图:保证连通的情况下,包含所有的点以及最少的边,注意有向图不考虑极小连通子图。
图的存储结构
图的邻接矩阵法
邻接矩阵法
十字链表
解释一波:实际有多少边,就会有多少边表结点
(1). tailvex是边尾;
(2). headvex是边头;
(3). hlink指向边头结点相同的结点;
(4). tlink指向边尾结点相同的结点。
邻接多重表
解释一波:实际有多少边,就会有多少边表结点
(1).ivex是边的一段,一般与顶点表下标相同;
(2). jvex是边的另一端;
(3). ilink指向ivex结点相同的结点;
(4). jlink指向jvex结点相同的结点。