c++ 减少邻接表有向图的边数

lx0bsm1f  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(138)

你好,我需要帮助的一个问题,实现了减少边缘。

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 :     
    */

有人能帮我实现吗?一些提示,或者其他什么?非常感谢

编辑:

应该做多少次迭代的减少?直到不能做更多?

  • 进行复位,直至无法复位。

应从哪个顶点开始缩减?

  • 从任意顶点开始(例如,将此约束更改为具有最大出/入度的顶点非常简单)
cuxqih21

cuxqih211#

我们不知道你的方法(布尔非循环(Tu,Tv)常数;)做,我们需要看到你的代码,所以我们将看到如何使用它,因为你说“我没有权利添加结构到我的类”.

相关问题