查找周期深度优先搜索

时间:2018-06-30 14:00:11

标签: c# graph depth-first-search

我正在尝试通过删除一条边来修复图形。我遇到的唯一问题是,例如图中有多个循环:0 3,2 3,0 2,1 2,31。这可以通过提取3 1来解决,但是我该如何让程序号3 1是必须去除的边缘吗?

有什么建议吗? :)

注释中的格式化代码...

...
else if (backedges.Count > 1) 
{ 
    foreach (Side side in backedges) 
    {
        Node end = Side.node2; 
        Node begin = Side.node1; 
        List<Side> allsidesycle = new List<Side>();
        while (begin != Side.node2) 
        {
            end = begin;
            begin = begin.pi; 
            Side be = new Side(begin, end); 
            allsidescycle.Add(be); 
        }

1 个答案:

答案 0 :(得分:0)

要查找循环,您可能需要使用广度优先搜索(bfs)。
在未加权(或相等加权)图的受让人上使用bfs,则首次访问节点是到达该节点的最短路径。
如果您第二次访问它-您有一个周期。要删除它,可以通过删除第二条边来修改图形。