数据结构7.3_图的遍历
我们希望从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次。 这一过程就叫做 图的遍历 。 图的遍历算法是求解 图的连通性问题 、 拓扑排序 和 求关键路径 等算法的基础。 然而,图的遍历要比树的遍历复杂得多。 因为图的任一顶点都可能和其余的顶点相邻接。 所以,在访问了某个顶点之后,可能沿着某条路径搜索之后,又回到该顶点上。 为了避免同一顶点被访问多次,在遍历图的过程中,必须记下每个已访问过的顶点。 为此,我们可以设一个辅助数组visited[0...n-1],它的初始值置为“假”或者零,一旦访问了顶点vi,便置visted[i]为“真”或者为被访问时的次序号。 通常有两条遍历图的路径:深度优先搜索和广度优先搜索。 它们对于无向图和有向图都适用。 =================================================== 深度优先搜索 (Depth First Search) DFS 这种遍历类似于树的先根遍历,是树的先根遍历的一种推广。 图(a) 是一张无向图 图(b)是深度优先搜索的过程 图(c)是广度优先搜索的过程 假设初始状态是图中所有顶点未曾被访问,则深度优先搜索可从图中某个顶点v出发,访问此顶点,然后依次从v的未被访问的邻接点出发深度优先遍历图,直至图中所有和v有路径相通的顶点都被访问到; 若此图中尚有顶点未被访问