모든 쌍 최단거리 알고리즘
플로이드 워셜 알고리즘은 그래프상의 모든 노드 쌍에 대한 최단 거리를 계산합니다.
모든 노드쌍에 대한 최단 거리를 계산하기 때문에 보통 2차원 배열에 최단 거리를 저장합니다.
노드 u 에서 노드 v로의 최단 거리는 2차원 배열 u행 v열에 저장합니다.
최단거리 업데이트 : 경유점
최초로 주어지는 최단 거리 2차원 배열은 바로 인접한 엣지의 가중치입니다.
노드 u와 노드 v 사이의 거리는 다른 노드들을 거친다고 할 때 더 짧아질 수 있으면 업데이트할 수 있습니다.
최단거리 배열 dist[u][v]의 값이 노드 k를 거친 값 dist[u][k] + dist[k][v] 보다 크다면,
dist[u][v]를 dist[u][k] + dist[k][v] 값으로 업데이트합니다.
이를 모든 노드에 대해 계산하면, 2차원 배열의 값은 모든 노드들이 k를 거칠 수 있을 때의 최단 거리가 됩니다.
이제 k에 모든 노드들을 하나씩 대입해서 계산하면 2차원 배열의 값은 모든 노드들간의 최단거리가 됩니다.
구현
'알고리즘 > 그래프' 카테고리의 다른 글
[그래프 알고리즘]프림 알고리즘(MST) (0) | 2022.07.11 |
---|---|
[그래프 알고리즘]존슨 알고리즘(플로이드워셜보다 좋은 이유) (0) | 2022.07.11 |
[그래프 알고리즘]벨만포드 알고리즘 (0) | 2022.07.10 |
[그래프 알고리즘]다익스트라 알고리즘 (0) | 2022.07.10 |
[그래프 알고리즘]위상정렬 (0) | 2022.07.10 |