我正在尝试通过删除一条边来修复图形。我遇到的唯一问题是,例如图中有多个循环: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);
}
答案 0 :(得分:0)
要查找循环,您可能需要使用广度优先搜索(bfs)。
在未加权(或相等加权)图的受让人上使用bfs,则首次访问节点是到达该节点的最短路径。
如果您第二次访问它-您有一个周期。要删除它,可以通过删除第二条边来修改图形。