개요
반드시 알고 있어야 하는 알고리즘 중 하나인 그래프 탐색 알고리즘이다.
너비 우선 탐색(BFS), 깊이 우선 탐색(DFS)이 있다.
그래프가 Connect 상태인지, Unconnect 상태인지 확인하기 위해 사용한다.
선행 지식으로 큐, 스택, 트리, 그래프 자료구조의 이해가 필요하다.
2022.12.30 - [CS/자료구조(data structure)] - [자료구조] 큐(Queue)란?
[자료구조] 큐(Queue)란?
개요 큐(Queue)는 선입선출(First-In Firut-Out) 방식의 선형 자료구조이다. 모양은 사람들이 줄을 서있는 모습을 생각하면 이해가 편하다. 구조 큐는 위의 모양과 같은 구조를 가진다. enqueue : 아이템을
mk-develop.tistory.com
2022.12.27 - [CS/자료구조(data structure)] - [자료구조] 스택(Stack)이란?
[자료구조] 스택(Stack)이란?
개요 Stack 자료구조란 요소들이 후입선출(Last-In First-Out)되는 방식의 자료구조이다. 말 그대로 가장 늦게 들어온 요소가 가장 처음으로 나간다. 구조 스택은 기본적으로 사진 1과 같은 구조를 가
mk-develop.tistory.com
2023.01.10 - [CS/자료구조(data structure)] - [자료구조] 트리(Tree) 기본
[자료구조] 트리(Tree) 기본
개요 트리는 노드들의 계층 관계를 표현한 집합체이다. 모양은 침엽수와 같은 나무를 거꾸로 매달아 놓은 것처럼 생겼는데 이제부터 사진들과 함께 알아 볼 것이다. 트리는 종류가 많은데, 해당
mk-develop.tistory.com
2023.01.25 - [CS/자료구조(data structure)] - [자료구조] 그래표(Graph)란?
[자료구조] 그래표(Graph)란?
개요 그래프는 어떤 데이터 사이의 인접한 정보를 저장하는 자료구조이다. 트리(Tree)도 그래프의 한 종류이다. Objects와 Relationship으로 이루어져 있는데 Object는 저장하고자 하는 객체를 의미하며
mk-develop.tistory.com
너비 우선 탐색(BFS : Breadth-First Search)
너비 우선 탐색(BFS)은 위 사진의 화살표 경로와 같이 같이 루트 노드를 먼저 방문, 그 뒤에 자식 노드, 그리고 그 자식 노드와 같이 깊이 순서대로 탐색한다.
깊이 우선 탐색(DFS : Depth-First Search)
깊이 우선 탐색(DFS)은 위 사진의 화살표가 이동하는 경로와 같이 깊이가 깊어지는 순서대로 먼저 탐색한다.
실행 순서
우선 BFS는 큐(Queue) 자료구조를 사용하고 DFS는 스택(Stack) 자료구조를 사용한다.
순서는 다음과 같다.
1. 어떤 노드를 하나 선택한다.(시작 노드가 주어질 수도 있고, 임의의 노드를 하나 골라도 된다.)
2. 선택한 노드를 방문했다고 체크한다.
3. 이 노드를 큐나 스택에 push한다.
4. 큐나 스택이 비어있지 않을 때까지, 큐나 스택에 무언가 차있을 때까지 반복한다.
5. 매 반복마다 하나의 노드를 큐나 스택에서 pop 한다.(큐의 경우 front pointer, 스택의 경우 top pointer)
6. front나 top 포인터에서 pop한 노드를 V라고 했을 때, 이 V라는 노드 주위에 연결된 노드들 가운데 아직 큐나 스택에 들어가지 않은 노드를 추가한다.
7. 이 노드들을 2번처럼 방문했다고 체크한다.
8. 위 과정들을 큐나 스택이 비어있을 때까지 반복한다.
어떤 노드에 방문했을 때, 이웃 노드를 스택이나 큐에 추가할 때, 추가 순서가 항상 같지는 않다.
'CS > 알고리즘(Algorithm)' 카테고리의 다른 글
[Algorithm] 코드 블럭 단위 복잡도 분석 (0) | 2023.03.15 |
---|---|
[Algorithm] BFS,DFS 알고리즘 구현(C++) (0) | 2023.02.03 |
[Algorithm] 점근 표기법 (0) | 2023.01.17 |
[Algorithm] 선형검색, 이진검색 알고리즘과 점근분석(Linear&Binary search) (0) | 2023.01.13 |
[Algorithm] 알고리즘을 배우는 이유 (0) | 2023.01.13 |