본문 바로가기

자료구조 with C/그래프

DFS

Depth First Search (DFS, 깊이 우선 탐색)

그래프 정렬 알고리즘의 기반이 된다

더 나아갈 길이 보이지 않을 때까지 깊이 들어간다

재귀를 이용

 

1. 시작 정점을 밟은 후 이 정점을 '방문했음'으로 표시

2. 이 정점과 이웃 정점 중 아직 방문하지 않은 곳을 선택하여

    이를 시작 정점으로 삼고 다시 깊이 우선 탐색

3. 더 이상 방문하지 않은 이웃 정점이 없으면 이전 정점으로 돌아가 단계 2 수행

4. 이전 정점으로 돌아가도 더 이상 방문할 이웃 정점이 없다면

    모든 정점을 방문했으므로 탐색 종료

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void DFS( Vertex* V )
{
    Edge* E = NULL;
 
    printf("%d ", V->Data);
 
    V->Visited = Visited;
 
    E = V->AdjacencyList;
 
    while ( E != NULL )
    {
        if ( E->Target != NULL && E->Target->Visited == NotVisited )
            DFS( E->Target );
 
        E = E->Next;
    }
}
 
cs

 

 

'자료구조 with C > 그래프' 카테고리의 다른 글

최소 신장 트리  (0) 2023.04.12
BFS  (0) 2023.02.17
그래프 기초  (0) 2023.02.16