음수 가중치 엣지가 있어도 수행할 수 있다는 특징
이 있다.전체 그래프에서 음수 사이클의 존재 여부를 판단
할 수 있다.edge 클래스는 일반적으로 노드 변수 2개와 가중치 변수로 구성되어 있다.
최단 거리 리스트에서 업데이트 반복 횟수는 노드 갯수 -1이다.
노드 갯수가 N이고, 음수 사이클이 없을 때 특정 두 노드의 최단 거리를 구성할 수 있는 엣지의 최대 갯수는 N - 1이기 때문이다. 모든 엣지 E = (s, e, w)에서 다음 조건을 만족하면 업데이트를 실행한다.시작점에서 K개의 엣지를 사용했을 때 각 노드에 대한 최단 거리이다.
음수 사이클이 없을 때 최대 엣지 갯수가 나오려면 사향 트리 형태에서 양 도착 노드를 선택해야 한다.
모든 엣지를 한 번씩 다시 사용해 업데이트되는 노드가 발생하는지 확인
한다. 만약 업데이트되는 노드가 있다면 음수 사이클이 있다는 뜻
이되고, 2단계에서 도출한 정답 리스트가 무의미하고 최단 거리를 찾을 수 없는 그래프라는 뜻
이 된다. 음수 사이클이 존재하면 이 사이클을 무한하게 돌수록 가중치가 계속 감소하므로 최단 거리를 구할 수 없다.→실제 코테에서도 벨만-포드 알고리즘을 사용해 최단 거리를 구하는 문제보다 음수 사이클을 판별하는 문제가 더 빈번하게 출제
된다. 따라서 마지막에 한 번 더 모든 엣지를 사용해 업데이트되는 노드가 존재하는지 확인
해야 한다.
출처 - 하루코딩