グラフとその操作方法について独学するために、いくつかのアルゴリズムを実装しています。Javaでそれを行うための最良の方法は何ですか?
有向グラフと加重有向グラフの短い非常に単純なクラス定義について、簡単なヘルプを提供できるかどうかを尋ねたかっただけです。
私はウェブを見ましたが、それを実装したくありません。クラスの簡単な定義だけです....使用するのに最適なデータ構造は何だと思いますか? 隣接リスト?
無向グラフの場合、次のように定義しました。
public interface Graph {
Collection vertices(); // returns a collection of all the
// Vertex objects in the graph
Collection edges(); // returns a collection of all the
// Edge objects in the graph
Collection incidentEdges(Vertex v); // returns a collection of
// Edges incident to v
boolean isAdjacent(Vertex v, Vertex w); // return true if v and
} // w are adjacent
public class Vertex {
public boolean visited; // initially false for all vertices
}
public class Edge {
Vertex v1, v2; // undirected edge
Vertex opposite(Vertex v); // given a vertex return the one
} // at the other end of this edge