一、图的存储
图的基本存储结构:邻接矩阵、邻接链表。
1-1、邻接矩阵
用矩阵来表示图中顶点之间的关系。
示例1:有向图的邻接矩阵
示例2:无向图的邻接矩阵
无向图的邻接矩阵是对称的!!!
借助邻接矩阵可以求得各个顶点的度:
无向图:
顶点Vi的度:邻接矩阵中,第i行(第i列)中1的个数;
有n个1,就有n/2条边!!!
即
图中有e条边,邻接矩阵中就有2e个1。
有向图:
顶点Vi的出度:邻接矩阵中,第i行中1的个数;
顶点Vi的入度:邻接矩阵中,第i列中1的个数;
有几个1,就有几条边!!!
即
图中有e条,邻接矩阵中就有e个1。
1-2、领接链表
为图的每一个顶点建立一个单链表。
示例1,有向图:
出度:单链表的节点个数。
入度:逆邻接表
逆邻接表,示例:
表节点个数 = e(边数)
示例2:无向图
二、稠密图、稀疏图
有很少条边或弧(边的条数|E|远小于|V|²)的图称为稀疏图(sparse graph),反之边的条数|E|接近|V|²,称为稠密图
2-1、稠密图
当图中的边的个数很多的时候,对应的图是稠密图,适合用邻接矩阵存储。
示例:
此时,对于无向图来说,边的个数(完全图),最多!!!
2-2、稀疏图
当图中的边的个数很少的时候,对应的图是稀疏图,适合用邻接表存储。
示例:
三、真题
真题1:
图中有e条边
无向图:邻接矩阵中有2e个1;
有向图:邻接矩阵中有e个1。
真题2:
邻接矩阵——稠密图(边数多)——完全图
邻接链表——稀疏图(边数少)
真题3:
真题4:
四、网
边带权值的图——网
示例: