2012-04-16 18 views
11

グラフを作成するプログラム(具体的にはプログラムグラフ)を作成して、ノードに値を保存し、各ノードが接続されている他のノードを保存するプログラムを作成します。Javaでグラフを作成する

私はリンクリストを使用してこれを行うと考えています。これは正しいことですか?他のアドバイスをいただければ幸いです。

答えて

21

ほとんどの場合、隣接関係リストを使用してグラフをモデル化することをお勧めします。これを行うための既存のフレームワークはおそらく存在しますが、演習としての表現に興味がある場合は、一般的に2つのことが必要です。まず、すべてのノードを含むHashMap、ノードのノードラベルをキーにすることができます。ノード自体は値です。

Java APIドキュメントHashMaps here

各ノードオブジェクトには、そのノードに隣接するノードのリストが必要です。これは、hereと記載されているArrayListを使用するのが最適です。

これはどのように構成されるかです。

import java.util.Hashmap; 
import java.util.ArrayList; 

class Node { 
    String label; 
    ArrayList<Node> adjacencyList; 
} 

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

グラフで実行したいアルゴリズムのほとんどは、この表現でうまく動作します。

+0

私はこれを試します、ありがとうございます。 – user1079226

0

独自のグラフオブジェクトを作成するか、Jungなどを使用できます。

1

あなたが探しているのはTreeNode APIのようです。 実際には、スイングパッケージの中にJava SEにすでに存在する素晴らしいパッケージがあります。デフォルトの実装はjavax.swing.tree.DefaultMutableTreeNodeです。 これはSwingアプリケーションの外部で使用でき、非常に標準的なTreeNodeモデルを提供します。

あなたは、あなたのニーズに適合するようにすべてのものを見つける:GetChildrenメソッド()、のgetParent()、setUserObject()...などとクロールおよびノー​​ドツリー上で検索するためのすべての再帰的な方法。

良いニュースは、数分でJTree UIを書く能力を得ることです!

関連する問題