我正在研究修改后的TopSort算法,并且无法查找/创建用于测试的大型(超过1000个节点)有向非循环图。我有一个来自另一个项目的无向样本图,它具有良好的大小,但有很多周期。是否有一种算法可以用来指导边缘,以便不再有周期?
答案 0 :(得分:4)
this提供了获取非循环图的方法。基本上,图遍历会生成一个树,该树定义原始节点上的部分顺序。然后,只需指向所有边缘,使它们根据部分顺序指向一致的方向,或者指向未排序的2个元素(这些元素可以指向任何方向)。
答案 1 :(得分:0)
为了让新的有向图连接,我会使用如下的第一个搜索。
old_undirected graph G
new_directed graph D
dequeue Q
v is any node in G
add v to D
Q.push_back(v)
while(Q is not empty):
v = Q.pop_front()
for all neighbors u to v:
if u in D
add edge u->v to D
else
add u to D and add edge v->u to D
Q.push_back(u)
return D
此图表应包含原始图表的所有边缘,但应该如此指示,以便不会有任何圆圈。
答案 2 :(得分:-1)
您希望将图表转换为根树林。对图的每个组件进行广度优先或深度优先的图遍历。在遍历期间,在父子顶点之间创建有向边。