📌 1. BFS 기본 개념
BFS는 그래프를 탐색하는 대표적 방법 중 하나로 너비를 우선으로 하는 탐색법으로 Breadth First Search를 의미한다.
BFS는 탐색 시작점으로부터 인접한 정점들을 우선으로 차례로 방문하고 방문했던 정점을 시작점으로 하여 다시 해당 정점으로부터 인접한 정점들을 차례로 방문하는 방식이다.
인접한 정점부터 차례대로 모든 정점을 방문하기 때문에 선입선출(FIFO)구조인 큐를 활용하여 코드화할 수 있다.
BFS를 활용하여 가까운 곳 부터 먼 곳 순서로 탐색하기 때문에 특정 정점까지 가는 최단거리를 구하는데 용이하다.
📌 2. BFS 코드로 나타내기
def BFS(G, v):
# 방문 여부를 확인하기 위한 리스트
visited = [0] * n
# 정점들을 차례로 방문하기 위한 큐
queue = []
# 시작점을 큐에 넣는다
queue.append(v)
# 방문하는 정점이 있으면 반복
while queue:
# 현재 기준 첫 번째로 방문해야 할 정점 반환
p = queue.pop(0)
# 아직 방문하지 않았다면 방문하고 방문 체크
if not visited[p]:
visited[p] = 1
# 현재 정점과 연결된 정점 중 아직 방문하지 않은 정점이 있다면 방문하기
for i in G[p]:
if not visited[i]:
queue.append(i)
반응형
'✨APS (Algorithm Problem Solving) > Algorithm' 카테고리의 다른 글
[Algo] DFS(깊이 우선 탐색) (0) | 2022.10.11 |
---|---|
[Algo] Greedy Algorithm(그리디 알고리즘) (0) | 2022.09.22 |