图的种类及储存方式
一.图的种类(以下的分类不是并列的)
1.有向图:图中边的方向是一定的,不能逆序走。
2.无向图:图中的边没有方向,可以逆序走。没有正负方向
3.完全图:完全图:对于顶中的每一个顶点,都与其他的点有边直接相连
无向完全图:任意一个具有n个结点的无向简单图,其边数小于等于n*(n-1)/2;我们把边数恰好等于n*(n-1)/2的n个结点的无向图称为完全图。
有向完全图:在一个n个结点的有向图中,最大边数为n*(n-1)。
4.稀疏图和稠密图:一般的对于一个图来说,边的数目多的就是稠密图,边的数目少的就是稀疏图。
5.二部图与完全二部图(二部图也就是二分图)
二分图的概念:简而言之,就是顶点集V可分割为两个互不相交的子集,并且图中每条边依附的两个顶点都分属于这两个互不相交的子集,两个子集内的顶点不相邻。
两个子集:A,B;
性质满足:A∩B=∅,A∪B=V,这就是二分图。
6.图的生成树:把图中的n个点,和图中的n-1条边挑出来,如果这n-1条边能把这n个点连起来,那这就是图的一个生成树
7.有向网,无向网:网就是加权的图
8.活动网络:AOV图:顶点是活动,有向边表示活动之间的前驱后继关系--拓扑排序
AOE图:E,也就是用边表示活动,用边表示的目的是利用边的权值,比如用边的权值表示最长时间--关键路径
二: 图的存储表示
1. 邻接矩阵
也就是用jz[i][j]表示i--j的连通情况,可以表示权值,也可以表示是否连通。
2.邻接表:就是把同一个顶点出发的边的链接储存在同一个边链表中,边链表的每一个结点代表一条边,称为边结点,边结点包括的信息可以自己确定。
一种方法:g[i][j]代表从i出发的第j条边的编号,对应着edge数组中的储存着边的信息,可以直接从g[i]得到从i出发的边的数目。
另一种就是边表了。
3.边表:就不介绍了,因为一直以来我都是用“邻接矩阵”和“边表”的,比较熟悉