프로그래밍/Algorithm

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

Baesj 2021. 8. 18. 16:12

너비 우선 탐색은 시작 정점을 방문한 후 시작 정점에 인접한 모든 정점들을 우선 방문하는 방법이다.

 

위키 bfs

1. a에서 갈 수 있는 곳 b, c를 방문

2. b에서 갈 수 있는 곳 d, e를 방문

3. c에서 갈 수 있는 곳 f, g를 방문

4. e에서 갈 수 있는 곳 h를 방문

 

이런 식으로 인접한 모든 정점을 우선 방문하는 알고리즘이다.

 

구현 할 때는 큐(Queue)를 사용한다

 

1. a에서 갈 수 있는 곳 b, c를 큐에 넣고

2. 큐에서 b를 빼서 갈 수 있는 곳 d, e를 큐에 넣고

3. 큐에서 c를 빼서 갈 수 있는 곳 f, g를 큐에 넣고

4. 큐에서 d를 빼서 갈 수 있는 곳을 넣어야 하는데 없으니깐 넘어감

5. 큐에서 e를 빼서 갈 수 있는 곳 h를 큐에 넣고

6. 큐에서 f를 빼서 갈 수 있는 곳을 넣어야 하는데 없으니깐 넘어감

7. 큐에서 g를 빼서 갈 수 있는 곳을 넣어야 하는데 없으니깐 넘어감

8. 큐에서 h를 빼서 갈 수 있는 곳을 넣어야 하는데 없으니깐 넘어감

큐가 비어 질때까지 수행한다.

 

 

참고

https://ko.wikipedia.org/wiki/%EB%84%88%EB%B9%84_%EC%9A%B0%EC%84%A0_%ED%83%90%EC%83%89

'프로그래밍 > Algorithm' 카테고리의 다른 글

탐욕 알고리즘(Greedy)  (0) 2021.09.01
다익스트라 알고리즘(Dijkstra Algorithm)  (0) 2021.08.29
퀵 정렬(Quicksort)  (0) 2021.08.15
재귀(Recursion)  (0) 2021.08.11
선택 정렬(SelectionSort)  (0) 2021.08.04