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 |
Tags
- 순열
- 다익스트라
- 소트 게임
- 백트래킹
- C++
- strtok
- 위상정렬
- C++ 1918
- 조합론
- 가장 긴 증가하는 부분 수열
- C++ 17071
- 인덱스 트리
- c언어
- C++1967
- C++ 1937
- 투포인터
- 백준
- DP
- 프로그래머스
- LIS
- 조합
- 백준 숨바꼭질5
- 문자열
- 알고리즘
- C++1167
- BFS
- 백준 17071
- DFS
- 16933
- Backtracking
Archives
- Today
- Total
블로그
Visit(방문) 체크해주기 -> 다익스트라, bfs, dfs 등 본문
728x90
1. BFS
큐에 넣을 때 방문 체크 해준다
(->안 그러고 다른 방법도 있긴 한데.. 그럼 봤던 노드를 또 봐야 함!)
위의 그림처럼 노드가 중복으로 들어가서 (BFS에서 노드는 큐에 처음 들어간 순간이 무조건 최단거리 확정임) 굳이 또 봐주는 수고를 해야하므로 그런일을 없애기 위해서 그냥 큐에 넣음과 동시에 visit 체크 해주기
2. DFS
문제에 따라 다르지만 보통 상관없다
3. 다익스트라
큐에서 나올때 방문 체크 해준다
이유:
djm03178 님의 설명
다익스트라는 큐에서 빠지기 전까지는 정점에 대한 거리 갱신이 끝난 게 아닙니다. 한 번 우선순위 큐에 어떤 거리로 지정되어 들어갔어도 다른 정점에 의해 거리가 다시 갱신될 수 있습니다. 그러니 큐에 넣는 순간에 바로 방문 체크를 해버리면 안 되고 더 이상 거리 갱신이 일어나지 않을 때까지 (= 그 정점이 큐에서 나올 때까지) 놔둬야 합니다.
--> 참고: https://www.acmicpc.net/board/view/34516
글 읽기 - ★☆★☆★ [필독] 최단경로 (다익스트라 알고리즘) FAQ ★☆★☆★
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
'알고리즘 정리' 카테고리의 다른 글
그래프 이론 - cycle 찾기( + cycle 길이) (0) | 2022.09.06 |
---|---|
다익스트라 응용 : one to All -> All to one 최단거리 구하기 (0) | 2022.09.02 |
위상정렬 알고리즘 (0) | 2022.09.01 |
대소관계 중간값 찾기 알고리즘 (0) | 2022.09.01 |
좌표압축 알고리즘 정리 (0) | 2022.09.01 |
Comments