图是由顶点的有穷集合和顶点之间的集合组成,通常表示为:G( V, E),其中,G表示一个图,V是G中顶点的集合(又穷非空集合),E是图G中边的集合(可以为空集)。并且,图是一种相较线性表和树更加复杂的数据结构。
图的分类:
无向图:图中任意两个顶点之间的边都是无向边(表示方法: (A, D)或者(D, A))
无向完全图:无向图中,任意两个顶点都存在边(边数:count = n*(n - 1)/2 )
有向图:图中任意两个顶点之间的边都是有向边(表示法<A, D>:A表示弧尾;D表示弧头 -> 注:顺序不能随便调换)
有向完全图:有向图中,任意两个顶点之间都存在方向互为相反的两条弧
简单图:图中,若不存在顶点到其自身的边,且同一条边不重复出现
稀疏图:有很少条边或者弧的图
稠密图:有很多条边或者弧的图 (相对于稀疏图来说)
网:带权的图
子图:假设两个图G = (V, {E})和G' = (V', {E'}),如果V'属于V,并且E'属于E则称G'为G的子图
图顶点与边之间的关系:
①无向图中,某一顶点的度为该顶点相关联的边的总数目TD(v)
②有向图中,某一顶点的度包括:入度ID(v)和出度OD(v)
③树的根结点和任意结点的路径是唯一的,但是图中顶点和顶点之间的路径是不唯一的
连通图相关定义:
无向图:连通图:任意两个顶点之间有路径
连通分量:无向图中的极大连通子图(子图、子图连通、子图含极大顶点数、含依附于顶点的所有边)
生成树:是一个极小的连通子图,含有图中全部n个顶点,和n-1条边
有向图:强连通图:任意两个顶点V和W之间存在V -> W和W -> V的弧
有向图的强连通分量:有向图中极大连通子图
有向树:有向图恰有一个顶点的入度为0,其余顶点的入度均为1
图的存储结构:
图的基本操作: