依据图描述的对称关系把图分为有向图和无向图。
无向图:
无向图表示的是一对实体之间的对称关系。
度:一个图的度是与一个顶点相邻的顶点的个数(不分出和入)。
路径:A与B之间的路径表示(A,B)。
简单路径:如果一条路径没有重复边,也没有重复顶点(例外:第一个顶点
可以与最后一个相同),则为简单路径。
连通:每一对顶点之间都有路径。
有向图:
有向图表示的是一组实体之间的非对称关系。
顶点的入度:是指指向该顶点的边的数目,也是与它
相邻的顶点的数量(与
无向图不一样)。
顶点的出度:是指该顶点出发的边的数量,也是它与之相邻的顶点的数量。
强连通:每一个顶点到其他每一个都有一条路径
弱连通:如果不计边的方向
图的表示和存储:
存储:采用的是链接矩阵和链接链表,邻接链表比矩阵省空间。表示
{A,{B,
C,
E}},
A的邻居
BCE。
图的遍历:(DFS和BFS)
无向图的DFS(并不一次将某点的邻居访问完,而是采用回退):假设从某点
A开始遍历,先按某种顺序(
eg:字母的顺序)选出
A的邻居中的其中一个代替
A,然后重复
A的操作,一直遍历到尽头
P顶点,然后开始回退,从
P点的前一个顶点
Q开始,按某种顺序,从
Q点还没有被遍历的邻居中选出一个顶点代替
Q,依次遍历到尽头,然后再从
Q的前一个顶点
(PQ都是在以
A为顶点的路径,例如以
A为顶点的路径是
ABCQP)开始回退。
无向图的BFS(一次将某点的邻居访问完,然后再进入下一个顶点):假设从某点
A开始遍历,先按某种顺序(
eg:字母的顺序)将
A点的邻居遍历完,然后按这种顺序从
A的邻居中选出下一个顶点
B替代
A,然后以
B为顶点重复
A的动作。然后再从
A的邻居(除去
B)中还没有被遍历的邻居中选出一个顶点替代
B,重复
A的动作。
###可以选几个例子练练手!!!!
遍历驱动器:对于不连通的图
,当遍历在某个区域停止后,需要遍历驱动器来重启遍历,以保证每个顶点被遍历
遍历的总时间:
N+2E,
N个顶点
E条边,遍历和驱动的总时间:
2*(
N+E)
时间复杂度都是O(N+E)
有向图的遍历DFS和BFS与无向图的是一样的