yooniiverse
개발 블로그
yooniiverse
전체 방문자
오늘
어제
  • 분류 전체보기
    • 운영체제
    • 네트워크
    • ~2023.02
      • 외부교육
      • 대외활동
      • 스터디
      • 동아리
      • TIL
      • IT지식
      • 기타
      • 트러블 슈팅
      • 프로그래밍
      • Python
      • Java
      • JS
      • DB(SQL)
      • JSP
      • Spring
      • 기술면접
      • 자바
      • 코딩테스트
      • 자료구조
      • 알고리즘
      • 백준 문제풀이
      • 인공지능
      • 머신러닝
      • 프로젝트
      • 안드로이드 앱개발
      • 웹개발
      • 웹 서비스
      • 웹퍼블리싱
      • Node.js 백엔드 개발
      • CS
      • 1일 1CS지식
      • 운영체제
      • 네트워크
      • 데이터베이스
      • 정보처리기사
      • 도서 리뷰
      • 개발 관련 도서
      • 기타 도서

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yooniiverse

개발 블로그

그래프 기본 탐색 알고리즘_너비 우선 탐색(BFS)
~2023.02/알고리즘

그래프 기본 탐색 알고리즘_너비 우선 탐색(BFS)

2022. 1. 15. 21:31

너비 우선 탐색 (Breadth-First Search)

1. BFS와 DFS 란?

대표적인 그래프 탐색 알고리즘

  • 너비 우선 탐색(Breadth First Search): 정점들과 같은 레벨에 있는 노드들 (형제 노드들)을 먼저 탐색하는 방식
  • 깊이 우선 탐색(Depth First Search): 정점의 자식들을 먼저 탐색하는 방식

BFS / DFS 방식 이해를 위한 예제

  • BFS 방식: 한 단계씩 내려가면서, 해당 노드와 같은 레벨에 있는 노드들(형제 노드들)을 먼저 순회함
  • DFS 방식: 한 노드의 자식을 타고 끝까지 순회한 후, 다시 돌아와서 다른 형제들의 자식을 타고 내려가며 순회함

2. 파이썬으로 그래프를 표현하는 방법

파이썬에서 제공하는 딕셔너리와 리스트 자료 구조를 활용해서 그래프를 표현할 수 있음

graph = dict()

graph['A']=['B', 'C']
graph['B']=['A', 'D']
graph['C']=['A', 'G', 'H', 'I']
graph['D']=['B', 'E', 'F']
graph['E']=['D']
graph['F']=['D']
graph['G']=['C']
graph['H']=['C']
graph['I']=['C', 'J']
graph['J']=['I']
graph
{'A': ['B', 'C'],
 'B': ['A', 'D'],
 'C': ['A', 'G', 'H', 'I'],
 'D': ['B', 'E', 'F'],
 'E': ['D'],
 'F': ['D'],
 'G': ['C'],
 'H': ['C'],
 'I': ['C', 'J'],
 'J': ['I']}

3. BFS 알고리즘 구현

자료구조 큐를 활용함

  • need_visit 큐와 visited 큐, 두 개의 큐를 생성

 

'~2023.02 > 알고리즘' 카테고리의 다른 글

[탐색 알고리즘 #3] 코딩 테스트 연습문제 풀이  (0) 2022.02.25
[탐색 알고리즘 #2] 순차 탐색(Sequential Search)  (0) 2022.02.25
[탐색 알고리즘 #1] 이진 탐색(Binary Search)  (0) 2022.02.25
동적 계획법과 분할 정복  (0) 2022.02.23
탐욕 알고리즘(그리디)  (0) 2022.02.23
    '~2023.02/알고리즘' 카테고리의 다른 글
    • [탐색 알고리즘 #2] 순차 탐색(Sequential Search)
    • [탐색 알고리즘 #1] 이진 탐색(Binary Search)
    • 동적 계획법과 분할 정복
    • 탐욕 알고리즘(그리디)
    yooniiverse
    yooniiverse

    티스토리툴바