Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

선진이네

[JAVA] 간단하게 이해하는 DFS, BFS 본문

Language/JAVA

[JAVA] 간단하게 이해하는 DFS, BFS

악마선진 2022. 7. 13. 14:54

그래프 탐색에는 DFS(깊이 우선 탐색), BFS(너비 우선 탐색)가 존재한다. 

 

DFS는 리프 노드를 우선적으로 탐색하는 방식이다. 때문에 그래프의 깊이를 우선적으로 탐색하게 되어, 깊이 우선 탐색이라는 이름을 붙이게 된 것이다. DFS는 재귀적인 성격을 띄고 있는데, 이는 해당 노드가 갈 수 있는 곳들 중 리프 노드까지 우선적으로 방문 후, 다시 해당 노드가 갈 수 있는 다른 곳을 찾기 때문이다. 

아래 예시처럼 리프 노드까지 모두 방문하면 다른 곳을 방문하게 된다.

 

 

BFS는 현재 자신이 갈 수 있는 모든 방향을 차례로 접근한다. 때문에 리프 노드를 찾기보다는 본인이 갈 수 있는 같은 깊이의 노드를 모두 찾기 떄문에 해당 이름이 붙여졌다. BFS는 자신이 갈 수 있는 모든 인접 노드를 확인하면서 리프 노드까지 가기 때문에, 순차적이면서 큐 구조의 성격을 갖고 있다. 

아래 예시처럼 현재 상태에서 갈 수 있는 곳을 모두 방문하고 그 이후에 다음 곳을 방문한다.

 

 

 

'Language > JAVA' 카테고리의 다른 글

[JAVA] 지금 안 넣으면 못 넣을 BFS  (0) 2022.07.19
[JAVA] 지금 안넣으면 못 넣을 DFS  (0) 2022.07.18
[JAVA] Comparable 그리고 Comparator  (0) 2022.06.27
[JAVA] Optional에 관하여,  (0) 2022.06.02
[JAVA] StringTokenizer  (0) 2022.05.05