1. 깊이 우선 탐색(DFS: Depth First Search)
2. 동작원리
1) 정점 i 를 방문한다
2) 정점 i에 인접한 정점 중에서 아직 방문하지 않은 정점이 있으면 이 정점들을 모두 스택에 저장
3) 스택에서 정점을 삭제하여 새로운 i를 설정하고 단계1)을 수행
4) 스택이 공백이 되면 연산을 종료한다
3. 소스
- void DFS(int * arr, int now,int n) // arr : 스택배열, now : 처음 정점, n : 노드의 개수
- {
- int a = 0;
- stackpush(arr,0); // 시작 노드를 스택에 push
- while(stackempty(top) != -1)
- {
- now = stackpop(arr);
- if(visit[now] == 0)
- { // 아직 노드를 방문 하지 않음
- visit[now] = 1; // 방문했던 노드를 표시
- for(a=n;a>0;a--)
- {
- if(visit[a] == 0 && matrix[now][a] == 1) // 인접한 노드중에 방문 안했던 노드를 push
- stackpush(arr,a);
- }
- }
- }
- }
4. 결과
'c언어(알고리즘)' 카테고리의 다른 글
| 너비우선탐색(BFS : Breadth First Search) (0) | 2016.11.08 |
|---|---|
| 큐(Queues) - 배열로 구현(The implementation with the array) (0) | 2016.11.02 |
| 스택(Stacks) - 연결리스트로 구현(The implementation with the linked lists) (0) | 2016.11.01 |
| 스택(Stacks) - 배열로 구현(The implementation with the array) (0) | 2016.11.01 |
| 힙 정렬 (Heap-Sort) (0) | 2016.11.01 |