《算法笔记》第十章——图 学习记录

图由顶点(Vertex)和边(Edge)组成,每条边的两端都必须是图的两个顶点(可以是相同的顶点)。而记号G(V,E)表示图G的顶点集为V、边集为E。

顶点和边都可以有一定属性,而量化的属性称为权值,顶点的权值和边的权值分别称为点权和边权。权值可以根据问题的实际背景设定,例如点权可以是城市中资源的数目,边权可以使两个城市之间来往所需要的时间或花费。

图的遍历是指对图的所有顶点按一定顺序进行访问,遍历方法一般有两种:深度优先搜索(DFS)和广度优先搜索(BFS)。

连通分量。在无向图中,如果两个顶点之间可以相互到达(可以是通过一定路径间接到达),那么就称这两个顶点连通。如果图G(V,E)的任意两个顶点都连通,则称图G为连通图;否则,称图G为非连通图,且称其中的极大连通子图为连通分量。

强连通分量。在有向图中,如果两个顶点可以各自通过一条有向路径到达另一个顶点,就称这两个顶点强连通。如果图G(V,E)的任意两个顶点都强连通,则称图G为强连通图;否
则,称图G为非强连通图,且称其中的极大强连通子图为强连通分量。

为了叙述上的方便,下面把连通分量和强连通分量均称为连通块。可以想象,如果要遍历整个图,就需要对所有连通块分别进行遍历。所以DFS遍历图的基本思路就是将经过的顶点设置为已访问,在下次递归碰到这个顶点时就不再去处理,直到整个图的顶点都被标记为已访问。

如果已知给定的图是一个连通图,则只需要一次DFS就能完成遍历。

posted @ 2021-02-28 16:52  Dazzling!  阅读(46)  评论(0编辑  收藏  举报