[코테 대비] BFS/DFS 정리 + 차이점

2024. 2. 6. 01:43·코테/정리
728x90
 

[코딩테스트 대비] DFS, BFS 정리

DFS, BFS 정리 DFS, BFS는 그래프에 속하는 알고리즘이다. 코딩테스트에서 경로를 찾는 문제에서 많이 출제가 된다. DFSRoot Node 혹은 다른 임의의 Node에서 다음 분기(Branch)로 넘어가기 전에 해당 분기

developer-mac.tistory.com

 

 

DFS, BFS의 설명, 차이점

그래프란, 정점(node)과 그 정점을 연결하는 간선(edge)으로 이루어진 자료구조의 일종을 말하며,그래프를 탐색한다는 것은 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한 번씩 방문하

velog.io

이해가 쏙쏙 되게끔 잘 적어주셔서.. 나도 잊어버리지 않게 메모! 유익한 정보 감사합니다 😄

 

 

DFS(깊이 우선 탐색)

루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방식.

미로찾기를 할 때 최대한 한 방향으로 갈 수 있을 때까지 쭉 가다가 더 이상 갈 수 없게 되면

다시 가장 가까운 갈림길로 돌아와서 그 갈림길부터 다시 다른 방향으로 탐색을 진행하는 것이 DFS.

 

     1. 모든 노드를 방문하고자 하는 경우

     2. DFS가 BFS보다 더 간단함

     3. 검색 속도: BFS>DFS

 

 

BFS(너비 우선 탐색)

루트 노드(혹은 다른 임의의 노드)에서 시작해서 인접한 노드를 먼저 탐색하는 방법으로,
시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 순회 방법.

주로 두 노드 사이의 최단경로를 찾고 싶을 때 선택.

 

만약 모든 사람들의 관계를 그래프로 표현한 다음, A와 B사이에 존재하는 경로를 찾는 경우

     - DFS = 모든 관계를 확인(방문)해야할 수 있음

     - BFS = A랑 가까운 관계부터 확인

 

 

📌 그래프의 모든 정점을 방문해야 한다.

     = 단순 방문일 시 DFS/BFS 상관 없음.

 

📌 경로의 특징을 저장해야 한다.

     = 정점마다 숫자가 적혀있고, 경로상에서 같은 숫자가 있으면 안되는 등 경로마다 특징이 필요할 경우 DFS

     = BFS는 경로의 특징을 가질 수 없음

 

📌 최단거리 문제

     = 미로찾기 등 최단거리 찾는 문제는 BFS가 유리.

     = DFS로 검색할 경우 처음 찾은 해답이 최단거리가 아닐 수 있음

     = BFS는 가까운 곳 부터 찾기 때문에 경로 탐색시 제일 처음 찾은 답이 최단거리

 

📌 검색 대상 그래프가 너무 크면 DFS

📌 검색 대상 규모가 크지 않고, 검색 시작 지점부터 원하는 대상이 별로 멀지 않으면 BFS

728x90

'코테 > 정리' 카테고리의 다른 글

[MySQL] CONV함수 사용해서 진수 변환하기  (0) 2024.05.16
[MySQL] RANK 함수  (0) 2024.04.16
[MySQL] GROUP BY 1  (0) 2023.07.05
[MYSQL] 중복제거한 데이터 개수 카운트하기  (0) 2023.06.07
[MYSQL] JOIN(INNER JOIN, OUTER JOIN)  (0) 2023.06.02
'코테/정리' 카테고리의 다른 글
  • [MySQL] CONV함수 사용해서 진수 변환하기
  • [MySQL] RANK 함수
  • [MySQL] GROUP BY 1
  • [MYSQL] 중복제거한 데이터 개수 카운트하기
DROPDEW
DROPDEW
💻 Developer | 기록하지 않으면 존재하지 않는다
  • DROPDEW
    제 2장 1막
    DROPDEW
  • 전체
    오늘
    어제
    • Dev (418) N
      • App·Android (1)
      • BE (44)
        • HTTP 웹 기본 지식 (8)
        • 스프링 입문 - 코드로 배우는 스프링 부트, 웹 .. (12)
        • 스프링부트와 JPA 활용 (11)
        • 스프링부트 시큐리티 & JWT (0)
        • PHP (6)
      • FE·Client (23)
        • HTML (1)
        • React (19)
        • Unity (1)
      • Data (17)
        • AI (7)
        • Bigdata (6)
        • Database (1)
        • 빅데이터분석기사 (2)
      • Infra (0)
      • Activity (1) N
        • Education (0)
        • Intern (0)
        • 리모트 인턴십 6기 (1) N
        • 구름톤 유니브 4기 (0)
        • SW교육기부단 15기 (0)
      • CS (8)
      • 취준 (13)
        • 자격증 (4)
        • 인적성·NCS (6)
        • 코테·필기·면접 후기 (3)
      • 코테 (270)
        • Algorithm (222)
        • SQL (35)
        • 정리 (13)
      • 인사이트 (27)
        • 회고 (0)
        • 금융경제뉴스 (7)
        • 금융용어·지식 (2)
        • 북마크 (7)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    문자열
    이분탐색
    투포인터
    정렬
    구현
    매개변수탐색
    수학
    시뮬레이션
    누적합
    너비우선탐색
    백준
    다이나믹프로그래밍
    그래프이론
    티스토리챌린지
    브루트포스 알고리즘
    오블완
    그리디알고리즘
    그래프탐색
    최단경로
    자료구조
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
DROPDEW
[코테 대비] BFS/DFS 정리 + 차이점
상단으로

티스토리툴바