SlideShare a Scribd company logo
Shortest Path
HI-ARC Wonjae Kim (First Author)
1
Purpose
• 주어진 그래프에서 최단 경로를 찾자!
2
Table of Content
• Bellman-Ford
• Dijkstra
• Floyd-Warshall
• A*(extra)
3
Bellman-Ford
• Bellman Ford가 설계
• 시작점에서 모든 점과의 거리 계산
• Vertex(정점)이 N개 그래프
• 시작점에서 도착점까지 간선의 수 최대 N-1
• 모든 간선들을 N-1번 시도해본다.
• 음수 가중치가 있어도 Ok!
• 방향・무방향 Ok! •∙・
• O(V*E)
• V: Vertex
E: Edge
4
Proof Bellman-Ford
• Vertex가 N개 그래프
• V1에서최소N번을이동해야도달할수있는 VX가있다고가정.
• V1 을 제외하고 방문하는 정점의 수는 N개
• V1 포함하면 정점의 수 N+1 (모순!)
5
How it works? Bellman-Ford(1)
6
∞
∞
∞
∞
∞
∞
How it works? Bellman-Ford(2)
7
1
∞
∞
∞
∞
∞
How it works? Bellman-Ford(3)
8
1
4
2
∞
3
∞
How it works? Bellman-Ford(4)
9
1
4
2
∞
3
5
Negative Cycle Bellman-Ford
• 그래프에 존재하는 음수 사이클 파악 가능!
• 어떻게?
• 모든 간선들을 N-1번 시도해보고, 한 번 더 시도!
• 한 정점이라도 값이 감소하면 음수사이클!
10
How it works? Bellman-Ford_Negative-Cycle(1)
11
∞
∞
∞ ∞
How it works? Bellman-Ford_Negative-Cycle(2)
12
-1
-3
1 4
N-1 번 후…
How it works? Bellman-Ford_Negative-Cycle(3)
13
-1
-3
0 4
N 번 째! C가 바뀜!
Pesudo Code Bellman-Ford
14
Dijkstra
• Dijkstra가 설계
• 시작점에서 모든 점과의 거리 계산
• 현재까지 도달한 정점 중 가장 값이 낮은 것을 선택!
• Greedy Algorithm
• 음수 간선이 존재하면 불가능(하나라도!)
• 방향・무방향 Ok!
• O(V2)
• Priority Queue(우선순위 큐) 사용 시 O(V log E) 15
Dijkstra
• Dijkstra가 설계
• 현재까지 도달한 정점 중 가장 값이 낮은 것을 선택
• 선택된 노드가 도착점이면 끝!
• Greedy Algorithm
• 음수 간선이 존재하면 불가능(하나라도)
• 방향・무방향 Ok!
• O(V2)
• Priority Queue(우선순위 큐) 사용 시 O(V log E)
16
Proof
17
S
E
X
Y
How it works? Dijkstra(1)
18
1
∞
∞
∞
∞
∞
How it works? Dijkstra(2)
19
1
3
2
∞
3
∞
How it works? Dijkstra(3)
20
1
3
2
∞
3
5
How it works? Dijkstra(4)
21
1
3
2
∞
3
5
How it works? Dijkstra(5)
22
1
3
2
∞
3
5
How it works? Dijkstra(6)
23
1
3
2
∞
3
5
Why it doesn’t works? Dijkstra-NegativeEdge(1)
24
2
∞
∞ ∞
Why it doesn’t works? Dijkstra-NegativeEdge(2)
25
2
4
3
∞
Why it doesn’t works? Dijkstra-NegativeEdge(3)
26
2
0
3 6
D가 B, C보다도 작아짐!
Pesudo Code Dijkstra
27
Floyd-Warshall
• 여러 사람이 설계(위키 참고)
• 모든 점에서 모든 점과의 거리 계산
• Dynamic Programming
• 음수 간선 존재해도 무방
• 음수 사이클 판별 가능
• 방향 ・무방향 Ok!
• O(V3)
28
Recursion formula Floyd-Warshall
• 최단 경로의 중간 정점들을 고려
• d(k)
ij = wij if k = 0
• d(k)
ij = min (d(k-1)
ij, d(k-1)
ik + d(k-1)
kj) if k >= 1
• i, j 는 k를 제외한 모든 수
• 구현에서는 고려할 필요 X
• Distance, Sequence Table을 관리
• Distance: 각 정점 간의 거리
• Sequence: 갱신된 k를 저장
29
How it works? Floyd-Warshall(1)
30
A B
C D
5
8 3
12
- 2 3 4
1 - 3 4
1 2 - 4
1 2 3 -
0 5 8 1
5 0 2 3
8 2 0 ∞
1 3 ∞ 0
Init
How it works? Floyd-Warshall(2)
31
A B
C D
5
8 3
12
- 2 3 4
1 - 3 4
1 2 - 1
1 2 1 -
0 5 8 1
5 0 2 3
8 2 0 9
1 3 9 0
K = 1
How it works? Floyd-Warshall(3)
32
A B
C D
5
8 3
12
- 2 2 4
1 - 3 4
2 2 - 2
1 2 2 -
0 5 7 1
5 0 2 3
7 2 0 5
1 3 5 0
K = 2
How it works? Floyd-Warshall(4)
33
A B
C D
5
8 3
12
- 2 2 4
1 - 3 4
2 2 - 2
1 2 2 -
0 5 7 1
5 0 2 3
7 2 0 5
1 3 5 0
K = 3
How it works? Floyd-Warshall(4)
34
A B
C D
5
8 3
12
- 4 4 4
4 - 3 4
4 2 - 2
1 2 2 -
0 4 6 1
4 0 2 3
6 2 0 5
1 3 5 0
K = 4
Backtraking Floyd-Warshall
• Sequence[3][1] = 4
• Sequence[3][4] = 2
• Sequence[3][2] = 2
• 3 -> 2 -> 4 -> 1
• C -> B -> D -> A
35
- 4 4 4
4 - 3 4
4 2 - 2
1 2 2 -
A B
C D
5
8 3
12
Negative Cycle Floyd-Warshall
• Bellman Ford 처럼 음수 사이클 파악 가능!
• 어떻게?
• 자기 자신과의 거리가 0 이하면 있다!
• 과정은 생략
36
Pesudo Code Floyd-Warshall
37
A* A-star
• 요청을 받아서 간단하게 설명 (굳굳!)
• 그래프/트리 탐색 알고리즘
• BFS / DFS 처럼
• BFS / DFS 처럼 다 탐색하지 않음
• Heuristic (휴리스틱) 함수를 이용하여 개선!
• 함수를 잘 정의 / 성능 ↑
• f(n) = g(n) + h(n)
• f(n) – Evaluation Function
• g(n) – Cost Function
• h(n) – Heuristic Function
• 인공지능 수업에서 등장 
38
Example
39
E
S
Example-DFS
40
15 18 19 20 E(21)
14 17
13 16 8
12 11 10 9 6 7
5
S(0) 1 2 3 4
Example-BFS
41
21 16 18 20 E(22)
19 14
17 12 10 9
15 13 11 8 6 7
5
S(0) 1 2 3 4
Example-A* DefineFunction
• Cost Function / g(n)
• 출발점(S)로부터 이동한 거리
• Heuristic Function / h(n)
• 현재 위치와 도착점간의 Manhattan Distance(맨해턴 거리)
• Manhanttan Distance = ( ∣x1-x2∣ + ∣y1-y2∣ )
• Evaluation Function / f(n)
• g(n) + h(n)
42
Example-A*
43
13 14 15 E(16)
12
11 10 8
9 6 7
5
S(0) 1 2 3 4
Summary
• Bellman Ford
• O(VE)
• 한 정점에서 모든 정점 간의 거리
• 음수 사이클 판정 가능
• Dijkstra
• O(V2) – O(VlogE)
• 한 정점에서 모든 정점 간의 거리
• 음수 간선 있으면 최적거리 못 구함
• Floyd-Warshall
• O(V3)
• 모든 정점에서 모든 정점 간의 거리
• 음수 사이클 판정 가능 44
45
추천 문제는 카페에 
Reference
• Graph Image 1
• http://cs.stackexchange.com/questions/18138/dijkstra-
algorithm-vs-breadth-first-search-for-shortest-path-in-graph
• Graph Image 2
• http://cs.stackexchange.com/questions/14248/what-is-the-
significance-of-negative-weight-edges-in-a-graph
46

More Related Content

PPTX
그래프의 최단 경로 찾기
PDF
IOI 2005 정원 분할 (2015.03.05)
PDF
Tree LIS (2015.03.29)
PDF
2020 여름방학 정기스터디 6주차
PDF
2020 여름방학 정기스터디 5주차
PPTX
Introduce
PDF
Introduce lumen php micro framework
PPTX
Introduce billiji
그래프의 최단 경로 찾기
IOI 2005 정원 분할 (2015.03.05)
Tree LIS (2015.03.29)
2020 여름방학 정기스터디 6주차
2020 여름방학 정기스터디 5주차
Introduce
Introduce lumen php micro framework
Introduce billiji

Viewers also liked (20)

PPT
Chap10.Making Method Calls Simpler
PDF
Introduce b.u.t
PPTX
[Skt소셜매니저] 김민정6842
PPT
사업발표 가슬
PPTX
Club# in CJ Cheiljedang
PPTX
Engine project tool
PPTX
Rich slide introduce
PDF
FMD 492 E Final Evaluation
PDF
121010 싸이 강남스타일을 통해 본 소셜미디어 활용법 및 브랜딩 전략
PDF
[2015전자과공모전] ppt
PDF
[대학생 연합 해커톤 UNITHON 3RD] Mingginyu_ppt
PDF
Ppt최종 드라마a
PPTX
open api seminar
PDF
16 학술제 마무리 자료
PPTX
그대를사랑합니다
PPTX
소셜커머스 웹가시성 분석
PDF
[3주차 발표용]invivo 8seconds
PDF
Editorial Design 2014_2
PDF
MINDMAP (2015-09-15)
PDF
네이버 me 사용성 개선 프로젝트
Chap10.Making Method Calls Simpler
Introduce b.u.t
[Skt소셜매니저] 김민정6842
사업발표 가슬
Club# in CJ Cheiljedang
Engine project tool
Rich slide introduce
FMD 492 E Final Evaluation
121010 싸이 강남스타일을 통해 본 소셜미디어 활용법 및 브랜딩 전략
[2015전자과공모전] ppt
[대학생 연합 해커톤 UNITHON 3RD] Mingginyu_ppt
Ppt최종 드라마a
open api seminar
16 학술제 마무리 자료
그대를사랑합니다
소셜커머스 웹가시성 분석
[3주차 발표용]invivo 8seconds
Editorial Design 2014_2
MINDMAP (2015-09-15)
네이버 me 사용성 개선 프로젝트
Ad

Introduce shortest path algorithms(Korean)

  • 1. Shortest Path HI-ARC Wonjae Kim (First Author) 1
  • 2. Purpose • 주어진 그래프에서 최단 경로를 찾자! 2
  • 3. Table of Content • Bellman-Ford • Dijkstra • Floyd-Warshall • A*(extra) 3
  • 4. Bellman-Ford • Bellman Ford가 설계 • 시작점에서 모든 점과의 거리 계산 • Vertex(정점)이 N개 그래프 • 시작점에서 도착점까지 간선의 수 최대 N-1 • 모든 간선들을 N-1번 시도해본다. • 음수 가중치가 있어도 Ok! • 방향・무방향 Ok! •∙・ • O(V*E) • V: Vertex E: Edge 4
  • 5. Proof Bellman-Ford • Vertex가 N개 그래프 • V1에서최소N번을이동해야도달할수있는 VX가있다고가정. • V1 을 제외하고 방문하는 정점의 수는 N개 • V1 포함하면 정점의 수 N+1 (모순!) 5
  • 6. How it works? Bellman-Ford(1) 6 ∞ ∞ ∞ ∞ ∞ ∞
  • 7. How it works? Bellman-Ford(2) 7 1 ∞ ∞ ∞ ∞ ∞
  • 8. How it works? Bellman-Ford(3) 8 1 4 2 ∞ 3 ∞
  • 9. How it works? Bellman-Ford(4) 9 1 4 2 ∞ 3 5
  • 10. Negative Cycle Bellman-Ford • 그래프에 존재하는 음수 사이클 파악 가능! • 어떻게? • 모든 간선들을 N-1번 시도해보고, 한 번 더 시도! • 한 정점이라도 값이 감소하면 음수사이클! 10
  • 11. How it works? Bellman-Ford_Negative-Cycle(1) 11 ∞ ∞ ∞ ∞
  • 12. How it works? Bellman-Ford_Negative-Cycle(2) 12 -1 -3 1 4 N-1 번 후…
  • 13. How it works? Bellman-Ford_Negative-Cycle(3) 13 -1 -3 0 4 N 번 째! C가 바뀜!
  • 15. Dijkstra • Dijkstra가 설계 • 시작점에서 모든 점과의 거리 계산 • 현재까지 도달한 정점 중 가장 값이 낮은 것을 선택! • Greedy Algorithm • 음수 간선이 존재하면 불가능(하나라도!) • 방향・무방향 Ok! • O(V2) • Priority Queue(우선순위 큐) 사용 시 O(V log E) 15
  • 16. Dijkstra • Dijkstra가 설계 • 현재까지 도달한 정점 중 가장 값이 낮은 것을 선택 • 선택된 노드가 도착점이면 끝! • Greedy Algorithm • 음수 간선이 존재하면 불가능(하나라도) • 방향・무방향 Ok! • O(V2) • Priority Queue(우선순위 큐) 사용 시 O(V log E) 16
  • 18. How it works? Dijkstra(1) 18 1 ∞ ∞ ∞ ∞ ∞
  • 19. How it works? Dijkstra(2) 19 1 3 2 ∞ 3 ∞
  • 20. How it works? Dijkstra(3) 20 1 3 2 ∞ 3 5
  • 21. How it works? Dijkstra(4) 21 1 3 2 ∞ 3 5
  • 22. How it works? Dijkstra(5) 22 1 3 2 ∞ 3 5
  • 23. How it works? Dijkstra(6) 23 1 3 2 ∞ 3 5
  • 24. Why it doesn’t works? Dijkstra-NegativeEdge(1) 24 2 ∞ ∞ ∞
  • 25. Why it doesn’t works? Dijkstra-NegativeEdge(2) 25 2 4 3 ∞
  • 26. Why it doesn’t works? Dijkstra-NegativeEdge(3) 26 2 0 3 6 D가 B, C보다도 작아짐!
  • 28. Floyd-Warshall • 여러 사람이 설계(위키 참고) • 모든 점에서 모든 점과의 거리 계산 • Dynamic Programming • 음수 간선 존재해도 무방 • 음수 사이클 판별 가능 • 방향 ・무방향 Ok! • O(V3) 28
  • 29. Recursion formula Floyd-Warshall • 최단 경로의 중간 정점들을 고려 • d(k) ij = wij if k = 0 • d(k) ij = min (d(k-1) ij, d(k-1) ik + d(k-1) kj) if k >= 1 • i, j 는 k를 제외한 모든 수 • 구현에서는 고려할 필요 X • Distance, Sequence Table을 관리 • Distance: 각 정점 간의 거리 • Sequence: 갱신된 k를 저장 29
  • 30. How it works? Floyd-Warshall(1) 30 A B C D 5 8 3 12 - 2 3 4 1 - 3 4 1 2 - 4 1 2 3 - 0 5 8 1 5 0 2 3 8 2 0 ∞ 1 3 ∞ 0 Init
  • 31. How it works? Floyd-Warshall(2) 31 A B C D 5 8 3 12 - 2 3 4 1 - 3 4 1 2 - 1 1 2 1 - 0 5 8 1 5 0 2 3 8 2 0 9 1 3 9 0 K = 1
  • 32. How it works? Floyd-Warshall(3) 32 A B C D 5 8 3 12 - 2 2 4 1 - 3 4 2 2 - 2 1 2 2 - 0 5 7 1 5 0 2 3 7 2 0 5 1 3 5 0 K = 2
  • 33. How it works? Floyd-Warshall(4) 33 A B C D 5 8 3 12 - 2 2 4 1 - 3 4 2 2 - 2 1 2 2 - 0 5 7 1 5 0 2 3 7 2 0 5 1 3 5 0 K = 3
  • 34. How it works? Floyd-Warshall(4) 34 A B C D 5 8 3 12 - 4 4 4 4 - 3 4 4 2 - 2 1 2 2 - 0 4 6 1 4 0 2 3 6 2 0 5 1 3 5 0 K = 4
  • 35. Backtraking Floyd-Warshall • Sequence[3][1] = 4 • Sequence[3][4] = 2 • Sequence[3][2] = 2 • 3 -> 2 -> 4 -> 1 • C -> B -> D -> A 35 - 4 4 4 4 - 3 4 4 2 - 2 1 2 2 - A B C D 5 8 3 12
  • 36. Negative Cycle Floyd-Warshall • Bellman Ford 처럼 음수 사이클 파악 가능! • 어떻게? • 자기 자신과의 거리가 0 이하면 있다! • 과정은 생략 36
  • 38. A* A-star • 요청을 받아서 간단하게 설명 (굳굳!) • 그래프/트리 탐색 알고리즘 • BFS / DFS 처럼 • BFS / DFS 처럼 다 탐색하지 않음 • Heuristic (휴리스틱) 함수를 이용하여 개선! • 함수를 잘 정의 / 성능 ↑ • f(n) = g(n) + h(n) • f(n) – Evaluation Function • g(n) – Cost Function • h(n) – Heuristic Function • 인공지능 수업에서 등장  38
  • 40. Example-DFS 40 15 18 19 20 E(21) 14 17 13 16 8 12 11 10 9 6 7 5 S(0) 1 2 3 4
  • 41. Example-BFS 41 21 16 18 20 E(22) 19 14 17 12 10 9 15 13 11 8 6 7 5 S(0) 1 2 3 4
  • 42. Example-A* DefineFunction • Cost Function / g(n) • 출발점(S)로부터 이동한 거리 • Heuristic Function / h(n) • 현재 위치와 도착점간의 Manhattan Distance(맨해턴 거리) • Manhanttan Distance = ( ∣x1-x2∣ + ∣y1-y2∣ ) • Evaluation Function / f(n) • g(n) + h(n) 42
  • 43. Example-A* 43 13 14 15 E(16) 12 11 10 8 9 6 7 5 S(0) 1 2 3 4
  • 44. Summary • Bellman Ford • O(VE) • 한 정점에서 모든 정점 간의 거리 • 음수 사이클 판정 가능 • Dijkstra • O(V2) – O(VlogE) • 한 정점에서 모든 정점 간의 거리 • 음수 간선 있으면 최적거리 못 구함 • Floyd-Warshall • O(V3) • 모든 정점에서 모든 정점 간의 거리 • 음수 사이클 판정 가능 44
  • 46. Reference • Graph Image 1 • http://cs.stackexchange.com/questions/18138/dijkstra- algorithm-vs-breadth-first-search-for-shortest-path-in-graph • Graph Image 2 • http://cs.stackexchange.com/questions/14248/what-is-the- significance-of-negative-weight-edges-in-a-graph 46