https://youtu.be/7C9RgOcvkvo?list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&t=2113
- 큐 자료구조를 이용한다는 것이 특징이다.
- 인접 노드를 한 번에 큐에 넣고 방문처리 한다는 것이 너비 우선 탐색 BFS의 특징이다.
- 특정 조건에서의 최단경로를 찾는 방법에서 가장 효과적으로 쓰이는 알고리즘이다.
<BFS의 동작 예시>
- 무방향 그래프
Step 1 시작 노드인 1을 큐에 삽입하고 방문 처리를 한다.
Step 2 큐에서 노드 1을 꺼내 방문하지 않은 인접 노드 2, 3, 8을 큐에 삽입하고 방문 처리 한다.
Step 3 큐에서 노드 2를 꺼내 방문하지 않은 인접 노드 7(1은 이미 방문했기 때문에 방문하지 않는다.)을 큐에 삽입하고 방문 처리 한다.
from collections import deque
#BFS 메서드 정의
def bfs(graph, start, visited):
# 큐 구현을 위해 덱 라이브러리를 사용
queue = deque([start])
# 현재 노드를 방문처리한다.
visited[start] = True
#큐가 빌 때까지 반복
while queue:
#큐에서 하나의 원소를 뽑아 출력하기
v = queue.popleft()
print(v,end= ' ')
#아직 방문하지 않은 인접한 원소들을 큐에 삽입
for i in graph[v]:
if not visited[i]:
queue.append(i)
visited[i] = True
graph = [[],[2,3,8],[1,7],[1,4,5],[3,5],[3,4],[7],[2,6,8],[1,7]]
visited = [False] * 9
bfs(graph,1,visited)
'자료구조와 알고리즘 > 이것이 취업을 위한 코딩테스트다' 카테고리의 다른 글
알고리즘 - 정렬 알고리즘(sorting algorithm) (0) | 2021.08.28 |
---|---|
알고리즘 - DFS&BFS 기초 문제 풀이 (0) | 2021.08.20 |
알고리즘 - DFS(Depth-First Search) (0) | 2021.08.20 |
알고리즘 - 재귀 함수(Recursive Function) (0) | 2021.08.20 |
자료구조- 스택/큐 자료구조(DFS/BFS를 배우기 전에 선행되어야 하는 자료구조 개념) (0) | 2021.08.20 |