다익스트라 : 음수 가중치 가진 그래프에서 최단 경로 못 찾음
- 그리디 알고리즘은 한번 확정된 해에 대해 수정하지 않기 때문 -> 확정된점에 대한 간선 완화 수행 안 함
그리디 쓰지 말고, 확정된 점 & 미확정된 점으로 구분 짓지 않고 간선완화해야 함
음수 사이클 : 사이클 상의 간선의 가중치의 합이 음수인 사이클
경로상에서 음수 사이클 반복할수록 거리 더 짧아짐
=> 최단 경로 찾는 입력 그래프엔 음수 사이클이 없다고 가정
출발점에서 시작해 좌->우로 간선 완화를 단계적으로 수행하여 직전 점의 결과가 다음 점에 연속하여 반영돼도록 해야함
➡️ 그래프의 출발점에서 간선 수만 카운트하여 가장 멀리 떨어져 있는 점을 서로 반대 방향을 잡아 당겨보자!
선형 아닌 그래프는 점 구분 어려움
➡️ 모든 점에 대해 간선완화 시도!
정점 : 0,~n-1, 알고리즘 종료 후 D[i]=출발점 s에서 점 i까지의 최단 거리
inf
로 초기화if D[j] > (D[i] + 간선 <i,j>의 가중치):
D[j] = D[i] + 간선 <i,j>의 가중치 # 간선 완화
previous[j] = i # 정점 i가 j의 직전 정점으로 업데이트
각 간선 <i,j>에 대해 간선 완화를 n-1회 시도함