새소식

Algorithm/이론

BFS 너비 우선 탐색 - 코드 템플릿

  • -
728x90

BFS 코드

def bfs(S, E):
    queue = [S]
    visited = [0] * (V + 1)
    visited[S] = 1  # 방문 표시: 거리

    while queue:
        c = queue.pop(0)

        # 이 부분에서 정답 처리!
        if (정답 조건):
            return answer
            # 거리: visited[c] - 1 (시작 노드 제외)
            # 가능 여부: 1

        for n in (탐색할 영역):  # 연결된 노드, 4방향, 8방향, 조건 등
            if visited[n] == 0:  # 미방문
                queue.append(n)
                visited[n] = 방문 표시
                # 거리: visited[c] + 1
                # 방문: 1

    return 0  # 불가능

 

 

정답 조건

아래는 "(정답 조건)" 부분에 대한 코드를 구현한 것이다.

# 도착 지점에 도달한 경우
if c == E:

 

 

탐색할 영역

아래는 "(탐색할 영역)" 부분에 대한 코드를 구현한 것이다.

# 연결된 노드
# lst: 그래프
for n in lst[c]:
	

# 4방향 탐색
for di, dj in [(-1, 0), (1, 0), (0, -1), (0, 1)]:
	ni, nj = ci + di, cj + dj
728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.