11-3. [C/C++] Floyd의 최단 경로 알고리즘
·
Computer Science/Data Structure
Floyd의 최단 경로 알고리즘 Floyd-Warshall 알고리즘은 모든 지점에서 다른 모든 지점까지의 최단 경로를 모두 찾는 알고리즘이다. 다익스트라 알고리즘은 출발점이 정해져 있던 것과 달리 플로이드-워셜 알고리즘은 출발점이 정해져 있지 않다. 플로이드 워셜 알고리즘도 다익스트라처럼 단계마다 거쳐 가는 정점을 기준으로 알고리즘을 수행한다. 하지만 매번 방문하지 않은 노드 중에서 최단 거리를 갖는 노드를 찾을 필요가 없다는 점이 다익스트라 알고리즘과 다르다. 노드의 개수가 N개 일 때 알고리즘 상으로 N번의 단계를 수행하며, 단계마다 O(N2)의 연산을 통해 현재 노드를 거쳐 가는 모든 경로를 고려한다. 그래서 총 시간 복잡도는 O(N3)이 된다. 플로이드 워셜 알고리즘에서는 모든 노드에 대해 다른 ..