一、图概述
对图的描述有两个参数:点个数(vertex)与边数(edge)。若两节点间有边将二者相连,则称两点邻接(adjacency),点与该边成为关联(incidence)。
图又分为有向图和无向图,若一张图中每条边都具有方向,则该图为有向图 ,否则是无向图。
二、路径
1.简单路径
将每个节点均遍历一次的路径为简单路径:
2.简单环路
依次遍历每个节点并最终回到初始位置的路径为简单回路
3.欧拉环路
可经过每条边各一次的回路
4.汉密尔顿回路
可经过每个节点各一次的回路
三、图的表示方法
1.邻接矩阵
以矩阵形式表示各个顶点的连接关系。
若该图有n个节点,则生成n行n列矩阵,i行j列用0/1表示节点i与j是否有邻接关系。
2.关联矩阵
一个有n个节点与e条边组成的图可由n行e列矩阵表示。若一个节点与一条边有关联关系,则该隔填入1,否则为0。不难得出,关联矩阵中,没列有且仅有两个1。
三、实现方法
1.相邻矩阵的表示
n个n维向量组成邻接矩阵,用上述方法表示完整的图。
2.相邻顶点查找
查找相邻顶点时,只需搜索该顶点所在行中下一个‘1’所在的位置即可。
int nextNbr(