최대 1 분 소요

📌 [Daily PS] 파이썬으로 구현하는 BFS와 DFS

DFS(Depth First Search, 깊이 우선 탐색)

gif

스택을 사용해서 구현 가능
파이썬에서 스택은 리스트를 사용해서 appendpop 을 사용

def DFS(graph, root):
    visited = []
    stack = [root]

    while stack:
        n = stack.pop()
        if n not in visited:
            visited.append(n)
            # 방문 했던 노드는 제외하고 스택에 추가
            stack += graph[n] - set(visited)
    return ''.join(str(i) for i in visited)

BFS(Breadth First Search, 너비 우선 탐색)

gif

이 알고리즘의 핵심은 자료구조를 사용하는 것이다.
노드를 방문하면서 인접한 노드 중 방문하지 않았던 노드의 정보만 큐에 넣어서 먼저 큐에 들어있던 노드부터 방문

파이썬으로 큐를 구현하는 방법으로는
list.append , list.pop(0) -> 비효율적인 코드
from collections import deque :: queue.append , queue.popleft() -> 사용

def BFS(graph, root):
    visited = []
    queue = deque([root])

    while queue:
        n = queue.popleft()
        if n not in visited:
            visited.append(n)
            queue += graph[n] - set(visited)

    return visited

댓글남기기