[java] 자바의 깊이 우선 탐색(Depth First Search, DFS) 알고리즘 이해하기
깊이 우선 탐색(Depth First Search, DFS) 알고리즘
깊이 우선 탐색은 그래프를 탐색하는 방법 중 하나로, 한 정점에서 시작하여 다음 분기로 넘어가기 전에 해당 분기를 완전히 탐색하는 알고리즘입니다. 이 알고리즘은 스택(Stack) 또는 재귀 함수를 사용하여 구현할 수 있습니다.
자바를 사용한 DFS 알고리즘 구현
다음은 자바를 사용하여 깊이 우선 탐색 알고리즘을 구현한 예제입니다.
import java.util.*;
class Graph {
private int V;
private LinkedList<Integer> adj[];
Graph(int v) {
V = v;
adj = new LinkedList[v];
for (int i = 0; i < v; ++i) {
adj[i] = new LinkedList();
}
}
void addEdge(int v, int w) {
adj[v].add(w);
}
void DFSUtil(int v, boolean visited[]) {
visited[v] = true;
System.out.print(v + " ");
Iterator<Integer> i = adj[v].listIterator();
while (i.hasNext()) {
int n = i.next();
if (!visited[n]) {
DFSUtil(n, visited);
}
}
}
void DFS(int v) {
boolean visited[] = new boolean[V];
DFSUtil(v, visited);
}
public static void main(String args[]) {
Graph g = new Graph(4);
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(2, 3);
g.addEdge(3, 3);
System.out.println("Following is Depth First Traversal " + "(starting from vertex 2)");
g.DFS(2);
}
}
결론
이제 당신은 깊이 우선 탐색(Depth First Search, DFS) 알고리즘에 대해 알게 되었고, 자바를 사용하여 이를 구현하는 방법을 배웠습니다. 이해하기 쉽고 유용한 DFS 알고리즘은 다양한 분야에서 활용될 수 있으며, 그래프 탐색과 관련된 여러 문제를 해결하는 데 도움이 될 것입니다.
이 포스트를 통해 DFS 알고리즘에 대한 이해를 높이고, 자바를 활용하여 실제로 구현해볼 수 있었기를 바랍니다.
참고 문헌: GeeksforGeeks - Depth First Search or DFS for a Graph