본문 바로가기
Algorithm

[Algorithm] DFS/BFS

by thoonk: 2020. 12. 1.

Graph

그래프는 2가지 방식으로 표현할 수 있다.

1. 인접 행렬(Adjacency Matrix) : 2차원 배열로 그래프의 연결 관계를 표현하는 방식

2. 인접 리스트(Adjacency List) : 리스트로 그래프의 연결 관계를 표현하는 방식

DFS (Depth-First-Search) - 깊이 우선 탐색

그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다.

스택 자료구조를 이용하여 구현한다.

1. 탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다. 

2. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리를 한다. 

2-1. 방문하지 않은 인접노드가 없다면 스택에서 최상단 노드를 꺼낸다.

3. 2번의 과정을 더 이상 수행할 수 없을 때까지 반복한다. 

 

BFS (Breadth First Search) - 너비 우선 탐색

가까운 노드부터 텀색하는 알고리즘 

자료구조를 이용하여 구현한다.

1. 탐색 시작 노드를 큐에 삽입하고 방문 처리를 한다. 

2. 큐에서 노드를 꺼내 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문 처리를 한다.

3. 2번의 과정을 더 이상 수행할 수 없을 때까지 반복한다.

 

문제 풀이시 간선(거리)가 모두 동일한 경우 BFS를 이용하면 좋다.

 

참고

나동빈, 이것이 취업을 위한 코딩 테스트다 with 파이썬

'Algorithm' 카테고리의 다른 글

[Algorithm] Queue 구현 Swift  (0) 2021.05.13
[Algorithm] LowerBound & UpperBound  (1) 2021.04.29
[Swift] PS 시간 측정하기  (0) 2020.11.20

댓글