c++ - 在 ogdf::GraphCopy 中复制一条边

标签 c++ graph

我使用的是 OGDF 2012.07 版。

我有一个 GraphCopy,它表示 Graph 实例的拷贝。在对图形拷贝进行操作时,它会保存对原始节点和边的引用。在documentation of GraphCopy ,它说:

Copies of graphs supporting edge splitting.

The class GraphCopy represents a copy of a graph and maintains a mapping between the nodes and edges of the original graph to the copy and vice versa.

[...]

有一个方法ogdf::GraphCopy::newEdge(edge eOrig)记录如下:

Creates a new edge (v,w) with original edge eOrig.

方法实现如下:

edge GraphCopy::newEdge(edge eOrig)
{
    OGDF_ASSERT(eOrig != 0 && eOrig->graphOf() == m_pGraph);
    OGDF_ASSERT(m_eCopy[eOrig].empty()); // no support for edge splitting!

    edge e = Graph::newEdge(m_vCopy[eOrig->source()], m_vCopy[eOrig->target()]);
    m_eCopy[m_eOrig[e] = eOrig].pushBack(e);

    return e;
}

在第二个断言中,原始图中边 eOrig 的关联边拷贝数必须为零,这只有在删除边拷贝时才有可能,因为最初(当GraphCopy 是用原始图初始化的)图拷贝中的所有边都与原始图中相应的原始边相关联;因此,m_eCopy[eOrig].empty() 对所有边都是假的。

我应该如何在不更改原始图形的情况下复制图形拷贝中的边

最佳答案

我无法理解您对实现的解释。当我浏览源代码时 GraphCopy.h在 OGDF 网站上(上面写着 2012.07.),我看到了完全不同的类(class)。有一个类 GraphCopy(它是支持边分割的派生 GraphCopy 类的接口(interface))和另一个不支持边分割的类 GraphCopySimple

所以我的建议是检查您是否真的拥有正确的版本。

GraphCopySimple 中的方法 newEdge(edge eOrig) 看起来就像您想要的那样:

edge newEdge(edge eOrig) {
    OGDF_ASSERT(eOrig != 0 && eOrig->graphOf() == m_pGraph);
    edge e = Graph::newEdge(m_vCopy[eOrig->source()], m_vCopy[eOrig->target()]);
    m_eCopy[m_eOrig[e] = eOrig] = e;
    return e;
}

但是还有一个问题。 GraphCopySimple 没有构造函数的实现,所以我猜它意味着抽象基类,因此您需要派生自己的 GraphCopy 类并实现缺少的函数。

关于c++ - 在 ogdf::GraphCopy 中复制一条边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11865847/

相关文章:

java - 荣格2 : How to implement displaying details of a node on mouse over of a Node?

javascript - 如何使d3路径描边变为内部曲线?与 "cardinal-closed"插值相反

c++ - 是否可以将其分配给构造函数中的静态指针,如此处示例所示

c++ - 错误 C2995 : Function template has already been defined. 未发现循环

c++新手-pthread将其状态提供给另一个pthread

algorithm - 创建从根连接的有向图所需的最小边数

javascript - 如何在折线图中添加多种背景颜色

c++ - 如何在我的代码中包含负值?数制转换

c++ - std::stringstream 的小数点?

python - 如何在python中创建具有负边权重的随机单源随机无环有向图