[Algorithm] DFS & BFS

GamzaTori·2024년 4월 22일

Algorithm

목록 보기
26/133
post-thumbnail

DFS 와 BFS

  • 한 방향으로 갈 수 있을 때까지 가다가 더 이상 갈 수 없을 때 가장 최근 갈림길로 돌아와 다른 길을 선택하여 다시 진행하는 방법
  • 가능한 모든 경로를 탐색
  • 스택 또는 재귀함수(가장 보편적이고 코드가 짧음) 이용

[출처"https://developer-mac.tistory.com/64"]

동작 방식



그래프 구현 - 인접행렬

간선으로 이어진 정점 i,j가 그래프에
존재한다면?

M[i][j] = 1

존재하지 않는다면?

M[i][j] = 0

장점

  • 구현이 간단
  • 정점끼리의 연결 여부를 쉽고 편리하게 확인 가능

단점

  • 메모리의 부담 : 간선의 수와는 관계 없이 n^2의 2차원 배열이 필요
  • 노드에 비해 간선이 적으면 비효율적 : 간선의 수와는 관계 없이 모든 노드를 확인해야 함

  • 시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 방법
  • 큐를 이용하여 구현
  • 재귀로 동작하지 않음

[출처 : https://developer-mac.tistory.com/64]

깊이 우선 탐색의 분석

  • 인접 행렬 -> O(n^2)
  • 인접 리스트 -> O(n+e)

-> DFS와 BFS의 시간복잡도는 같음


다만 DFS와 BFS를 선택함에 있어서 차이점이 존재한다


profile
게임 개발 공부중입니다.

0개의 댓글