2012-04-16 5 views
11

노드에 값을 저장하고 각 개별 노드가 연결된 다른 노드를 저장하는 그래프를 만드는 프로그램을 만들려고합니다.자바에서 그래프 만들기

나는 이것을 연결 목록을 사용하여 생각하고있다. 이것이 올바른 방법인가요? 다른 조언은 크게 감사하겠습니다.

답변

21

대부분의 경우 인접 목록으로 그래프를 모델링하는 것이 좋습니다. 이것을하기위한 기존 프레임 워크가있을 수 있지만 운동으로 표현하는 데 관심이 있다면 일반적으로 두 가지가 필요합니다. 첫째, 모든 노드가 포함 된 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

그래프 개체를 직접 작성하거나 과 같은 것을 사용할 수 있습니다.

1

당신이 찾고있는 것은 TreeNode API 인 것 같습니다. 실제로 Java SE에 이미있는 스윙 패키지 안에는 기본 구현 인 javax.swing.tree.DefaultMutableTreeNode이 있습니다. Swing 어플리케이션의 외부에서 사용할 수있어 매우 표준적인 TreeNode 모델을 제공합니다.

당신은 당신의 필요에 맞게 모든 것을 발견 할 것이다 : getChildren(), 의 getParent(), setUserObject() ... 등 및 크롤링 및 노드 트리를 통해 검색을위한 모든 재귀 방법.

좋은 소식은 몇 분 안에 JTree UI를 작성할 수 있다는 것입니다.