用DFS遍历一个无环有向图,并在DFS算法退栈返回时打印相应的顶点,则输出的顶点序列是( )
A.逆拓扑有序
B.拓扑有序
C.无序的
正确答案是 A
DFS是一个递归算法,在遍历的过程中,先访问的点被压入栈底。拓扑有序是指如果点U到点V有一条弧,则在拓扑序列中U一定在V之前.深度优先算法搜索路径恰恰是一条弧,栈的输出是从最后一个被访问点开始输出,最后一个输出的点是第一个被访问的点.所以是逆的拓扑有序序列
Aaaaaa
栈先入后出
首先说下这个拓扑有序,说明这个图得到的拓扑唯一。如上面这个图的拓扑就是一个有序的。言归正传:首先这个有向无环图的深度遍历得到的序列是不唯一的。比如从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。所以说这哥深度优先遍历算法中退栈次序是逆拓扑有序。
请写出以下代码执行输出:(构造函数、静态块执行顺序)
某公园内有个奇怪的摊主小周,他只在星期一、星期二、星期三、星期五和星期六工作,而且他只出售4种商品:玩具汽车、充气气球、橡皮泥和遥控飞机。<
B2C网站上促销价格出错了,如何做危机公关?
什么是 Cookie?它的作用是什么?
Aaaaaa
栈先入后出
首先说下这个拓扑有序,说明这个图得到的拓扑唯一。如上面这个图的拓扑就是一个有序的。
言归正传:首先这个有向无环图的深度遍历得到的序列是不唯一的。比如从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。所以说这哥深度优先遍历算法中退栈次序是逆拓扑有序。