数据结构-图-图的遍历
用DFS遍历一个无环有向图,并在DFS算法退栈返回时打印相应的顶点,则输出的顶点序列是( )
A.逆拓扑有序
B.拓扑有序
C.无序的
正确答案是 A
DFS是一个递归算法,在遍历的过程中,先访问的点被压入栈底。拓扑有序是指如果点U到点V有一条弧,则在拓扑序列中U一定在V之前.深度优先算法搜索路径恰恰是一条弧,栈的输出是从最后一个被访问点开始输出,最后一个输出的点是第一个被访问的点.所以是逆的拓扑有序序列
假期
2021-02-10 23:10:33
Aaaaaa
企鹅哥哥
2018-10-13 10:49:37
栈先入后出
小茉莉
2018-10-13 10:49:27
首先说下这个拓扑有序,说明这个图得到的拓扑唯一。如上面这个图的拓扑就是一个有序的。言归正传:首先这个有向无环图的深度遍历得到的序列是不唯一的。比如从ABCD、ABDC、CBDA等这些都是这些。但是他们退栈确实相同的。A入栈然后看A有那个可以到达的访问B,然后查看B有没有哪个可以到达的访问。有D。看D还有没有哪个可以到达的访问。没有。D出站,看看B有没有哪个除了D可以访问的。没有退栈B。查看A还有没有除了B其他的访问的。有C,C入栈,看看C没有哪个除了BD可以访问的,没有退栈C,所以A还有没有除了BC可以到达的,没有退栈A。最后退栈的序列就是DBCA。同理可以验证其他几个最后退栈的序列都会DBCA。然后这个有向图的拓扑序列是ACBD。所以说这哥深度优先遍历算法中退栈次序是逆拓扑有序。
加载更多