有向图中的前后边
back and forward edges in directed graph
本文关键字:有向图 更新时间:2023-10-16
我是新来的图论。我正在写一个代码来找到所有的前向和后向图边。我搜索并实现了如下代码。我的代码进入了无限循环。请您看一下。我们将非常感谢您。
void dfsVisit(u)
{
u->color="gray";
u->time=count;
count++;
for(every child node v of u)
{
if(v->color == "black")
{
if(u->time < v->time)
cout<<"Edge "<<u<<"->"<<v<<" is forward edge"<<endl;
else
cout<<"Edge "<<u<<"->"<<v<<" is cross edge"<<endl;
}
if(v->color == "gray")
cout<<"Edge "<<u<<"->"<<v<<" is back edge"<<endl;
if(v->color == "white")
cout<<"Edge "<<u<<"->"<<v<<" is tree edge"<<endl;
dfsVisit(v);
}
u->color="black";
u->time=count;
count++;
}
我发现你的代码有两个可能的问题:
-
无论孩子的颜色如何,都调用
dfsVisit
。您将其缩进到更深的层次,但是没有在白色if周围添加任何括号——基于此伪代码,只有cout
受到if语句的影响。但是,由于这只是一个伪代码,您应该将您编写的原始c++代码张贴出来,以便清楚。 -
您的条件中有三种颜色(灰色,黑色和白色),但您从未在任何地方设置白色。在调用
dfsVisit
之前,你的边初始化为白色?(你应该考虑使用enum或enum类来表示颜色,这样更干净,而且你不太可能因为拼写错误而导致错误)
相关文章:
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- C++创建指向有向图中节点的指针数组
- 如何仅在 2 个节点之间获取最短路径,给定邻接列表有向图?
- 有向图 - 如何计算图中彼此顶点可到达的顶点数?
- C++计算有向图中的最短路径
- 使用非递归 DFS 检测有向图中的周期
- 如何将这些节点连接为有向图
- 如何使用广度优先搜索确定是否可以在有向图中到达顶点
- 在有向图中精确访问所有节点一次
- 在有向图中查找第二条最短路径
- 关于如何处理有向图的一个想法
- 找到有向图C 的最短路径
- 分析输入文件以创建有向图C++
- 在使用无序多映射实现的有向图中查找循环
- 如何找到在c++中实现的有向图的所有路径作为邻接列表
- 如何创建具有多个数据的节点的有向图
- 有向图中的广度优先搜索
- 查找路径的有向图邻接矩阵
- 从文件构建有向图
- 柠檬图库C++ - 有向图