DFS ( 깊이 우선 탐색)
- 재귀 함수로 구현 ( 스택 오버플로우에 유의해야함)
- 스택 자료구조 이용
- 시간 복잡도 O(V+E)
- 단절점 찾기 , 단절선 찾기 , 사이클 찾기 , 위상 정렬
-> 인접 리스트: 한 번 방문한 노드를 다시 방문하면 안됨.
-> 스택 : 후입선출 특성을 가짐
1. DFS를 시작할 노드를 정한 후 사용할 자료구조 초기화
인접 리스트로 그래프 표현하기, 방문 배열 초기화 하기, 시작 노드 스택에 삽입하기
2. 스택에서 노드를 꺼낸 후 꺼낸 노드의인접 노드를 다시 스택에 삽입하기
pop을 수행해 노드를 꺼냄 . 꺼낸 노드의 인접 리스트의 인접 노드를 스택에 삽입해 배열 체크.
3. 스택 값이 없을 때 까지 반복하기
BFS ( 너비 우선 탐색)
- 시작노드 기준으로 가까운 노드를 먼저 방문하면서 탐색
- FIFO 탐색
- 큐 사용
- 최단 경로 보장
1. BFS 를 시작할 노드를 정한 후 사용할 자료구조 초기화하기
인접리즈트로 방문한 노드 체크 , 탐색할 땐 큐 사용
2. 큐에서 노드를 꺼낸 후 꺼낸 노드의 인접 노드를 다시 큐에 삽입
3. 큐 자료구조에 값이 없을 때까지 반복하기
2. 큐에 노드를 꺼낸 후 노드의 인접 노드를 다시 큐에 삽입하기
3.큐에 값이 없을 때까지 반복하기
'코드 공부' 카테고리의 다른 글
백준 1157번 - Python (0) | 2024.04.08 |
---|---|
c++ - 11주차 (0) | 2023.05.22 |
백준 2751번 - c++ (0) | 2023.05.09 |
백준 10824번 c++ (0) | 2023.05.09 |
백준 17299번 c++ (0) | 2023.04.06 |