[PS/Tip] BFS vs DFS

2024. 7. 13. 19:02·PS/Tip

이 내용에 대해선 앞으로 보완해나갈 예정입니다. 많은 문제를 풀어보면서 최대한 정리해보겠습니다.

BFS vs DFS

BFS

  • BFS는 시작 정점에서 가까운 정점을 찾는데 적합하다
    • 큐를 이용하여 가까운 원소들부터 탐색하기 때문
  • 최단 거리 경로를 찾는데 적합하다.
    • BFS에서는 특정 정점을 방문할 경우, 시작 정점에서 해당 정점까지의 최단 거리 경로가 보장된다.
  • BFS는 현재 경계에서 인접한 모든 정점을 방문하므로 BFS에 의해 생성된 검색 트리는 짧고 넓은 편이며, 많은 메모리를 필요로 한다

DFS

  • DFS는 대체로 시작 정점에서 멀리 있는 정점을 찾을 때 적합하다.
  • 재귀적인 풀이 방식에 적합하다 (후입선출의 스택 구조를 사용하기 때문)
  • 백트래킹 방식의 PS 풀이에서 적합하다.
  • 모든 경우를 하나 하나 다 탐색해야 하는 경우 적합하다
  • DFS에 의해 생성된 검색 트리는 길고 좁은편이며, 상대적으로 적은 메모리를 필요로 한다.

 

이 외에도 BFS, DFS를 변형한 알고리즘(ex. 프림 알고리즘) 등이 존재하기 때문에, 주어진 상황에 가장 적합한 알고리즘을 선택!

'PS > Tip' 카테고리의 다른 글

[PS/Tip] 크루스칼 알고리즘 VS 프림 알고리즘  (0) 2024.07.13
[PS/Tip] VS Code에서 <bits/stdc++.h> include 하는 방법(MacOS 기준)  (0) 2024.06.26
'PS/Tip' 카테고리의 다른 글
  • [PS/Tip] 크루스칼 알고리즘 VS 프림 알고리즘
  • [PS/Tip] VS Code에서 <bits/stdc++.h> include 하는 방법(MacOS 기준)
lumana
lumana
배움을 나누는 공간 https://github.com/bebeis
  • lumana
    Brute force Study
    lumana
  • 전체
    오늘
    어제
    • 분류 전체보기 (456)
      • Software Development (27)
        • Performance (0)
        • TroubleShooting (1)
        • Refactoring (0)
        • Test (8)
        • Code Style, Convetion (0)
        • DDD (0)
        • Software Engineering (18)
      • Java (71)
        • Basic (5)
        • Core (21)
        • Collection (7)
        • 멀티스레드&동시성 (13)
        • IO, Network (8)
        • Reflection, Annotation (3)
        • Modern Java(8~) (12)
        • JVM (2)
      • Spring (53)
        • Framework (12)
        • MVC (23)
        • Transaction (3)
        • AOP (11)
        • Boot (0)
        • AI (0)
      • DB Access (1)
        • Jdbc (1)
        • JdbcTemplate (0)
        • JPA (14)
        • Spring Data JPA (0)
        • QueryDSL (0)
      • Computer Science (129)
        • Data Structure (27)
        • OS (14)
        • Database (10)
        • Network (21)
        • 컴퓨터구조 (5)
        • 시스템 프로그래밍 (23)
        • Algorithm (29)
      • HTTP (8)
      • Infra (1)
        • Docker (1)
      • 프로그래밍언어론 (15)
      • Programming Language(Sub) (77)
        • Kotlin (1)
        • Python (25)
        • C++ (51)
        • JavaScript (0)
      • FE (11)
        • HTML (1)
        • CSS (9)
        • React (0)
        • Application (1)
      • Unix_Linux (0)
        • Common (0)
      • PS (13)
        • BOJ (7)
        • Tip (3)
        • 프로그래머스 (0)
        • CodeForce (0)
      • Book Review (4)
        • Clean Code (4)
      • Math (3)
        • Linear Algebra (3)
      • AI (7)
        • DL (0)
        • ML (0)
        • DA (0)
        • Concepts (7)
      • 프리코스 (4)
      • Project Review (6)
      • LegacyPosts (11)
      • 모니터 (0)
      • Diary (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
lumana
[PS/Tip] BFS vs DFS
상단으로

티스토리툴바