问答题 已知一具有n个顶点的有向图G=(V,E)采用邻接表存储方法,请写一算法,检查任意给定序列v 1 ,v 2 ,…,v n ,(v i ∈V,1≤i≤n)是否为该有向图的一个拓扑序列。若是,算法给出信息是1,否则,给出信息0。【北京航空航天大学2005三(10分)】
【正确答案】正确答案:设“任意给定序列v 1 ,v 2 ,…,v n ”存在一队列中,再设一栈存放入度为0的顶点。队列中元素出队,与栈中元素比较(尽管栈具有后进先出的性质,但是入度为0的顶点并无先后次序,故栈中所有元素都可以和队头元素比较),若比较相等,则出队,删除栈中匹配元素,被删元素要按拓扑排序办法处理(即从其发出的所有弧头顶点的入度均减1,减成0则弧头顶点入栈)。如此进行下去,直至所有队空和栈空,结论为给定序列是该有向图的一个拓扑序列。若在比较过程中,任意阶段发生队头与栈中元素不等,则给定序列不是该有向图的一个拓扑序列。
【答案解析】