你好,我需要帮助的一个问题,实现了减少边缘。
bool reduction();
如果一个顶点u只有一条到另一个顶点s的出弧和至少一条入弧,那么我们将用**(p,s)替换所有形式为(p,u)的弧,如果它们存在的话,然后我们删除顶点u**和所有与它相邻的弧。
我们执行对称运算,其中顶点u只有一条入弧和至少一条出弧。
下面是我课程的简要介绍:
template <class T>
class Digraph
{
public:
Digraph();
~Digraph();
bool acyclic(T u, T v) const;
bool reduction();
private:
std::map<T, std::set<T>> graphe;
}
/*
Here s an exemple of adjacency list
0 : 5
1 : 0, 2, 6, 7
2 :
3 : 2, 4, 8, 9
4 : 10, 13
5 : 1
6 : 11
7 : 3
8 : 13
9 : 13
10 : 4
11 : 5, 7, 11, 12
12 : 7, 13
13 :
*/
有人能帮我实现吗?一些提示,或者其他什么?非常感谢
编辑:
应该做多少次迭代的减少?直到不能做更多?
- 进行复位,直至无法复位。
应从哪个顶点开始缩减?
- 从任意顶点开始(例如,将此约束更改为具有最大出/入度的顶点非常简单)
1条答案
按热度按时间cuxqih211#
我们不知道你的方法(布尔非循环(Tu,Tv)常数;)做,我们需要看到你的代码,所以我们将看到如何使用它,因为你说“我没有权利添加结构到我的类”.