2012-12-29 4 views
0

나는 무향 그래프를 만들려고 해요, 그래서 실행이 내가 얻을 출력 후 내가 그래프를 생성하는 코드 아래 사용 :BFS <정수를 ArrayList를 <Integer>>

{1=[2, 5, 10, 18], 
2=[1, 3], 3=[2, 4], 
4=[3, 5], 5=[1, 4, 6], 
6=[5, 7], 7=[6, 8], 
8=[7, 9], 9=[8], 10=[1, 11], 
11=[10, 12, 13, 11, 11], 
12=[11, 19], 13=[11], 
19=[12], 18=[1], 
21=[22], 22=[21]} 

지금은 시도 최단 경로를 찾기 위해 BFS를 구현합니다. 내 질문은 : 해싱 맵을 사용하여 bfs를 구현할 수 있다면 가능합니까? 어떻게 할 수 있습니까? 또는 hashmap 대신에 어떤 메소드를 사용해야하는지는 불가능합니다.

Map<Integer, ArrayList<Integer>> adj; 

public Graph(ArrayList<String> nodes) { 
    adj = new HashMap<Integer, ArrayList<Integer>>(); 
    for (int i = 0; i < nodes.size(); ++i) { 
     adj.put(Integer.parseInt(nodes.get(i)), new ArrayList<Integer>()); 
     } 
    } 

public void addNeighbor(int v1, int v2) { 
    adj.get(v1).add(v2); 
} 
+0

예, 가능합니다. BFS를 구현하려는 의사 코드를 보여줄 수 있습니까? 그래서 우리는 당신이 그것을 수정/개선하고 정확한 해결책을 얻을 수 있도록 도울 수 있습니다. –

답변

1

그것은 내가 그것을 어떻게 할 수 가능한 경우 대금을 구현하기 위해 해시 맵을 사용할 수 있습니까? 또는 어떤 메소드가 hashmap 대신 을 사용해야하는지는 불가능합니다.

예. 가능합니다. 인접 목록으로 작업하고 있습니다. BFS를 구현하려면 대기열이 필요합니다 (Java에는이 인터페이스가 있습니다). 그래프를 탐색하려면 대기열의 단일 노드로 시작하고이 대기열이 비어 있지 않은 상태에서 다음 노드를 가져 와서 인접 노드를 모두 대기열에 추가하십시오. 여기서 Map에 액세스해야합니다.

관련 문제