일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- onclick
- union-find
- Java
- 음수가 포함된 최단경로
- spring boot
- 엔테크서비스
- 기술면접
- 직무면접
- 유니온 파인드
- Django
- 코딩테스트
- 최단경로
- scikit-learn
- Python
- 벨만 포드 알고리즘
- dto
- disjoint set
- top-down
- 우선순위큐
- Controller
- clean code
- Android Studio
- bottom-up
- 다익스트라
- kmeans
- 동적계획법
- BufferedReader
- 플로이드 와샬
- compiler
- 거쳐가는 정점
Archives
- Today
- Total
춤추는 개발자
[그래프] 벨만-포드 알고리즘 본문
728x90
반응형
벨만-포드 알고리즘
- 앞서 포스팅한 다익스트라와 유사한 최단경로 알고리즘입니다.
- 다익스트라와의 차이점은 가중치가 음수가 포함된 상황에서도 적용 가능하다는 특징입니다.
- 정점의 개수가 N이라면 시작 노드를 제외한 (N-1)회 반복문을 수행하여 최단 경로를 구할 수 있습니다.
public static void checkedTimeMachine() {
minTime[1] = 0;
for(int i=0; i<N-1; i++) {
for(Bus bus: buses) {
int s = bus.start;
int e = bus.target;
if(minTime[s] == MAX) continue;
if(minTime[e] > minTime[s] + bus.time) {
minTime[e] = minTime[s] + bus.time;
}
}
}
}
반복문을 왜 (N-1)회 반복하는지 궁금해 결과값을 출력하면서 확인해봤습니다. 해당 문제는 1번 노드에서 다른 노드까지 이동하는데 최소 시간을 구하는 문제이며, 반복문이 한번 돌 때마다 1번 노드로 부터 특정한 하나의 노드까지의 최소 비용이 계산됩니다. 즉, [반복문 1번 = 하나의 노드까지의 최소 비용]
728x90
반응형
'Developer's_til > 자료구조 & 알고리즘' 카테고리의 다른 글
[문자열 탐색] Naive 알고리즘과 Hashing 기법 (0) | 2021.06.04 |
---|---|
[동적계획법] Top-down과 Bottom-up (0) | 2021.03.31 |
[자료구조] Union-find (0) | 2021.03.29 |
[그래프] 플로이드 와샬 알고리즘 (0) | 2021.03.29 |
[그래프] 다익스트라 알고리즘 (0) | 2021.03.29 |