C# 查找周期深度优先搜索

C# 查找周期深度优先搜索,c#,graph,depth-first-search,C#,Graph,Depth First Search,我试图通过删除一条边来修复图形。我遇到的唯一问题是,当图形中有多个循环时,例如:03、23、02、12、31。这可以通过提取3 1来解决,但是如何让程序确定3 1是必须删除的边 有什么建议吗?:) 注释中的格式化代码… 。。。 else if(backedges.Count>1) { foreach(后缘中的侧边) { 节点端=Side.node2; 节点开始=Side.node1; List allsidesycle=新列表(); while(begin!=Side.node2) { 结束=

我试图通过删除一条边来修复图形。我遇到的唯一问题是,当图形中有多个循环时,例如:03、23、02、12、31。这可以通过提取3 1来解决,但是如何让程序确定3 1是必须删除的边

有什么建议吗?:)

注释中的格式化代码…

。。。
else if(backedges.Count>1)
{ 
foreach(后缘中的侧边)
{
节点端=Side.node2;
节点开始=Side.node1;
List allsidesycle=新列表();
while(begin!=Side.node2)
{
结束=开始;
begin=begin.pi;
be侧=新侧(开始、结束);
allsidescycle.Add(be);
}

要查找周期,您可能需要使用广度优先搜索(bfs)。
在未加权(或等权)图上使用bfs,则第一次访问节点是到该节点的最短路径。

如果您第二次访问它-您有一个循环。要删除它,请通过删除第二条边修改图形。

您可以使用Dijkstra。当您到达已访问的节点时,您可以删除访问节点的路径。到目前为止您做了什么?向我们显示您的代码。否则如果(backedges.Count>1){foreach(后缘中的侧边){Node end=Side.node2;Node begin=Side.node1;List allsidesycle=new List();while(begin!=Side.node2){end=begin;begin=begin.pi;Side be=new Side(begin,end);allsidescycle.Add(be);}因此,我在所有边上循环,但我得到一个begin=begin.pi的空引用。使用问题下方的链接添加其他信息,尤其是代码。它在注释中显示不好…还可以查看有关询问完整问题的信息: