DSData StructuresPython learning path
0 / 12 완료
LESSON 11

최단 경로

출발점에서 각 위치까지의 최소 비용을 확정하는 탐색

왜 최단 경로을 쓸까요?

지도뿐 아니라 네트워크 지연, 작업 비용, 상태 전환 횟수처럼 ‘도달 비용’을 최소화하는 문제에 씁니다. 간선 비용의 조건에 따라 BFS 또는 다익스트라를 선택합니다.

LIFE EXAMPLE

생활 속에서 먼저 이해해 볼까요?

코드를 생각하지 말고, 아래 상황이 어떤 순서로 움직이는지만 따라가 보세요.

현실 예시 1

자동차 내비게이션

가장 짧은 길이 아니라 신호와 정체 시간을 모두 더해 가장 빨리 도착하는 길을 골라 줍니다.

자료구조와 연결하면도로마다 비용이 다른 그래프에서 누적 비용이 최소인 경로를 찾습니다.
현실 예시 2

화재 대피

벽을 지나갈 수 없는 건물에서 출구까지 몇 칸만 이동하면 되는지 가까운 칸부터 확인합니다.

자료구조와 연결하면모든 이동 비용이 같다면 BFS가 최소 이동 횟수를 보장합니다.

실무에서는 이렇게 씁니다

코딩 테스트의 장난감 예제를 넘어, 실제 시스템에서 같은 원리가 어디에 숨어 있는지 연결해 보세요.

01

라우팅

출발지에서 목적지까지 거리·시간·요금이 최소인 경로를 찾습니다.

02

서비스 의존성

호출 그래프에서 누적 지연이 가장 작은 경로를 계산합니다.

03

게임·로봇

장애물을 피하며 이동 횟수나 지형 비용이 최소인 경로를 찾습니다.

04

택배 배송

여러 도로의 거리와 통행 시간을 비교해 가장 빠른 배송 경로를 정합니다.

05

클라우드 네트워크

서버 사이 지연 시간을 합산해 요청이 가장 빨리 도착하는 경로를 고릅니다.

어떤 원리로 동작하나요?

모든 간선 비용이 같으면 BFS의 레벨이 곧 최단 거리입니다. 비용이 서로 다른 비음수 간선에서는 다익스트라가 우선순위 큐로 가장 가까운 미확정 정점을 골라 거리를 완화(relax)합니다.

핵심 연산과 비용

연산Python 표현시간
무가중 최단 거리BFSO(V+E)
비음수 가중치Dijkstra + heapO((V+E) log V)
거리 완화new < dist[v]간선마다
경로 복원parent 저장O(V)
STEP BY STEP

A→B(4), A→C(1), C→B(2)

  1. 1
    초기dist[A]=0, 나머지=∞
  2. 2
    A 확정dist[B]=4, dist[C]=1
  3. 3
    C 확정C를 거치면 B=1+2=3 → 갱신
  4. 4
    B 확정최단 거리 A→C→B = 3

⚠ 자주 하는 실수

  • 가중치가 다른 그래프에 일반 BFS를 쓰면 최소 비용이 보장되지 않습니다.
  • 다익스트라는 음수 가중치가 있으면 사용할 수 없습니다.
  • 힙에서 꺼낸 거리가 이미 기록된 거리보다 크면 오래된 항목이므로 건너뜁니다.