행위

DFS

조무위키

주의. 이 문서는 공머생들이 좋아하는 주제 혹은 공머생 그 자체에 대해 다룹니다.
본 문서가 다루는 내용에 지나치게 탐닉할 경우 필연적으로 여성들과 멀어지게 됩니다.
이는 조무위키가 책임지지 않습니다.

Depth First Search, 다른 말로 깊이 우선 탐색이라고 한다.

그래프가 있으면 방문 안한것들이 보일 때 마다 방문하는거다. BFS처럼 가까운 거 먼저 탐색하는게 아니라서 깊은 지점에 있는 것을 탐색할때는 유용하다.

구현할 때 스택 아니면 재귀로 구현하는데 재귀가 훨씬 편하다.

의사코드로 표현하면 다음과 같다.

 FUNCTION DFS(int src):
   Mark src as visited
   FOR i in graph[src]:
     IF i is not visited:
       VISIT i

C++로 표현하면 다음과 같다.

 void DFS(int src){
   Mark src as visited
   for(int i = 0;i<graph[src].size();i++){
     if(visited[graph[src][i]] == false) DFS(graph[src][i]);
   }
 }

그래프 탐색에서는 존나게 중요한 알고리즘 중 하나로 너비 우선 탐색하고 같이 많이 쓰인다. 보다시피 코드가 짧아서 사실 너비우선탐색보다 구현은 편하다.