그래프
- 그래프란 노드(Node)와 간선(Edge)로 이루어진 연결 구조입니다.
- 노드는 점을 의미하고, 간선은 노드간 연결되어 있는 선을 의미합니다.
가중 그래프
- 가중 그래프는 간선에 숫자를 부여해서 무게나 비용을 의미하게 만든 그래프입니다.
방향 그래프
- 방향 그래프는 간선에 방향을 부여해서 특정 방향으로만 이동할 수 있는 그래프입니다.
- 방향 그래프가 아닌 그래프는 양방향그래프라고 생각하면 됩니다.
- 가중 그래프처럼 비용, 무게를 부여할 수 있습니다.
너비 우선 탐색 (Breadth First Search)
- 시작점에서부터 목표점까지 갈 수 있는지 탐색하는 알고리즘입니다.
- 시작점에서 가까운 곳 부터 방문하는 알고리즘입니다.
- 선입선출 구조로 Queue(큐)를 주로 이용합니다.
ex) A에서 출발하여 E를 찾으시오.
1) 우선 가장 가까운 B와 C에 접근할 수 있습니다.
2) B에 접근한 상황이고, D, E에 접근할 수 있습니다.
3) C에 접근한 상황이고, F에 접근할 수 있습니다.
4) D에 접근한 상황이고, 추가로 접근 가능한 노드가 없습니다.
5) E에 접근한 상황이고, 원하는 도착지를 찾아서 탐색을 종료합니다.
깊이 우선 탐색 (Depth First Search)
- 시작점에서부터 목표점까지 갈 수 있는지 탐색하는 알고리즘입니다.
- 자식 노드가 존재한다면 자식노드를 먼저 탐색하는 알고리즘입니다.
- 후입선출 방식이므로 스택(Stack) 자료구조를 사용합니다.
ex) A에서 출발하여 E를 찾으시오.
1) A에서 첫 자식인 B를 탐색합니다. D, E에 접근이 가능합니다.
2) B의 첫 자식인 D를 탐색합니다. 추가로 접근 가능한 노드가 없습니다.
3) B의 두번째 자식인 E를 탐색합니다. 원하는 도착지를 찾아서 탐색을 종료합니다.
예시 문제
BFS와 DFS를 연습할 수 있는 가장 기본 문제는 아래 문제입니다.
백준 1260번 문제 : DFS와 BFS
https://www.acmicpc.net/problem/1260
이건 제가 Java로 푼 1260번 문제입니다.
https://naknak.tistory.com/128
BJ S2 1260 DFS와 BFS - Java
[문제링크]https://www.acmicpc.net/problem/1260 [문제]그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작
naknak.tistory.com
'CS 지식 > 자료구조_알고리즘' 카테고리의 다른 글
최소 신장 트리(MST) : 크루스칼(Kruskal) & 프림(Prim) (0) | 2025.01.15 |
---|---|
벨만-포드(Belman-Ford) 알고리즘 & 다익스트라(Dijkstra) 알고리즘 & A* 알고리즘 (0) | 2025.01.14 |
이진 탐색 (Binary Search) (0) | 2025.01.13 |
힙 정렬(Heap Sort), 병합 정렬(Merge Sort), 퀵 정렬(Quick Sort) (0) | 2025.01.12 |
버블 정렬(Bubble Sort) vs 선택정렬(Selection Sort) vs 삽입정렬(Insertion Sort) (0) | 2025.01.11 |
댓글