플로이드 와샬 알고리즘은 모든 정점 간의 최단 경로를 찾는 알고리즘입니다. 가중치 그래프에서 사용될 수 있으며, 다이나믹 프로그래밍을 기반으로 합니다.
#define INF 99999
#define V 4
void floydWarshall(int graph[][V]) {
int dist[V][V], i, j, k;
for (i = 0; i < V; i++) {
for (j = 0; j < V; j++) {
dist[i][j] = graph[i][j];
}
}
for (k = 0; k < V; k++) {
for (i = 0; i < V; i++) {
for (j = 0; j < V; j++) {
if (dist[i][j] > dist[i][k] + dist[k][j]) {
dist[i][j] = dist[i][k] + dist[k][j];
}
}
}
}
// 결과 출력 생략
}
INF = 99999
V = 4
def floydWarshall(graph):
dist = list(map(lambda i: list(map(lambda j: j, i)), graph))
for k in range(V):
for i in range(V):
for j in range(V):
dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j])
# 결과 출력 생략
두 언어 모두 플로이드 와샬 알고리즘을 구현하는 데 충분히 적합하며, 어떤 언어를 사용할지는 개발 환경, 성능 요구사항, 그리고 개발 팀의 노하우에 따라 결정될 수 있습니다.