(1):图基本定义和分类
图定义:是由顶点集合和顶点之间的边的集合组成,通常表示为G(V,E)(其中G表示图,V是G中顶点的集合,E是G中中得集合)
图1:为简单图结构
图2:关于图的四种表现形式(无向图,有向图,带权无向图,带权有向图)
Ps 1:带权重的边可以表示的是具体的量(如:距离,时间等)。
2:有向是指有方向(类似于矢量),无向中(如G1中0-1,1-0)顶点是相互连接的(0-1是等价于1-0的)。
Attention:两顶点之间不同方向边的权重可以不同(对于有权重值得图来说)。
(2):图数据的两种表示:
1:可以用二位数组来表示图(邻接矩阵):
1:无向图G1中某顶点到自己本身(如图中的0-0,1-1)一般标记为0,根据需要也可以标为1,而其他区域(如1-0等)中的1表示两个顶点有连接,0表示来两个顶点没有连接。
2:带权图(如G3,G4)的邻接矩阵中,不连通的顶点之间的边权值是正无穷(表示两顶点之间无法到达),一般来说也可以用远远大于其他有效边长的数字来代替不连通的顶点(如G4中1-0中的无穷大可替换为10000),主对角线是0(表示某顶点到自己的边长是0),而其他区域(如1-1等)数值为连接两个顶点的边全值。
3:无向图矩阵一般是以主对角线对称的(因为无向图的0-1和1-0是等价的)
2:可以使用链表来表示图(邻接表):
(它是一种顺序和链式相结合的储存结构)
右图中的链表黄色字体中的0,2,3表示表头0后有2,3对应的指针,这在左图中也清晰地表达了。而黄色字体中的2和3后面的数字15,20则是在节点结构中增加的额外数据域中存储的权值。
(3):图的另一种分类
图又可以定义为稀疏图或稠密图
若即边的条数远远小于顶点数量的平方,则称为稀疏图
若即边的条数约等于顶点数量的平方,则称为稠密图
一般我们可以根据顶点和边的数量关系来选择邻接矩阵或邻接表来储存图数据:
1:若判断图为稀疏图则可以用邻接表的形式表示图
2:若判断图为稠密图则可以用邻接矩阵的形式表示图
主要目的:较大的提高图的存储效率