자료구조 - Shortest Path 학습

Shortest Path(최단 경로) 특징

1. 음수 사이클이 없다.

2. 방향 그래프(directed graph)

3. 가중치 그래프(weighted graph)

4. 경로의 길이 : edge 가중치의 합

Screenshot from 2019-08-09 23-50-28

최단 경로 알고리즘의 종류

1. 하나의 출발점과 나머지 모든 목적지

  • Dijkstra 알고리즘(음수 가중치가 없다.)
  • Bellman-Ford 알고리즘(일반적인 경우)

2. 모든(출발점, 목적지) 쌍

  • Floyd-Warshall 알고리즘


Dijkstra 알고리즘

코드 참조 : Dijkstra

Screenshot from 2019-08-09 23-53-16

Relaxation of an edge

Screenshot from 2019-08-09 23-55-33
ex) distance[1] > distance[0] + w[0,1] == 20 > 8 + 4 ㅡ> distance[1] = distance[0] + w[0,1] = 12


Graph representation

Adjacency matrix
Screenshot from 2019-08-09 23-57-33
IMG_7260


Dijkstra 알고리즘 순서

Screenshot from 2019-08-10 00-02-24
Screenshot from 2019-08-10 00-02-37
Screenshot from 2019-08-10 00-02-56
Screenshot from 2019-08-10 00-03-41
Screenshot from 2019-08-10 00-03-57
Screenshot from 2019-08-10 00-06-09
Screenshot from 2019-08-10 00-06-21
Screenshot from 2019-08-10 00-06-44
Screenshot from 2019-08-10 00-07-42


Floyd-Warshall 알고리즘

코드 참조 : Floyd-Warshall

  1. Dynamic Programming(DP)
  2. 모든 (출발점, 목적지) 쌍에 대한 최단 경로

Screenshot from 2019-08-10 00-08-57
Screenshot from 2019-08-10 00-11-35
Screenshot from 2019-08-10 00-12-13
Screenshot from 2019-08-10 00-14-05
Screenshot from 2019-08-10 00-14-16
Screenshot from 2019-08-10 00-15-36
Screenshot from 2019-08-10 00-22-23
Screenshot from 2019-08-10 00-23-37
Screenshot from 2019-08-10 00-36-33
Screenshot from 2019-08-10 00-36-36
Screenshot from 2019-08-10 00-42-14
Screenshot from 2019-08-10 00-42-25
Screenshot from 2019-08-10 00-43-41
Screenshot from 2019-08-10 00-45-02
Screenshot from 2019-08-10 00-45-27
Screenshot from 2019-08-10 00-48-40
Screenshot from 2019-08-10 00-48-42