반응형
깊이 우선 탐색(depth-first search, DFS)은 부모노드부터 왼쪽부터 자식노드가 없을 때까지 탐색하고 탐색하려는 값이 없으면 루트의 다음 자식 노드를 탐색합니다.
- 장점
- 단지 현 경로상의 노드들만을 기억하면 되므로 저장공간의 수요가 비교적 적음
- 목표노드가 깊은 단계에 있을 경우 탐색을 빨리 할 수 있음
- 단점
- 탐색한 결과가 최단 경로가 된다는 보장은 없음
이론출처: https://ko.wikipedia.org/wiki/%EA%B9%8A%EC%9D%B4_%EC%9A%B0%EC%84%A0_%ED%83%90%EC%83%89
너비 우선 탐색(Breadth-first search, BFS)은 시작 노드를 탐색하고 인접한 모든 노드를 우선 탐색하는 방법입니다. 더 이상 탐색히자 않은 노드가 없을 때까지 탐색하지 않은 모든 노드들에 대해서도 너비 우선 탐색을 적용합니다.
Queue를 사용해서 레벨 순서대로 접근해야합니다.
- 장점
- 출발노드에서 목표노드까지의 최단 길이 경로를 보장
- 단점
- 경로가 매우 길 경우에는 탐색 가지가 급격히 증가함에 따라 보다 많은 기억 공간이 필요
- 탐색하려는 값이 없다면 유한 트리에서는 모든 노드를 탐색한 후에 실패로 종료
- 무한 트리에서는 탐색하려는 값이 없을 경우 종료되지 않음
이론출처: https://ko.wikipedia.org/wiki/%EB%84%88%EB%B9%84_%EC%9A%B0%EC%84%A0_%ED%83%90%EC%83%89
깊이 우선 탐색은
인접행렬로 이차원 배열 (int[][])
인접리스트로 LinkedList[], ArrayList[]
넓이 우선 탐색은 Queue
자료구조를 사용하여 구현할 수 있습니다.
다음 포스팅에는 해당 알고리즘을 자바로 구현해보도록 하겠습니다.
반응형
'- others' 카테고리의 다른 글
Gradle Multi Module 프로젝트 생성 (0) | 2021.05.01 |
---|---|
[탐색알고리즘] DFS (0) | 2020.11.21 |
[Bash] jar파일 실행, 외부 설정파일 사용 (0) | 2020.10.29 |
[Kafka] Java 테스트 애플리케이션 제작 및 테스트 (0) | 2020.10.28 |
[Kafka] Error when sending message to topic {topic-name} with key: null, value: 1 bytes with error (0) | 2020.10.28 |