Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 노마드코더 강의
- 달빛클럽 1기
- 리액트
- Java
- 프로그래머스
- Array
- dfs
- 알고리즘
- HashMap
- 자바
- 인플레이션에서 살아남기
- 백준
- 노마드코더
- 경제공부
- SWEA
- JPA
- React
- 달빛캠퍼스
- SoftwareExpertAcademy
- programmers
- Algorithm
- React.js
- 카카오블라인드코딩테스트
- Stack
- ReactJS로 영화 웹 서비스 만들기
- 재귀
- 달빛클럽1기
- 완전탐색
- BOJ
- 달빛클럽
Archives
- Today
- Total
th42500의 TIL
BFS (Breadth-First Search) 본문
BFS (Breadth-First Search)
✔ 그래프 탐색 알고리즘
탐색(Search)이란 많은 양의 데이터 내에서 원하는 데이터를 찾는 과정을 의미
✔ BFS
- 그래프에서 부모 노드를 먼저 방문한 후, 방문했던 부모 노드의 자식 노드를 차례로 탐색하는 알고리즘으로, 너비 우선 탐색이라고도 불림
- 선입선출 형태의 Queue자료구조 활용
- 트리일 경우 순회 방향 (번호 순서대로 진행)
- 시간복잡도 : O(V+E) 👉 V : 노드 수, E : 에지 수
✔ 동작 과정
1️⃣ 탐색 시작 노드를 Queue에 삽입하고 방문 처리
2️⃣ Queue에서 노드를 꺼낸 뒤에 해당 노드의 인접 노드 중 방문하지 않은 노드를 모두 큐에 삽입하고 방문 처리
3️⃣ 2️⃣ 과정을 수행할 수 없을 때까지 반복
✔ 예시
1️⃣ 시작 노드 1을 Queue에 삽입하고 방문 처리
2️⃣ Queue에서 노드 1을 꺼내 방문하지 않은 인접 노드 2, 3, 8을 Queue에 삽입하고 방문 처리
3️⃣ Queue에서 노드 2를 꺼내 방문하지 않은 인접 노드 7을 Queue에 삽입하고 방문 처리
4️⃣ Queue에서 노드 3을 꺼내 방문하지 않은 인접 노드 4, 5를 Queue에 삽입하고 방문 처리
5️⃣ Queue에서 노드 8을 꺼냈지만 방문하지 않은 인접 노드가 없으므로 Queue에 인접 노드를 삽입하지 않고 진행
6️⃣ Queue에서 노드 7을 꺼내 방문하지 않은 인접 노드 6을 Queue에 삽입하고 방문 처리
7️⃣ 이후 Queue에서 노드 4, 5, 6을 차례로 꺼내고 모두 방문하지 않은 인접 노드가 없으므로 Queue에 더이상 삽입하지 않고 진행
Queue가 비어있으면 위의 과정들을 멈춤
👉 이러한 과정을 반복하였을 때 전체 노드의 탐색 순서(Queue에 삽입되었다가 나온 순서)는 1>2>3>8>7>4>5>6
✔ 슈도 코드(pseudocode)
G : 그래프
BFS(v) // v: 탐색 시작 정점
Queue<>() q = new LinkedList<>(); // Queue 생성
q.add(v); // 시작 정점 v를 Queue에 삽입
visited[v] ← TRUE // v 방문 처리
While (!q.isEmpty())
t <- Queue의 첫 번째 원소 반환
for (t와 연결된 모든 간선에 대해) {
u <- t의 인접 정점
if(!visited[u]) // u가 방문되지 않은 정점이라면
q.add(u); // u를 Queue에 삽입
visited[u] = true; // u 방문 처리
'Algorithm > Concept' 카테고리의 다른 글
피보나치 수열 & 메모이제이션(memoization) (0) | 2022.04.18 |
---|---|
조합 (Combination) (0) | 2022.03.14 |
배열(Array) (0) | 2021.12.22 |
DFS (Depth-First Search) (0) | 2021.12.22 |
그리디 알고리즘 (0) | 2021.12.20 |
Comments