Algorithms-[BFS]

2021. 12. 30. 12:45·코딩테스트/파이썬 알고리즘

오늘은 BFS 너비우선탐색에 대해서 설명하겠다. 저번 DFS에서 간단하게 말했었는데 다시 설명하겠다. DFS와 구별하면서 이해하는게 훨씬 쉽다. DFS는 한분기의 끝까지 탐색하고 아니면 돌아오고 다시 끝까지가고를 반복하는데, BFS는 "너비" 우선탐색이므로 한단계를 전부 탐색하고 다음 깊이로 들어간다. 즉 루트로부터 가까운 애들을 먼저 탐색한후 점점 멀어진다. 너비우선탐색은 최단경로나 임의의 경로를 찾을 때 쓰인다. DFS는 재귀로 구현을 했는데, WBS는 보통 QUE를 의 선입선출을 이용해서 코드를 구현한다. 이때 주의할점은 반드시 방문한 노드를 기억하는 코드가 있어야된다는 곳이다. 방문만하고 기억하지않으면 무한루프에 빠지게 된다. 

from collections import deque

def bfs(graph, start):
    visited_nodes = []
    adjacency_nodes = deque([start])

    while near_nodes:
        node = near_nodes.popleft()
        if node not in visited_nodes:
            visited_nodes.append(node)
            near_nodes.extend(graph[node])

    return visited_nodes

아 추가로 deque를 import해서 사용했는데, 기본 queue는 매우 느리고 시간 초과의 원인이되므로 반드시 파이썬에서는 deque를 사용하는 것을 권장한다고 한다. deque와 queue의 차이점은 queque는 방향이 정해져있어 한쪽으로는 입력만, 반대쪽으로는 출력만 가능한데, deque는 양쪽에서 입출력이 가능하다고 한다.

 

728x90

'코딩테스트 > 파이썬 알고리즘' 카테고리의 다른 글

Algorithms-[Two Pointer]  (0) 2022.01.11
Algorithms-[Python-변수 할당]  (0) 2022.01.04
Algorithms-[Dynamic_Programming]  (0) 2021.12.19
Algorithms-[Que & Stack]  (0) 2021.12.07
Study-[Python_모듈/함수/패키지/메소드]  (0) 2021.12.07
'코딩테스트/파이썬 알고리즘' 카테고리의 다른 글
  • Algorithms-[Two Pointer]
  • Algorithms-[Python-변수 할당]
  • Algorithms-[Dynamic_Programming]
  • Algorithms-[Que & Stack]
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (471)
      • 알쓸신잡 (79)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    BFS
    dp
    그리디
    나동빈
    파이썬
    이것이취업을위한코딩테스트다
    백준
    이코테
    DFS
    이분탐색
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3

HOME

HOME

상단으로

티스토리툴바