본문 바로가기

알고리즘

[알고리즘] BFS, DFS 언제 사용할까?

그래프 탐색 문제는 대부분 BFS, DFS를 둘 다 사용할 수 있다.

하지만 그럼에도 불구하고 상황에 따라 효율적인 알고리즘이 있다.

 

BFS - 최단 경로

https://www.acmicpc.net/problem/16236

 

16236번: 아기 상어

N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가

www.acmicpc.net

가중치가 1인 최단 경로를 구할 때는 BFS가 효율적이다.

DFS로 최단 경로를 구하면 그래프가 아닌 트리라는 확증이 있어야 한다. 

아니면 내가 최종적으로 방문한 경로가 최단 경로인지 확신할 수 없기 때문이다.

반면 BFS는 도착 정점에 도달하는 순간이 최단경로이다.

 

참조: https://sigridjin.medium.com/%EC%B5%9C%EB%8B%A8%EA%B1%B0%EB%A6%AC-%EB%AC%B8%EC%A0%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B6%81%EA%B8%88%EC%A6%9D-%EC%A0%95%EB%A6%AC-5b1b813ba1b3

 

최단거리 문제 알고리즘에 대한 궁금증 정리

DFS, BFS와 다익스트라 알고리즘에 대한 여러가지 의문점

sigridjin.medium.com

 

 

 

DFS - 백트래킹

https://www.acmicpc.net/problem/9663

 

9663번: N-Queen

N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

백트래킹 알고리즘과 DFS는 차이가 있지만 백트래킹은 DFS에서 조건문을 걸어 

모든 경로를 탐색하는 DFS 방식이 아닌 해가 아닌 것 같으면 다시 되돌아가서 탐색한다고 생각하면 된다.

N-Queen은 한줄씩 퀸을 놓을 자리를 탐색하고 퀸을 놓아도 되는 조건에서만

재귀를 통해 다음 줄로 내려가 퀸을 놓을 자리를 계속 탐색한다.