做过笔试的同学应该知道,数据结构比较常考的除了栈,还有一个数据结构就是图。所以本篇文章就是用来理清图的一些简单的知识点。
无点不成图,说明图可以没有边,但不可无点。
以无向图为例
邻接矩阵(二维数组)
无向图邻接矩阵是对称的,且顶点的度=某行或者某列非0元素的个数。
邻接表
只存放有连接的边。节省内存,适合顶点数目较多的场景。List
可实现。每一个List集合存放每个顶点到其它顶点的信息,Node包含顶点的编号和边的权值
针对无向图:连通分量
针对有向图:强连通分量
所谓的(强)连通分量是指,你这个子图,一旦加入其它不在该子图的点,则该子图就不连通。
无向所有顶点的度之和为偶数,因为度=边数*2
有向图所有点的入度之和=出度之和
n个节点的完全有向图含有边的数目为n*(n-1),每两点之间有两条边相互指向对方,n-1代表每个点有多少条边指向该点(也可以反过来,指向其它点的边)然后有n个点,所以的证。
完全无向图:由于任意两点都有边,从而可得边数为n*(n-1)/2,推导如下,也可以理解为完全有向图的一半
n-1 + n-2 + n-3 +...+2+1
n个点的无向连通图的最少边数:n-1。但是如果要求图在任何情况下都是连通的,需要的最少边为:(n-1)*(n-2)/2 + 1,其实就是n-1个点的完全无向图的边数+1,这样就能保证绝对连通。
n个点的有向连通图的最少边数:n,首尾相连
设无向图 G 中有 n 个顶点,则该无向图的最小生成树上有n-1条边。
例题
例题
例题