2012-04-16 2 views
0

본질적으로 노드의 ArrayList 인 그래프가 있습니다. 각각의 그래프는 이웃을 저장합니다.그래프를 탐색하지만 깊이가 n 레벨 인 경우

public class Node { 
    ArrayList<Node> neighbors; 
    String data; 
    public Node() { 
     data = null; 
     neighbors = new ArrayList<Node>(); 
    } 
} 

이 그래프에서는 모든 경로를 인쇄하지만 깊이는 n 레벨입니다. 어떻게 코딩해야합니까?

아니면 다른 방법으로 저장해야한다면 알려 주시기 바랍니다. 하지만 더 중요한 것은 모든 경로를 n 레벨까지 인쇄하는 방법을 알고 싶습니다.

+0

모든 경로를 끝까지 인쇄 할 수 있습니까? 코드를 보여 주시겠습니까? – dasblinkenlight

+0

그래프의 시작/끝은 있습니까? 정확하게 길이가 n 인 경로 나 길이가 n 인 경로를 찾고 있습니까? – twain249

+0

@ twain249 시작/끝이 무슨 뜻인지 모르겠지만 최대 길이는 n입니다. – varatis

답변

4

그래프의 depth-limited traversal을 수행하십시오. 재귀 적 단계를 제외하고는 깊이 우선 탐색과 같으며 깊이가 떨어질 때마다 증가하는 depth이라는 변수를 추가합니다. 원하는 깊이를 맞추면 반복적으로 멈추십시오.

1
  1. 모든 노드에 visited이라는 추가 변수를 추가하십시오.
  2. Queue을 사용하여 광범위한 검색을 수행하고 visited을 사용하여 루프를 방지하십시오.
  3. 길이는 n입니다.
+0

루프를 원한다면 그 두 번째 단계를 제거해도 될까요? 루프가있는 경로를 포함하여 모든 경로를 원합니다. – varatis

+0

글쎄, 그건 작동하지 않습니다. 'visited'를 제거하려고하면 모든 노드가 이웃 노드와 통신을 유지하므로 코드가 끝나지 않을 수 있습니다. 루프를 원한다면 정확히 무엇을 의미합니까? – noMAD

+0

A가 B에 인접 해 있고 A 또는 B라는 다른 노드가 없다고 가정 해 봅시다. A-B-A-B-A를 올바른 경로로 인쇄하고 싶습니다. 우리는 일정한 양의 반복을 할 것입니다. – varatis

관련 문제