4.11.4 頂点集合を使用した2部サブグラフの作成
2部サブグラフは、左側に使用される頂点(ノード)集合を指定して作成できます。2部サブグラフには、左側の頂点集合と右側の頂点集合の間にのみエッジがあります。左側の2つのノード間など、これらの集合内にエッジはありません。グラフ・サーバー(PGX)では、入力および出力エッジがすべて削除されたために分離された頂点は、2部サブグラフの一部ではありません。
次の図に、2部サブグラフを示します。プロパティは示していません。
次の例では、4つの頂点と4つのエッジで構成される単純なグラフから、2部サブグラフを作成します。4つの頂点の頂点ID値は、それぞれ99
、128
、1908
および333
です。頂点間のエッジ方向など、頂点とエッジのプロパティ値の詳細は、図4-5のフィルタ式についてを参照してください。
最初に頂点コレクションを作成し、その左側に頂点を追加する必要があります。この例では、頂点ID値が333
および99
の頂点が頂点コレクションの左側に追加されます。
シェルを使用した2部サブグラフの作成
opg4j> s = graph.createVertexSet() ==> ... opg4j> s.addAll([graph.getVertex(333), graph.getVertex(99)]) ==> ... opg4j> s.size() ==> 2 opg4j> bGraph = graph.bipartiteSubGraphFromLeftSet(s) ==> PGX Bipartite Graph named sample-sub-graph-4
Javaを使用した2部サブグラフの作成
import oracle.pgx.api.*; VertexSet<Integer> s = graph.createVertexSet(); s.addAll(graph.getVertex(333), graph.getVertex(99)); BipartiteGraph bGraph = graph.bipartiteSubGraphFromLeftSet(s);
サブグラフを作成すると、グラフ・サーバー(PGX)によって、頂点が左側にあるかどうかを示すブール頂点(ノード)プロパティが自動的に作成されます。このプロパティには一意の名前を指定できます。
結果の2部サブグラフは次のようになります。
IDが1908
の頂点は2部サブグラフから除外されます。頂点に繋がっている唯一のエッジは、128
から1908
に伸びています。エッジはサブグラフの2部プロパティに反しているため削除されています。頂点1908
にはその他のエッジがないため、これも削除されています。さらに、IDが128
の頂点からIDが99
の頂点までのエッジは、2部サブグラフに存在しません。これは、エッジは左から右にしか移動できないためです(右から左ではありません)。
親トピック: サブグラフの作成