justgo_developer

깊이우선탐색(DFS) 본문

IT/알고리즘

깊이우선탐색(DFS)

다날92 2018. 1. 3. 15:40
728x90
반응형


1. 출발점 s에서 시작한다.

2. 현재 노드를 visited로 mark하고 인접한 노드들 중 unvisited 노드가 존재하면 그 노드로 간다.

3. 2번을 계속 반복한다.

4. 만약 unvisited인 이웃노드가 존재하지 않는 동간 계속해서 직전 노드로 되돌아간다.

5. 다시 2번을 반복한다.

6. 시작노드 s로 돌아오고 더 이상 갈 곳이 없으면 종료한다.


DFS(G, v)

visited[v] <- Yes;

for each node u adjacent to v do

if visited[u] = No then

DFS(G,u);

end

end


그래프가 disconnected이거나 혹은 방향그래프라면 DFS에 의해서 모든 노드가 방문되지 않을 수도 있음


DFS를 반복하여 모든 노드 방문


DFS-ALL(G)

{

for each v∈ V

visited[v] <- no;

for each v∈ V

 if(visited[v] = no ) then

     DFS(G,v);

}



728x90
반응형

'IT > 알고리즘' 카테고리의 다른 글

최소비용신장트리(minimum spanning tree)-1  (0) 2018.01.04
방향그래프-DAG(Directed Acyclic Graph)  (0) 2018.01.03
정렬(sort)  (0) 2018.01.02
순환(recursion)  (0) 2018.01.02
BFS(Breath-First Search, 너비우선순회)  (0) 2018.01.02