1

グラフの例:

ListDigraph G;

ListGraph::Node A = G.addNode();
ListGraph::Node B = G.addNode();
ListGraph::Node C = G.addNode();
ListGraph::Node D = G.addNode();

ListGraph::Edge AB = G.addEdge(A,B);
ListGraph::Edge AC = G.addEdge(A,C);
ListGraph::Edge AD = G.addEdge(A,D);
ListGraph::Edge BC = G.addEdge(B,C);
ListGraph::Edge BD = G.addEdge(B,C);
ListGraph::Edge CD = G.addEdge(C,D);

たとえば、2 つのノード (A と C) を取り、これらの 2 つのノードを接続するエッジの ID を返すメソッドが必要です (存在する場合)。

4

2 に答える 2

1

ノードを 1D 配列に、エッジを 2D 配列に格納できます。つまり、ノード A、B、C、および D の代わりに、 ~ を持つ配列を持ちNodes[0]ますNodes[3]。次に、エッジ AB を として保存できますEdge[0][1]。エッジを隣接行列として保存しているだけです。次に、次の呼び出しを使用して、エッジの ID を見つけることができますG.id(Edge[0][1])。これら 2 つのノード間にエッジが存在することを確認したい場合は、エッジの ID の絶対値がエッジの総数よりも小さいことを確認する必要があります。

if (abs(G.id(Edge[0][1])) < numberOfEdges)
    return true;
else
    return false;
于 2014-06-25T14:23:04.433 に答える