DFS,BFS 에 대해 설명하는 글입니다.
기본적인 자료구조, 개념에 대한 이해를 설명하는 글입니다.
BFS, DFS 두 가지 모두 그래프를 탐색하는 방법입니다.
그래프란, 정점(node)과 그 정점을 연결하는 간선(edge)으로 이루어진 자료구조의 일종을 말하며, 그래프를 탐색한다는 것은 하나의 정점으로부터 시작하여, 차례대로 모든 정점들을 한 번씪 방문하는 것을 말한다.
루트 노드에서 시작해서 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방식을 의미
ex) 미로찾기를 할 때 최대한 한 방향으로 갈 수 있을 때 까지 쭉 가다가
더 이상 갈 수 없게 되면 다시 가장 가까운 갈림길로 돌아와그 갈림길부터
다시 다른 방향으로 탐색하는 방식을 깊이 우선 탐색 방식이다.
루트 노드에서 시작해서 인접한 노드를 먼저 탐색하는 방법으로, 시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 순회 방법이다.
주로 두 노드 사이의 최단 경로를 찾고 싶을 때, 이 방법을 선택한다.
ex 지구 상에 존재하는 모든 친구 관계를 그래프로 표현한 후 ,
Sam 과 Eddie 사이에 존재하는 경로를 찾는 경우
깊이 우선 탐색의 경우 - 모든 친구 관계를 다 살펴볼 경우가 존재 (최악의 경우)
너비 우선 탐색의 경우 - SAM과 가까운 관계부터 탐색
두 방식 모두 조건 내의 모든 노드를 검색한다는 점에서 시간 복잡도는 동일하다. DFS,BFS 둘 다 다음 노드가 방문하였는지를 확인하는 시간과 각 노드를 방문하는 시간을 합하면 된다.