반응형
개요
1. BFS의 특징 및 설계
특징
- 최단 경로를 찾는다.
- 인접한 모드 노드를 방문 처리를 하며 탐색 한다.
- 단계별로 확장 (방문 처리에 값을 할당) 하여 몇 차수만에 왔는지 기록을 한다.
설계
- 큐(대기열) 및 방문 배열 생성
- 큐에 시작 노드 삽입 후 큐가 빌 때까지 순환 루프를 진행
- 큐에서 맨 앞에 있는 노드를 확인 및 추출
- 현재 노드와 인접한 노드를 탐색하여 존재 한다면 다음 후보를 노드에 추가
- 2 ~ 4번의 루틴을 반복해 준다.
2. Flood Fill
Flood : 홍수, Fill : 채우다.
퍼져 나가면서 방을 채우듯이 채워 나가며 진행하는 N차원 맵상에서의 BFS
일반적인 BFS에서 노드가 아닌 시작 좌표를 기준으로 방향 배열을 통해 특정 방향으로 탐색을 진행하며, 방문 배열에 방문 체크가 아닌 값을 할당해 준다.
단순히 해당 좌표에 도달했는지 여부를 체크하기 보단 도달하기 까지 걸린 시간을 구한다던가 인접해 있는 노드의 그룹이 몇개인지 등 BFS에 조건이 필요한 경우를 구해야 할 경우 Flood Fill을 사용해 주면 된다.
실습
1. 3차원 완전 탐색 문제
대표적인 3차원 거리 탐색 및 완전 탐색 문제로 백준 7569번 토마토 문제가 있다. [링크]
상세 풀이 내용은 하기 링크를 참고 하면 된다. https://zzzz955.tistory.com/157
2. 확산 시뮬레이션 문제
추가로, 조건에 따른 확산 여부를 체크하며 완전 탐색을 하는 문제로는 백준 14502번 연구소 문제가 있다. [링크]
마찬가지로 상세 풀이 내용은 하기 링크를 참고 하면 된다. https://zzzz955.tistory.com/155
728x90
반응형
'알고리즘 공부 > C++' 카테고리의 다른 글
백준 16978번 수열과 쿼리 22 C++ 세그먼트 트리, 오프라인 쿼리 (0) | 2024.08.16 |
---|---|
백준 4386번 별자리 만들기 C++ MST, 최소 신장 트리 (0) | 2024.08.15 |
백준 1922번 네트워크 연결 C++ MST, 최소 신장 트리 (0) | 2024.08.14 |
백준 1647번 도시 분할 계획 C++ MST, 최소 신장 트리 (0) | 2024.08.14 |
백준 16398번 행성 연결 C++ MST, 최소 신장 트리 (0) | 2024.08.14 |