OGDF バージョン 2012.07 を使用しています。
Graph インスタンスのコピーを表す GraphCopy があります。グラフのコピーを操作するときに、元のノードとエッジへの参照を保持します。GraphCopyのドキュメントでは、次のように述べています。
エッジ分割をサポートするグラフのコピー。
クラスGraphCopyは、グラフのコピーを表し、元のグラフのノードとエッジとコピーとの間のマッピングを維持します。
[...]
次のように文書化されているogdf::GraphCopy::newEdge(edge eOrig)メソッドがあります。
元のエッジeOrigで新しいエッジ ( v,w ) を作成します。
メソッドは次のように実装されます。
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;
}
2 番目のアサーションでは、元のグラフのエッジeOrigの関連付けられたエッジ コピーの数はゼロでなければなりません。これは、エッジ コピーが削除された場合にのみ可能です。グラフ コピーのエッジは、元のグラフの対応する元のエッジに関連付けられます。したがって、m_eCopy[eOrig].empty()
すべてのエッジに対して false です。
元のグラフを変更せずに、グラフのコピーでエッジを複製するにはどうすればよいですか?