2016-10-28 5 views
1

私は、隣接リストを使用してJavaで方向付けされた重み付きエッジグラフを実装しようとしています。それは、頂点の数に等しいサイズの配列から成り、配列の各エントリは、それぞれの後任のLinkedListです。VertexJava Adjacencyリストは、指向性重み付けエッジを持つグラフを実装します。

私は、さらに私は、将来の使用のためVertexあたりの他の変数を追加したい、私はLinkedListに各successorオブジェクトに重みラベルを追加することによってこれを行うことを考えていた、各辺に重みを追加したいです。これを行うには、頂点の新しいデータ構造を作成し、隣接リストとして別のデータ構造を作成する必要があります。両方を単一のデータ構造として結合する効率的な設計は何でしょうか?

答えて

2

グラフをHashMapとして表現する必要があります。ここでkeyは頂点のラベルであり、valueは頂点オブジェクトです。

HashMap<String,Vertex> graph = new HashMap<String,Vertex>(); 

頂点は頂点attributes.Thereをカプセル化するクラスが重みを有する隣接する頂点の属性のHashMapであろうあります。

頂点クラスを使用してグラフに機能や属性を追加できます。

関連する問題