1. BFS?
- BFS는 인접한 노드를 우선 방문하는 것을 의미한다.
- Level-order 순회와 동일하다.
- Queue로 구현이 가능하다.
- 4를 기준으로 BFS를 한다고 생각해보자. (단 인접노드는 작은값부터 탐색한다.)
- walk는 다음과 같다.
- (4 -> (2 -> 3 -> 5)-> (0 -> 1) -> 6)
2. Code 구현
from collections import deque
def BFS(graph,start_node):
visit = list()
queue = deque()
visit.append(start_node)
queue.append(start_node)
while len(queue) > 0 :
for each_node in graph[queue[0]]:
if (each_node in visit) == False:
visit.append(each_node)
queue.append(each_node)
queue.popleft()
return visit
graph = {0:[1,2],
1:[0,2,3],
2:[0,1,4],
3:[1,4],
4:[2,3,5],
5:[4,6],
6:[5]}
print(BFS(graph,4))
------------------------------------------------------------------------
Output
[4, 2, 3, 5, 0, 1, 6]
'CS Study > CLRS (자료구조 | 알고리즘)' 카테고리의 다른 글
[CLRS] [20-4] Topological sort(위상정렬) (0) | 2024.12.01 |
---|---|
[CLRS] [20-3] DFS(Depth-first search) (0) | 2024.11.30 |
[CLRS] [20-1] Representation of graphs (0) | 2024.11.30 |
[CLRS] [19] disjoint set(Union-Find) (0) | 2024.11.30 |
[CLRS] [17][18] B-tree (2) | 2024.11.30 |