코딩테스트/알고리즘

BFS 설명 및 구현 with 파이썬

메이져드컴싸 2022. 1. 13. 16:25

※ BFS란?

 

BFS.

 

Breadth First Search

 

말그대로 너비 우선 탐색

 

그래프에서 가장 가까운 노드부터 먼저 탐색한다

 

 

※ BFS구현?

- BFS는 큐를 통해서 구현한다

 

 

※ BFS 과정은?

 

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

2. 큐에서 노드를 꺼낸다. 인접한 노드 중에 방문하지 않은 노드가 있으면 모두 큐에 넣고 방문 처리한다

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

 

※ BFS 구현

def bfs(graph, v, visited):
    queue = deque()

    visited[v] = True
    print(v,"방문했음")
    queue.append(v)

    while len(queue) != 0:
        for i in graph[queue.popleft()]:
            if not visited[i]:
                queue.append(i)
                visited[i] = True
                print(i,"방문했음")



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)