그래프 - 너비우선탐색(BFS)

2023. 3. 13. 10:23알고리즘

반응형

같은 레벨의 노드부터 먼저 탐색

 

BFS 구현

from collections import deque

#BFS
def bfs(graph, start):
	#시작점 start가 들어간 방문목록 visted로 초기화
    visited = [start]
   
    queue = deque([start])#방문할 노드 목록 queue에 시작점을 담아준다.

    while queue:#방문할 목록이 없을때까지 반복한다.
        current = queue.popleft()#방문할 목록에서 방문할 곳을 하나씩 꺼낸다.
        for k in graph[current]:#방문할 노드에 연결된 노드를 방문하고 다음 방문할 목록에 추가해준다. 
            if k not in visited:#방문한 곳이 아니면 방문하고 방문할 목록에 추가
                visited.append(k)#방문한 목록에 추가
                queue.append(k)#방문할 목록에 추가
    return visited#방문한 목록을 return

graph = {
    'A' : ['B', 'D', 'E'],
    'B' : ['A', 'C', 'D'],
    'C' : ['B'],
    'D' : ['A', 'B'],
    'E' : ['A']
}




print(bfs(graph, 'A'))# 결과 >>> ['A', 'B', 'D', 'E', 'C']
반응형

'알고리즘' 카테고리의 다른 글

Graph - 깊이우선탐색(DFS)  (0) 2023.03.13
자료구조 - 그래프(GRAPH)  (0) 2023.03.11
트리 Tree  (1) 2023.03.08
재귀 (Recursion)  (0) 2023.02.27
Hash table  (0) 2023.02.26