본문 바로가기
코딩테스트 준비/자료구조 & 알고리즘

C# - DFS/BFS 둘 중 어느것을 사용해서 문제를 풀어야 할까?

by 코딩하는 돼징 2023. 12. 16.
반응형

DFS/BFS 둘 중 어느것을 사용해서 문제를 풀어야 할까?

 

BFS / DFS

그래프의 모든 정점을 방문하는 문제

단순히 모든 정점을 방문하는 것이 중요한 문제의 경우 DFS, BFS 두 가지 방법 중 어느 것을 사용해도 상관없다.


DFS

01 특정 경로를 찾는 경우

A부터 B까지 가는 경로를 구하는데 경로에 같은 숫자가  있으면 안된다는 문제 등 각각의 경로마다 특징을 저장해야 할때는 DFS사용한다. BFS는 경로의 특징을 가지지 못한다.


02 백트래킹

모든 가능성을 찾아 현재 시점에서 더 이상 진행할 수 없는 경우 이전 단계로 돌아가 다른 가능성을 탐색할 때 사용된다.


03 사이클 검출

그래프에서 사이클이 존재하는지 검출하는 문제


04 트리 구조 검색

트리에서 특정 노드를 찾거나 특정 조건을 만족하는 노드를 찾을때


BFS

01 최단 경로 찾기

깊이 우선탐색으로 경로를 검색할 경우 처음으로 발견되는 해답이 최단 거리가 아닐 수 있지만 너비 우선탐색으로는 현재 노드에서 가까운 곳부터 찾기 때문에 곧 최단 거리가 된다.


02 레벨 순서 탐색이 필요한 경우

그래프의 레벨 순서대로 탐색하는 경우


03 최소 연결성 문제

연결된 구성 요소를 찾거나 최소 연결성을 찾아야 하는 경우

 

 

 

 

반응형

댓글