[알고리즘] 최단 경로(Shortest Path) 알고리즘

최단 경로(Shortest Path) 알고리즘에 대해 알아보자 :)

Jan 26, 2026

최단 경로 알고리즘이란?

📌
최단 경로(Shortest Path) 알고리즘
그래프 상에서 두 노드(정점) 사이의 최단 거리(최소 비용) 를 찾는 알고리즘
ex) 지도 앱에서 목적지까지 가장 빠른 길을 찾는 네비게이션 기능

최단 경로 알고리즘 특징

  • 그래프 기반: 정점(Vertex)과 간선(Edge)으로 표현되는 구조에서 사용
  • 가중치 고려: 간선마다 가중치(거리, 비용, 시간 등)가 존재
  • 다양한 조건 최적화: 최소 거리, 최소 비용, 최소 시간 등을 찾음
  • 응용 분야가 넓음: 네트워크 라우팅, 교통 경로 탐색, 물류 최적화 등

최단 경로 알고리즘 실제 적용 사례

  • 네비게이션 서비스: 지도 앱의 길찾기 (카카오맵, 구글 지도)
  • 통신 네트워크 라우팅: 데이터 전송 시 최적 경로 선택
  • 물류/배달 경로 최적화
  • 게임 AI: 캐릭터 이동 경로 탐색

주요 최단 경로 알고리즘 종류

알고리즘
특징
시간 복잡도
활용 예시
다익스트라(Dijkstra)
한 출발지 → 모든 정점 최단 경로
O(E log V) (우선순위 큐 사용 시)
도로 네트워크, 네비게이션
벨만-포드(Bellman-Ford)
음수 가중치 허용, 음수 사이클 검출 가능
O(VE)
금융 네트워크 분석
플로이드-워셜(Floyd-Warshall)
모든 정점 쌍 최단 경로
O(V³)
도시 간 이동 경로, 네트워크 분석
A* (에이 스타)
휴리스틱 기반 탐색, 빠른 길 찾기
O(E)
게임, 로봇 경로 탐색

최단 경로 알고리즘의 단계

순서
절차
1
출발 노드를 설정하고, 최단 거리 테이블을 무한대로 초기화
2
출발 노드의 거리를 0으로 설정
3
방문하지 않은 노드 중 최단 거리가 가장 짧은 노드를 선택
4
해당 노드를 거쳐 다른 노드로 가는 거리를 계산해, 기존 값과 비교 후 갱신
5
모든 노드를 방문할 때까지 3~4를 반복

최단 경로 알고리즘 구현 (ex. python)

import heapq def dijkstra(graph, start): # graph: {노드: [(비용, 연결노드), ...]} distances = {node: float('inf') for node in graph} distances[start] = 0 queue = [(0, start)] # (거리, 노드) while queue: current_dist, current_node = heapq.heappop(queue) if current_dist > distances[current_node]: continue for next_dist, next_node in graph[current_node]: distance = current_dist + next_dist if distance < distances[next_node]: distances[next_node] = distance heapq.heappush(queue, (distance, next_node)) return distances