一、图的基本概念
二、图的存储结构
三、图的遍历
四、图的各种应用算法
一、图的基本概念
1.图
是由顶点集合及顶点间的关系集合组成的一种数据结构。
(1)无向图:
顶点对(v,w)称为与顶点v和顶点w相关联的一条边。若这条边没有特定的方向,即(v,w)与(w,v)是同一条边,这样的图称为无向图(Undirected Graph)。
(2)有向图:
顶点对(v,w)称为顶点v到顶点w的一条有向边,即(v,w)与(w,v)是两条不同的边,这样的图称为有向图(Directed Graph)。
2.邻接顶点
3.完全图
4.子图
5.顶点的度
(1)度
(2)出度
(3)入度
6.权和网
与图的边或弧相关的数,称为权(weight)。权可以表示实际问题中从一个顶点到另一个顶点的距离、花费的代价、所需的时间等。
带权的图叫做网(Network)。
7.路径
(1)路径和路劲长度
(2)简单路径和回路
8.图的连通性
(1)连通图与连通分量
(2)强连通图与强连通分量
9.生成树
一个连通图的生成树是它的极小连通子图。
二、图的表示与存储结构
4种常用的存储结构是数组、邻接表、十字链表和邻接多重表
1.数组表示法
无向图的邻接矩阵是一个对称矩阵,顶点vi的度为邻接矩阵中第i行或第i列的元素之和。
对于有向图,其邻接矩阵不一定是对称矩阵,顶点vi的出度为第i行的元素之和,入度为第i列元素之和。
2.连接表
是图的一种链式存储结构。在邻接表存储结构中,用头结点数组存放图中的所有顶点信息,边链表存放依附于某一顶点的边。
3.十字链表
4.邻接多重表
三、图的遍历算法
图的遍历需要注意三个问题:
第一,图的特点是没有首尾之分,所以要指定访问的第一个顶点;
第二,图中可能存在回路,从而产生遍历中的死循环情况,所以设计遍历方法要考虑遍历路径可能的回路问题;
第三,图的任一顶点都可能与其他顶点相通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过的顶点,所以对访问过的结点加标记以避免重复访问。
四、