Clolent

그래프를 탐험하는 두 가지 방법 

DFS   |   BFS

Depth-first Search    | Breadth-first Search

깊이 우선 탐색  | 너비 우선 탐색


그래프를 탐험하는 것은 Sequential 하지 않기 때문에 알고리즘이 필요하다. 



DFS ( Depth-First Search for Digraph ) 

깊이 우선 탐색이라 불리며 임의의 한 정점을 잡고 재귀적으로 갈 수 있는 모든 정점들을 가 볼 때 까지 가보는 것


용어 정리

visited node : 이미 처리가 끝난 노드로 더이상 이 노드에 대해 처리할 필요가 없다

unvisited  node : 아직 한번도 접근되지 않은 노드로 처리 되어야 한다.


unvisited = 노랑 / visited = 검정


자기자신을 visited 하고 갈 수 있는 녀석을 기점으로 다시 재귀적으로 시작,

더이상 갈수 없으면 RETURN 


정말 단순하게 말하면 이게 끝이다. 


BFS ( Breadth-First Search for Digraph ) 

너비 우선 탐색으로 Queue를 이용한다. 깊이가 1인 정점들에 대해 모두 visit 후 깊이가 2인 정점들에 대해, 3인 정점들에 대해 ... 의 순서로 처리하는 방식


임의의 정점을 시작으로 가까운정점 -> 먼 정점으로 탐색의 범위를 점점 넓히게 된다.


나 자신에 대해 Visit 수행 후, 나로부터 갈 수 있는 녀석들을 모두 Queue에 push,

그리고 POP ( 나 자신이 삭제되게 될것이다. )

더이상 Queue에 아무것도 남지 않으면 탐색 끝


그림으로 이해하자 

Queue에 들어가 있는 것 : 회색

Visit 됨 : 검은색

Unvisited : 흰색 

 


앞서 언급 됬었던 Strongly Connected Component를 

찾기 위한 모험은

http://jason9319.tistory.com/98

이곳에 아주 친절히 잘 나와 있다.


'Programing > C++ Algorithm' 카테고리의 다른 글

자료구조 그래프 개론  (0) 2017.06.10
[ 자료구조 ] 큐 복습 ( Queue )  (1) 2017.03.23
[ 자료구조 ] 스택 복습 ( Stack )  (0) 2017.03.23
가장 기본적인 정렬 Bubble Sort  (0) 2016.07.08
힙 Heap 이란  (0) 2016.07.06
댓글 로드 중…

블로그 정보

Clolent - 커피물조절달인

최근에 게시된 글