グラフのすべての頂点を表す別のクラス、Vertexクラスを使用するグラフクラスを作成しようとしています。すべての頂点が接続されている他のノードを追跡できるため、2つの頂点間の可能な接続を表すEdgeクラスが必要かどうかはわかりません。しかし、これが正しいかどうかはわかりません。どう思いますか?Javaでのグラフの実装
ありがとうございます。
グラフのすべての頂点を表す別のクラス、Vertexクラスを使用するグラフクラスを作成しようとしています。すべての頂点が接続されている他のノードを追跡できるため、2つの頂点間の可能な接続を表すEdgeクラスが必要かどうかはわかりません。しかし、これが正しいかどうかはわかりません。どう思いますか?Javaでのグラフの実装
ありがとうございます。
Edge
クラスを使用する必要はありません。隣接リストを使用して、の重み付けされていないグラフを正しく表すことができます。重み付きグラフでは、エッジコストを表す方法が必要であるため、Edge
クラスを使用するのが適切です。
class Graph<E> {
private List<Vertex<E>> vertices;
private static class Vertex<E> {
E elem;
List<Vertex<E>> neighbors;
}
}
はい、これは私が考えていたものです。 Edgeクラスをまったく使用せずに他の頂点を追跡する。ありがとうございました!!!! – FranXh
重み付きの有向グラフが必要になるまで、すべてうまくいく。その後、メタデータが必要になりますが、Edgeクラスはさらに優れています。 –
@AndrewFinnell:ありがとう。更新しました。 – blackcompe
典型的には、representationは、意図された用途への適合性に基づいて選択される。この単純な例では、GraphPanel
はそのモデルとしてList<Edge>
を使用しています。
私たちにいくつかのコードを教えてください:) – paulsm4
Q:これは "宿題"ですか?もしそうなら、そのようにフラグを立ててください。いずれにせよ、これを見てください:http://en.literateprograms.org/Dijkstra%27s_algorithm_%28Java%29 – paulsm4
これは宿題ではありません。私は、エッジクラスを使用して、使用しないでクラスを実装する方法を知っています。 Edgeクラスなしで正しいかどうかを知りたいだけです。 Anwはリンクをありがとう。 – FranXh