반응형
개념 정리
* 너비 우선 탐색 알고리즘(Breadth-First Search, BFS)
graph나 tree와 같은 자료 구조에 대한 탐색 알고리즘으로, 시작 노드에서 가장 가까운 노드들을 먼저 방문하고 그다음에 먼 노드들을 방문하는 방법입니다. BFS 알고리즘은 방문 순서 관리를 위하여 큐(Queue)라는 자료 구조를 사용하는데, 큐는 선입선출(FIFO), 즉 먼저 들어온 요소를 먼저 내보내는 방식입니다.
* deque
deque는 'double-ended queue'의 약자로, 양쪽 끝에서 요소의 삽입과 삭제가 가능한 자료 구조입니다.
파이썬은 collections 모듈에서 deque를 import 하여 사용할 수 있습니다.
예시
1. 방문 탐색할 그래프
graph = {
1: [2, 4],
2: [1, 3, 6],
3: [2, 4, 5],
4: [1, 3, 7],
5: [3, 6, 9],
6: [2, 5],
7: [4, 8],
8: [7, 9],
9: [5, 8]
}
2. BFS로 그래프 탐색
from collections import deque
def bfs(graph, start):
visited_node_set = set()
queue = deque([start])
while queue:
node = queue.popleft()
if node not in visited_node :
visited_node.add(node)
queue.extend(neighbor for neighbor in graph[node] if neighbor not in visited_node_set)
return visited_node_set
result = bfs(graph, 1)
print(result) # 출력: {1, 2, 3, 4, 5, 6, 7, 8, 9}
https://en.wikipedia.org/wiki/Breadth-first_search
반응형
'Programming Language > Python' 카테고리의 다른 글
[python] import / 파이썬 모듈 만드는 방법 / 파이썬 기초 (0) | 2023.09.15 |
---|---|
[Python] 에러 : Object of type int64 is not JSON serializable (0) | 2023.09.12 |
[Python] 파이썬, 문자열의 종류 판별 함수 정리 / 영문자, 공백, 숫자 여부 등 (0) | 2023.03.09 |
[Python] 파이썬 / 문자열의 공백 처리 함수 (0) | 2023.03.09 |
[Python] 파이썬 난수 생성하기 / random (0) | 2023.03.09 |