티스토리 뷰

알고리즘/그래프

플로이드 와샬

hellogaon 2018. 7. 22. 22:12

플로이드 와샬(Floyd Warshall)은 간선에 비용이 있는 그래프에서

모든 점에서 모든 점까지의 최단거리를 구할 수 있는 모든 쌍 최단거리 알고리즘입니다.

이 알고리즘은 반복적 동적 계획법과 슬라이딩 윈도우 기법을 사용하며

dist[i][j]는 i 정점에서 j 정점까지의 최단거리를 뜻할 때

거치는 점(k) - 출발점(i) - 도착점(j) 순의 3중 포문을 이용하여

매 k마다 모든 i, j값을 순회하여 k 정점을 추가적으로 경유하였을 때의 값이 더 작은 경우(dist[i][j] > dist[i][k] + dist[k][j])

dist[i][j]값을 갱신하여 최단거리를 저장합니다.

3중 포문의 형태를 띄고 있으므로 시간복잡도는 정점 개수가 V일 때 O(V^3)이 되며

코드가 매우 간결하므로 V가 크지 않을 경우의 최단거리를 구할 때에도 유용하게 쓸 수 있는 알고리즘입니다.



기본 문제


11404번: 플로이드
1956번: 운동
2610번: 회의준비





'알고리즘 > 그래프' 카테고리의 다른 글

벨만 포드  (0) 2018.07.22
다익스트라  (2) 2018.07.22
최소 스패닝 트리  (0) 2018.07.18
2-SAT  (0) 2018.07.18
SCC  (0) 2018.07.18
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday