グラフのすべての頂点を表す Vertex クラスという別のクラスを使用する Graph クラスを作成しようとしています。すべての頂点は、接続されている他のノードを追跡できるため、2 つの頂点間の可能な接続を表す Edge クラスが必要かどうかはわかりません。しかし、これが正しいかどうかはわかりません。どう思いますか?
ありがとうございました。
グラフのすべての頂点を表す Vertex クラスという別のクラスを使用する Graph クラスを作成しようとしています。すべての頂点は、接続されている他のノードを追跡できるため、2 つの頂点間の可能な接続を表す Edge クラスが必要かどうかはわかりません。しかし、これが正しいかどうかはわかりません。どう思いますか?
ありがとうございました。
Edge
クラスを使用する必要はありません。隣接リストを使用しても、重み付けされていないグラフを正しく表すことができます。加重グラフの場合、エッジ コストを表す方法が必要なため、Edge
クラスを使用するのが適切です。
class Graph<E> {
private List<Vertex<E>> vertices;
private static class Vertex<E> {
E elem;
List<Vertex<E>> neighbors;
}
}
通常、表現は、使用目的への適合性に基づいて選択されます。この単純な例では、モデルとしてGraphPanel
aのみを使用します。List<Edge>