いくつかのグラフアルゴリズムを実装したいので、一種のグラフフレームワークを作成しています。これまで、次のクラスを使用して有向グラフを非常に簡単に実装しました。
class Vertex {
String id;
String name;
}
class Edge {
String id;
Vertex source;
Vertex destination;
int weight;
}
class Graph {
List<Vertex> vertexes;
List<Edge> edges; }
それをテストするとき、私は作成します:
Edge edge = new Edge(id, source_node, destination_node, weight)
これは、有向グラフではまったく問題ありません。ただし、無向グラフでは; 私はこのように書かなければなりません。A、Bの2つのノードがあり、それらの間の重みが10であるとします。したがって、無向グラフの構造のため、2つのエッジを配置する必要があります。
Edge e1 = new Edge(id1, A, B, 10)
Edge e2 = new Edge(id2, B, A, 10)
このタイプのエッジ作成は、非効率的で網羅的です。
したがって、無向グラフの2つのノードの間に2つのエッジを配置する必要がないように、コードを変更するにはどうすればよいですか。無向グラフタイプをコードに統合するための最良の方法は何ですか?
御時間ありがとうございます。