다익스트라 알고리즘은 가중치가 있는 방향 그래프에서 주어진 시작 정점에서 다른 모든 정점까지의 최단 거리를 구하는 알고리즘이다. 이 알고리즘은 음수 가중치를 가진 간선을 허용하지 않습니다.
C에서 다익스트라 알고리즘을 구현할 때는 자료구조를 직접 구현하고, 메모리 할당 및 해제를 명시적으로 처리해야 할 가능성이 높습니다.
#include <stdio.h>
#include <limits.h>
// 간단한 다익스트라 알고리즘 예제
void dijkstra(int graph[9][9], int start) {
// ... (코드 생략)
}
int main() {
// 그래프는 인접 행렬로 표현
int graph[9][9] = { /* 초기화 */ };
dijkstra(graph, 0);
return 0;
}
Python에서는 표준 라이브러리를 활용해 구현이 간결하며, 메모리 관리를 자동으로 처리해줍니다.
import heapq
def dijkstra(graph, start):
# ... (코드 생략)
graph = {
'A': {'B': 1, 'C': 4},
'B': {'A': 1, 'C': 2, 'D': 5},
'C': {'A': 4, 'B': 2, 'D': 1},
'D': {'B': 5, 'C': 1}
}
dijkstra(graph, 'A')
C에서는 성능 최적화와 메모리 관리에 유리하지만, 구현이 복잡하고 디버깅이 어려울 수 있습니다. Python은 라이브러리를 활용하여 빠르고 쉽게 프로토타입을 만들 수 있지만, 실행 속도가 상대적으로 느릴 수 있습니다.