SlideShare a Scribd company logo
1 of 40
Download to read offline
Shortest path algorithms
20120302 김우진
20130870 이건희
조사한 3가지 알고리즘
1. Dijkstra’s Algorithm
2. Bellman-Ford’s Algorithm
3. Floyd-Warshall’s Algorithm
Dijkstra’s Algorithm
• 개요
• Edsger W. Dijkstra가 고안한 알고리즘
• 한 정점에서 다른 모든 정점으로의 최단 경로를 구하는 알고리즘
• 조건
• 간선들은 모두 양의 간선을 가져야한다. (음의 간선을 가져선 안된다.)
• 첫 정점을 기준으로 연결된 정점들을 추가하며 최단 거리를 갱신
• 정점 연결 전까지는 시작점을 제외하고 모두 무한대 값
i 1 2 3 4 5 6 7
dist 0 MAX MAX MAX MAX MAX MAX
visit
1
2 3 7
5 4 65
2
1
3 4
1
5 1
518
i 1 2 3 4 5 6 7
dist 0 2 MAX MAX 5 MAX MAX
visit 1
1
2 3 7
5 4 65
2
1
3 4
1
5 1
518
i 1 2 3 4 5 6 7
dist 0 2 5 10 3 MAX MAX
visit 1 1
1
2 3 7
5 4 65
2
1
3 4
1
5 1
518
i 1 2 3 4 5 6 7
dist 0 2 5 8 3 MAX MAX
visit 1 1 1 1
1
2 3 7
5 4 65
2
1
3 4
1
5 1
518
i 1 2 3 4 5 6 7
dist 0 2 5 6 3 MAX 9
visit 1 1 1 1
1
2 3 7
5 4 65
2
1
3 4
1
5 1
518
i 1 2 3 4 5 6 7
dist 0 2 5 6 3 7 9
visit 1 1 1 1 1
1
2 3 7
5 4 65
2
1
3 4
1
5 1
518
i 1 2 3 4 5 6 7
dist 0 2 5 6 3 7 8
visit 1 1 1 1 1 1
1
2 3 7
5 4 65
2
1
3 4
1
5 1
518
i 1 2 3 4 5 6 7
dist 0 2 5 6 5 7 8
visit 1 1 1 1 1 1 1
1
2 3 7
5 4 65
2
1
3 4
1
5 1
518
Dijkstra’s Algorithm
• 시간 복잡도
• 배열 : O(V^2)
• 이진 힙 : O(E*logV)
• 피보나치 힙 : O(E+V*logV)
• 실질적 사용
• 경로 찾기
• 네비게이션
• 미로탐색 알고리즘
Dijkstra’s Algorithm 관련 논문
• 윤창민 외 3명. (2008). 연산시간 최적화를 위한 P-Dijkstra 알고리즘에 관한 연구(A
Study on the P-Dijkstra Algorithms for Optimization of Computation Time). 한국통
신학회 2017년도 추계종합학술발표회, 177~178
ᅳ 기존의 Dijkstra 알고리즘은 모든 경로를 탐색함 -> 속도 저하
ᅳ 모든 노드를 구획(partition)화하고 Dijkstra 알고리즘을 적용
Bellman-Ford Algorithm
• 개요
• Dijkstra 알고리즘에 비해 느린 알고리즘이다.
• 음의 가중치까지 더할 수 있다.
• 조건
• 최단 경로는 사이클을 포함하면 안되므로, 최대 |V|-1개의 간선만 사용
• 최단 거리가 업데이트되는 노드가 없어질 때까지 반복해서 구해줌.
A
B
DC
E
A B C D E
0 ∞ ∞ ∞ ∞
-1
4
3
1
2
2
-3
5
0
∞
∞
∞ ∞
A
B
DC
E
A B C D E
0 ∞ ∞ ∞ ∞
0 -1 ∞ ∞ ∞-1
4
3
1
2
2
-3
5
0 ∞
∞
-1
∞
A
B
DC
E
A B C D E
0 ∞ ∞ ∞ ∞
0 -1 ∞ ∞ ∞
0 -1 4 ∞ ∞
-1
4
3
1
2
2
-3
5
0 ∞
∞
-1
4
A
B
DC
E
A B C D E
0 ∞ ∞ ∞ ∞
0 -1 ∞ ∞ ∞
0 -1 4 ∞ ∞
0 -1 2 ∞ ∞
-1
4
3
1
2
2
-3
5
0 ∞
∞
-1
2
A
B
DC
E
A B C D E
0 ∞ ∞ ∞ ∞
0 -1 ∞ ∞ ∞
0 -1 4 ∞ ∞
0 -1 2 ∞ ∞
0 -1 2 ∞ 1
-1
4
3
1
2
2
-3
5
0
-1
2
1
∞
A
B
DC
E
A B C D E
0 ∞ ∞ ∞ ∞
0 -1 ∞ ∞ ∞
0 -1 4 ∞ ∞
0 -1 2 ∞ ∞
0 -1 2 ∞ 1
0 -1 2 1 1
-1
4
3
1
2
2
-3
5
0
-1
2 1
1
A
B
DC
E
A B C D E
0 ∞ ∞ ∞ ∞
0 -1 ∞ ∞ ∞
0 -1 4 ∞ ∞
0 -1 2 ∞ ∞
0 -1 2 ∞ 1
0 -1 2 1 1
0 -1 2 -2 1
-1
4
3
1
2
2
-3
5
0
-1
2 -2
1
Bellman-Ford Algorithm
• 시간 복잡도
• O(|V|*|E|) (단, |E| <= |V|^2)
• 공간 복잡도
• O(|V|)
• 실질적 사용
• MCMF(Minimum Cost Maximum Flow) 문제 해결
Bellman-Ford Algorithm 관련 논문
• 진호,서희종. (2012). SPFA를 기반으로 개선된 벨만-포드 알고리듬(An improved
Bellman-Ford algorithm based on SPFA). 대한전자통신학회 논문지 제7권 제4호,
721~726
ᅳ SPFA : Shortest Path Faster Algorithm
ᅳ Bellman-Ford 알고리즘은 모든 노드를 순회함으로 인한 문제점을 개선
ᅳ 인접 리스트를 용해서 각 표의 노드를 저장, 대기열을 통해 데이터를 저장
ᅳ 새로운 점에 계속 relaxtion을 통해 최적의 경로를 얻을 수 있음
Floyd-Warshall Algorithm
• 개요
• 그래프에서 모든 꼭짓점 사이의 최단 경로의 거리를 구하는 알고리즘
• 모든 경로의 최소 비용을 구함
• 음수 가중치를 갖는 간선도, 순환만 없다면 처리 가능
• 조건
• 3중 반복문(for)문을 사용: 거쳐가는 노드, 출발노드, 도착노드
• 2가지 테이블 : 모든 경로의 비용 관련 테이블, 각 정점까지 가기 직전의 정점 관련 테이블
1
2
3
5 4
3 4
82
-5
6
7 1
1 2 3 4 5
1 0 3 8 ∞ -4
2 ∞ 0 ∞ 1 7
3 ∞ 4 0 ∞ ∞
4 2 ∞ -5 0 ∞
5 ∞ ∞ ∞ 6 0
-4
1 2 3 4 5
1 - 1 1 - 1
2 - - - 2 2
3 - 3 - - -
4 4 - 4 - -
5 - - - 5 -
테이블1 : 거리를 저장한 테이블 D
테이블2 : 직전 정점을 저장한 테이블 D
1
2
3
5 4
3 4
82
-5
6
7 1
1 2 3 4 5
1 0 3 8 ∞ -4
2 ∞ 0 ∞ 1 7
3 ∞ 4 0 ∞ ∞
4 2 5 -5 0 ∞
5 ∞ ∞ ∞ 6 0
-4
1 2 3 4 5
1 - 1 1 - 1
2 - - - 2 2
3 - 3 - - -
4 4 1 4 - -
5 - - - 5 -
테이블1 : 거리를 저장한 테이블 D
테이블2 : 직전 정점을 저장한 테이블 D
1
2
3
5 4
3 4
82
-5
6
7 1
1 2 3 4 5
1 0 3 8 ∞ -4
2 ∞ 0 ∞ 1 7
3 ∞ 4 0 ∞ ∞
4 2 5 -5 0 -2
5 ∞ ∞ ∞ 6 0
-4
1 2 3 4 5
1 - 1 1 - 1
2 - - - 2 2
3 - 3 - - -
4 4 1 4 - 1
5 - - - 5 -
테이블1 : 거리를 저장한 테이블 D
테이블2 : 직전 정점을 저장한 테이블 D
1
2
3
5 4
3 4
82
-5
6
7 1
1 2 3 4 5
1 0 3 8 4 -4
2 ∞ 0 ∞ 1 7
3 ∞ 4 0 ∞ ∞
4 2 5 -5 0 -2
5 ∞ ∞ ∞ 6 0
-4
1 2 3 4 5
1 - 1 1 2 1
2 - - - 2 2
3 - 3 - - -
4 4 1 4 - 1
5 - - - 5 -
테이블1 : 거리를 저장한 테이블 D
테이블2 : 직전 정점을 저장한 테이블 D
1
2
3
5 4
3 4
82
-5
6
7 1
1 2 3 4 5
1 0 3 8 4 -4
2 ∞ 0 ∞ 1 7
3 ∞ 4 0 5 ∞
4 2 5 -5 0 -2
5 ∞ ∞ ∞ 6 0
-4
1 2 3 4 5
1 - 1 1 2 1
2 - - - 2 2
3 - 3 - 2 -
4 4 1 4 - 1
5 - - - 5 -
테이블1 : 거리를 저장한 테이블 D
테이블2 : 직전 정점을 저장한 테이블 D
1
2
3
5 4
3 4
82
-5
6
7 1
1 2 3 4 5
1 0 3 8 4 -4
2 ∞ 0 ∞ 1 7
3 ∞ 4 0 5 11
4 2 5 -5 0 -2
5 ∞ ∞ ∞ 6 0
-4
1 2 3 4 5
1 - 1 1 2 1
2 - - - 2 2
3 - 3 - 2 2
4 4 1 4 - 1
5 - - - 5 -
테이블1 : 거리를 저장한 테이블 D
테이블2 : 직전 정점을 저장한 테이블 D
1
2
3
5 4
3 4
82
-5
6
7 1
1 2 3 4 5
1 0 3 8 4 -4
2 3 0 ∞ 1 7
3 ∞ 4 0 5 11
4 2 5 -5 0 -2
5 ∞ ∞ ∞ 6 0
-4
1 2 3 4 5
1 - 1 1 2 1
2 4 - - 2 2
3 - 3 - 2 2
4 4 1 4 - 1
5 - - - 5 -
테이블1 : 거리를 저장한 테이블 D
테이블2 : 직전 정점을 저장한 테이블 D
1
2
3
5 4
3 4
82
-5
6
7 1
1 2 3 4 5
1 0 3 8 4 -4
2 3 0 ∞ 1 7
3 ∞ 4 0 5 11
4 2 -1 -5 0 -2
5 ∞ ∞ ∞ 6 0
-4
1 2 3 4 5
1 - 1 1 2 1
2 4 - - 2 2
3 - 3 - 2 2
4 4 3 4 - 1
5 - - - 5 -
테이블1 : 거리를 저장한 테이블 D
테이블2 : 직전 정점을 저장한 테이블 D
1
2
3
5 4
3 4
82
-5
6
7 1
1 2 3 4 5
1 0 3 8 4 -4
2 3 0 -4 1 7
3 ∞ 4 0 5 11
4 2 -1 -5 0 -2
5 ∞ ∞ ∞ 6 0
-4
1 2 3 4 5
1 - 1 1 2 1
2 4 - 4 2 2
3 - 3 - 2 2
4 4 3 4 - 1
5 - - - 5 -
테이블1 : 거리를 저장한 테이블 D
테이블2 : 직전 정점을 저장한 테이블 D
1
2
3
5 4
3 4
82
-5
6
7 1
1 2 3 4 5
1 0 3 8 4 -4
2 3 0 -4 1 7
3 ∞ 4 0 5 11
4 2 -1 -5 0 -2
5 8 ∞ ∞ 6 0
-4
1 2 3 4 5
1 - 1 1 2 1
2 4 - 4 2 2
3 - 3 - 2 2
4 4 3 4 - 1
5 4 - - 5 -
테이블1 : 거리를 저장한 테이블 D
테이블2 : 직전 정점을 저장한 테이블 D
1
2
3
5 4
3 4
82
-5
6
7 1
1 2 3 4 5
1 0 3 8 4 -4
2 3 0 -4 1 7
3 ∞ 4 0 5 11
4 2 -1 -5 0 -2
5 8 ∞ 1 6 0
-4
1 2 3 4 5
1 - 1 1 2 1
2 4 - 4 2 2
3 - 3 - 2 2
4 4 3 4 - 1
5 4 - 4 5 -
테이블1 : 거리를 저장한 테이블 D
테이블2 : 직전 정점을 저장한 테이블 D
1
2
3
5 4
3 4
82
-5
6
7 1
1 2 3 4 5
1 0 3 8 4 -4
2 3 0 -4 1 7
3 ∞ 4 0 5 11
4 2 -1 -5 0 -2
5 8 ∞ 1 6 0
-4
1 2 3 4 5
1 - 1 1 2 1
2 4 - 4 2 2
3 - 3 - 2 2
4 4 3 4 - 1
5 4 - 4 5 -
테이블1 : 거리를 저장한 테이블 D
테이블2 : 직전 정점을 저장한 테이블 D
1
2
3
5 4
3 4
82
-5
6
7 1
1 2 3 4 5
1 0 3 8 2 -4
2 3 0 -4 1 7
3 ∞ 4 0 5 11
4 2 -1 -5 0 -2
5 8 ∞ 1 6 0
-4
1 2 3 4 5
1 - 1 1 5 1
2 4 - 4 2 2
3 - 3 - 2 2
4 4 3 4 - 1
5 4 - 4 5 -
테이블1 : 거리를 저장한 테이블 D
테이블2 : 직전 정점을 저장한 테이블 D
• 시간 복잡도 : O(|V|^3)
• (노드의 수) * (노드의 수) * (노드의 수) => |V| * |V| * |V|
• 공간 복잡도 : O(2 * |V|^2)
• |V| * |V| 사이즈의 테이블 2개
Floyd-Warshall Algorithm
각 알고리즘 간 비교
Dijkstra Bellman-Ford Floyd-warshall
시간 복잡도
O(|V|^2) (Array)
O(E*logV) (heap)
O(|V|*|E|) O(|V|^3)
공간 복잡도 O(|V|) (Array) O(|V|) O(|V|^2)
특징
하나의 노드에서부터
최단 경로를 구함
최단 경로를 구할 때,
모든 edge를 고려함
모든 노드 사이의
최단 경로를 구함
참고자료
• 다익스트라 알고리즘 :
• http://manducku.tistory.com/29
• P-Dijkstra 알고리즘 논문 :
• https://fall.kics.or.kr/storage/paper/event/20171110_workshop/publish/9A-4.pdf
• 벨만-포드 알고리즘:
• https://www.geeksforgeeks.org/dynamic-programming-set-23-bellman-ford-algorithm/
• SPFA를 기반으로 한 개선된 벨만-보드 알고리즘
• http://dcollection.jnu.ac.kr/public_resource/pdf/000000034527_20180413044750.pdf
• 플로이드 워셜 알고리즘
• https://ko.wikipedia.org/wiki/%ED%94%8C%EB%A1%9C%EC%9D%B4%EB%93%9C-
%EC%9B%8C%EC%85%9C_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

More Related Content

What's hot

Credit monitoring & early alert process
Credit monitoring & early alert processCredit monitoring & early alert process
Credit monitoring & early alert processSandip Kar
 
Cover fail panitia &amp; tulang fail 2018
Cover fail panitia &amp; tulang fail 2018Cover fail panitia &amp; tulang fail 2018
Cover fail panitia &amp; tulang fail 2018Noin1968
 
terapi rasional emotif tingkah laku
 terapi rasional emotif tingkah laku terapi rasional emotif tingkah laku
terapi rasional emotif tingkah lakuzakwan azhar
 
Pembinaan Hubungan Dalam Kaunseling (Rapport)
Pembinaan Hubungan Dalam Kaunseling (Rapport)Pembinaan Hubungan Dalam Kaunseling (Rapport)
Pembinaan Hubungan Dalam Kaunseling (Rapport)Nurul A'yuni Ahmad
 
Penyiasatan Diagnostik - Urinalisis, Hematology and Reflolux
Penyiasatan Diagnostik - Urinalisis, Hematology and RefloluxPenyiasatan Diagnostik - Urinalisis, Hematology and Reflolux
Penyiasatan Diagnostik - Urinalisis, Hematology and RefloluxMuhammad Nasrullah
 
Perintah am bab c (cuti)
Perintah am bab c  (cuti)Perintah am bab c  (cuti)
Perintah am bab c (cuti)mazlanmn
 
SISTEM ALIMENTARI - Penjagaan Kolostomi dan Irigasi Stoma
SISTEM ALIMENTARI - Penjagaan Kolostomi dan Irigasi StomaSISTEM ALIMENTARI - Penjagaan Kolostomi dan Irigasi Stoma
SISTEM ALIMENTARI - Penjagaan Kolostomi dan Irigasi StomaMuhammad Nasrullah
 
Senarai dan tanggungjawab ppk
Senarai dan tanggungjawab ppkSenarai dan tanggungjawab ppk
Senarai dan tanggungjawab ppkhkdt
 

What's hot (13)

Credit monitoring & early alert process
Credit monitoring & early alert processCredit monitoring & early alert process
Credit monitoring & early alert process
 
KEGAGALAN GINJAL
KEGAGALAN GINJALKEGAGALAN GINJAL
KEGAGALAN GINJAL
 
Pengurusan masa 1
Pengurusan masa 1Pengurusan masa 1
Pengurusan masa 1
 
Cover fail panitia &amp; tulang fail 2018
Cover fail panitia &amp; tulang fail 2018Cover fail panitia &amp; tulang fail 2018
Cover fail panitia &amp; tulang fail 2018
 
terapi rasional emotif tingkah laku
 terapi rasional emotif tingkah laku terapi rasional emotif tingkah laku
terapi rasional emotif tingkah laku
 
Protokol
ProtokolProtokol
Protokol
 
Mpat tahap 3
Mpat tahap 3Mpat tahap 3
Mpat tahap 3
 
Pembinaan Hubungan Dalam Kaunseling (Rapport)
Pembinaan Hubungan Dalam Kaunseling (Rapport)Pembinaan Hubungan Dalam Kaunseling (Rapport)
Pembinaan Hubungan Dalam Kaunseling (Rapport)
 
Penyiasatan Diagnostik - Urinalisis, Hematology and Reflolux
Penyiasatan Diagnostik - Urinalisis, Hematology and RefloluxPenyiasatan Diagnostik - Urinalisis, Hematology and Reflolux
Penyiasatan Diagnostik - Urinalisis, Hematology and Reflolux
 
Perintah am bab c (cuti)
Perintah am bab c  (cuti)Perintah am bab c  (cuti)
Perintah am bab c (cuti)
 
SISTEM ALIMENTARI - Penjagaan Kolostomi dan Irigasi Stoma
SISTEM ALIMENTARI - Penjagaan Kolostomi dan Irigasi StomaSISTEM ALIMENTARI - Penjagaan Kolostomi dan Irigasi Stoma
SISTEM ALIMENTARI - Penjagaan Kolostomi dan Irigasi Stoma
 
Senarai dan tanggungjawab ppk
Senarai dan tanggungjawab ppkSenarai dan tanggungjawab ppk
Senarai dan tanggungjawab ppk
 
cek
cekcek
cek
 

More from Lee Geonhee

Python을 이용한 패키지 테스트 및 배포해보기
Python을 이용한 패키지 테스트 및 배포해보기Python을 이용한 패키지 테스트 및 배포해보기
Python을 이용한 패키지 테스트 및 배포해보기Lee Geonhee
 
자료구조 복습 및 트리기초
자료구조 복습 및 트리기초자료구조 복습 및 트리기초
자료구조 복습 및 트리기초Lee Geonhee
 
연결리스트 복습 및 스택
연결리스트 복습 및 스택연결리스트 복습 및 스택
연결리스트 복습 및 스택Lee Geonhee
 
연결 리스트(기초)
연결 리스트(기초)연결 리스트(기초)
연결 리스트(기초)Lee Geonhee
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들Lee Geonhee
 
HTTPS를 이용한 챗봇 웹 어플리케이션
HTTPS를 이용한 챗봇 웹 어플리케이션HTTPS를 이용한 챗봇 웹 어플리케이션
HTTPS를 이용한 챗봇 웹 어플리케이션Lee Geonhee
 
AES 알고리즘
AES 알고리즘AES 알고리즘
AES 알고리즘Lee Geonhee
 
허프만 압축 알고리즘 및 비교
허프만 압축 알고리즘 및 비교허프만 압축 알고리즘 및 비교
허프만 압축 알고리즘 및 비교Lee Geonhee
 
5th Naver D2 FEST 결승전 발표 자료(IoT-Pet-Home-System)
5th Naver D2 FEST 결승전 발표 자료(IoT-Pet-Home-System)5th Naver D2 FEST 결승전 발표 자료(IoT-Pet-Home-System)
5th Naver D2 FEST 결승전 발표 자료(IoT-Pet-Home-System)Lee Geonhee
 
오픈소스 라이선스
오픈소스 라이선스오픈소스 라이선스
오픈소스 라이선스Lee Geonhee
 
GitHub로 프로젝트 운영하기
GitHub로 프로젝트 운영하기GitHub로 프로젝트 운영하기
GitHub로 프로젝트 운영하기Lee Geonhee
 

More from Lee Geonhee (12)

Python을 이용한 패키지 테스트 및 배포해보기
Python을 이용한 패키지 테스트 및 배포해보기Python을 이용한 패키지 테스트 및 배포해보기
Python을 이용한 패키지 테스트 및 배포해보기
 
자료구조 복습 및 트리기초
자료구조 복습 및 트리기초자료구조 복습 및 트리기초
자료구조 복습 및 트리기초
 
연결리스트 복습 및 스택
연결리스트 복습 및 스택연결리스트 복습 및 스택
연결리스트 복습 및 스택
 
연결 리스트(기초)
연결 리스트(기초)연결 리스트(기초)
연결 리스트(기초)
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들
 
HTTPS를 이용한 챗봇 웹 어플리케이션
HTTPS를 이용한 챗봇 웹 어플리케이션HTTPS를 이용한 챗봇 웹 어플리케이션
HTTPS를 이용한 챗봇 웹 어플리케이션
 
AES 알고리즘
AES 알고리즘AES 알고리즘
AES 알고리즘
 
허프만 압축 알고리즘 및 비교
허프만 압축 알고리즘 및 비교허프만 압축 알고리즘 및 비교
허프만 압축 알고리즘 및 비교
 
5th Naver D2 FEST 결승전 발표 자료(IoT-Pet-Home-System)
5th Naver D2 FEST 결승전 발표 자료(IoT-Pet-Home-System)5th Naver D2 FEST 결승전 발표 자료(IoT-Pet-Home-System)
5th Naver D2 FEST 결승전 발표 자료(IoT-Pet-Home-System)
 
오픈소스 라이선스
오픈소스 라이선스오픈소스 라이선스
오픈소스 라이선스
 
Web server
Web serverWeb server
Web server
 
GitHub로 프로젝트 운영하기
GitHub로 프로젝트 운영하기GitHub로 프로젝트 운영하기
GitHub로 프로젝트 운영하기
 

Shortest path algorithms

  • 1. Shortest path algorithms 20120302 김우진 20130870 이건희
  • 2. 조사한 3가지 알고리즘 1. Dijkstra’s Algorithm 2. Bellman-Ford’s Algorithm 3. Floyd-Warshall’s Algorithm
  • 3. Dijkstra’s Algorithm • 개요 • Edsger W. Dijkstra가 고안한 알고리즘 • 한 정점에서 다른 모든 정점으로의 최단 경로를 구하는 알고리즘 • 조건 • 간선들은 모두 양의 간선을 가져야한다. (음의 간선을 가져선 안된다.) • 첫 정점을 기준으로 연결된 정점들을 추가하며 최단 거리를 갱신 • 정점 연결 전까지는 시작점을 제외하고 모두 무한대 값
  • 4. i 1 2 3 4 5 6 7 dist 0 MAX MAX MAX MAX MAX MAX visit 1 2 3 7 5 4 65 2 1 3 4 1 5 1 518
  • 5. i 1 2 3 4 5 6 7 dist 0 2 MAX MAX 5 MAX MAX visit 1 1 2 3 7 5 4 65 2 1 3 4 1 5 1 518
  • 6. i 1 2 3 4 5 6 7 dist 0 2 5 10 3 MAX MAX visit 1 1 1 2 3 7 5 4 65 2 1 3 4 1 5 1 518
  • 7. i 1 2 3 4 5 6 7 dist 0 2 5 8 3 MAX MAX visit 1 1 1 1 1 2 3 7 5 4 65 2 1 3 4 1 5 1 518
  • 8. i 1 2 3 4 5 6 7 dist 0 2 5 6 3 MAX 9 visit 1 1 1 1 1 2 3 7 5 4 65 2 1 3 4 1 5 1 518
  • 9. i 1 2 3 4 5 6 7 dist 0 2 5 6 3 7 9 visit 1 1 1 1 1 1 2 3 7 5 4 65 2 1 3 4 1 5 1 518
  • 10. i 1 2 3 4 5 6 7 dist 0 2 5 6 3 7 8 visit 1 1 1 1 1 1 1 2 3 7 5 4 65 2 1 3 4 1 5 1 518
  • 11. i 1 2 3 4 5 6 7 dist 0 2 5 6 5 7 8 visit 1 1 1 1 1 1 1 1 2 3 7 5 4 65 2 1 3 4 1 5 1 518
  • 12. Dijkstra’s Algorithm • 시간 복잡도 • 배열 : O(V^2) • 이진 힙 : O(E*logV) • 피보나치 힙 : O(E+V*logV) • 실질적 사용 • 경로 찾기 • 네비게이션 • 미로탐색 알고리즘
  • 13. Dijkstra’s Algorithm 관련 논문 • 윤창민 외 3명. (2008). 연산시간 최적화를 위한 P-Dijkstra 알고리즘에 관한 연구(A Study on the P-Dijkstra Algorithms for Optimization of Computation Time). 한국통 신학회 2017년도 추계종합학술발표회, 177~178 ᅳ 기존의 Dijkstra 알고리즘은 모든 경로를 탐색함 -> 속도 저하 ᅳ 모든 노드를 구획(partition)화하고 Dijkstra 알고리즘을 적용
  • 14. Bellman-Ford Algorithm • 개요 • Dijkstra 알고리즘에 비해 느린 알고리즘이다. • 음의 가중치까지 더할 수 있다. • 조건 • 최단 경로는 사이클을 포함하면 안되므로, 최대 |V|-1개의 간선만 사용 • 최단 거리가 업데이트되는 노드가 없어질 때까지 반복해서 구해줌.
  • 15. A B DC E A B C D E 0 ∞ ∞ ∞ ∞ -1 4 3 1 2 2 -3 5 0 ∞ ∞ ∞ ∞
  • 16. A B DC E A B C D E 0 ∞ ∞ ∞ ∞ 0 -1 ∞ ∞ ∞-1 4 3 1 2 2 -3 5 0 ∞ ∞ -1 ∞
  • 17. A B DC E A B C D E 0 ∞ ∞ ∞ ∞ 0 -1 ∞ ∞ ∞ 0 -1 4 ∞ ∞ -1 4 3 1 2 2 -3 5 0 ∞ ∞ -1 4
  • 18. A B DC E A B C D E 0 ∞ ∞ ∞ ∞ 0 -1 ∞ ∞ ∞ 0 -1 4 ∞ ∞ 0 -1 2 ∞ ∞ -1 4 3 1 2 2 -3 5 0 ∞ ∞ -1 2
  • 19. A B DC E A B C D E 0 ∞ ∞ ∞ ∞ 0 -1 ∞ ∞ ∞ 0 -1 4 ∞ ∞ 0 -1 2 ∞ ∞ 0 -1 2 ∞ 1 -1 4 3 1 2 2 -3 5 0 -1 2 1 ∞
  • 20. A B DC E A B C D E 0 ∞ ∞ ∞ ∞ 0 -1 ∞ ∞ ∞ 0 -1 4 ∞ ∞ 0 -1 2 ∞ ∞ 0 -1 2 ∞ 1 0 -1 2 1 1 -1 4 3 1 2 2 -3 5 0 -1 2 1 1
  • 21. A B DC E A B C D E 0 ∞ ∞ ∞ ∞ 0 -1 ∞ ∞ ∞ 0 -1 4 ∞ ∞ 0 -1 2 ∞ ∞ 0 -1 2 ∞ 1 0 -1 2 1 1 0 -1 2 -2 1 -1 4 3 1 2 2 -3 5 0 -1 2 -2 1
  • 22. Bellman-Ford Algorithm • 시간 복잡도 • O(|V|*|E|) (단, |E| <= |V|^2) • 공간 복잡도 • O(|V|) • 실질적 사용 • MCMF(Minimum Cost Maximum Flow) 문제 해결
  • 23. Bellman-Ford Algorithm 관련 논문 • 진호,서희종. (2012). SPFA를 기반으로 개선된 벨만-포드 알고리듬(An improved Bellman-Ford algorithm based on SPFA). 대한전자통신학회 논문지 제7권 제4호, 721~726 ᅳ SPFA : Shortest Path Faster Algorithm ᅳ Bellman-Ford 알고리즘은 모든 노드를 순회함으로 인한 문제점을 개선 ᅳ 인접 리스트를 용해서 각 표의 노드를 저장, 대기열을 통해 데이터를 저장 ᅳ 새로운 점에 계속 relaxtion을 통해 최적의 경로를 얻을 수 있음
  • 24. Floyd-Warshall Algorithm • 개요 • 그래프에서 모든 꼭짓점 사이의 최단 경로의 거리를 구하는 알고리즘 • 모든 경로의 최소 비용을 구함 • 음수 가중치를 갖는 간선도, 순환만 없다면 처리 가능 • 조건 • 3중 반복문(for)문을 사용: 거쳐가는 노드, 출발노드, 도착노드 • 2가지 테이블 : 모든 경로의 비용 관련 테이블, 각 정점까지 가기 직전의 정점 관련 테이블
  • 25. 1 2 3 5 4 3 4 82 -5 6 7 1 1 2 3 4 5 1 0 3 8 ∞ -4 2 ∞ 0 ∞ 1 7 3 ∞ 4 0 ∞ ∞ 4 2 ∞ -5 0 ∞ 5 ∞ ∞ ∞ 6 0 -4 1 2 3 4 5 1 - 1 1 - 1 2 - - - 2 2 3 - 3 - - - 4 4 - 4 - - 5 - - - 5 - 테이블1 : 거리를 저장한 테이블 D 테이블2 : 직전 정점을 저장한 테이블 D
  • 26. 1 2 3 5 4 3 4 82 -5 6 7 1 1 2 3 4 5 1 0 3 8 ∞ -4 2 ∞ 0 ∞ 1 7 3 ∞ 4 0 ∞ ∞ 4 2 5 -5 0 ∞ 5 ∞ ∞ ∞ 6 0 -4 1 2 3 4 5 1 - 1 1 - 1 2 - - - 2 2 3 - 3 - - - 4 4 1 4 - - 5 - - - 5 - 테이블1 : 거리를 저장한 테이블 D 테이블2 : 직전 정점을 저장한 테이블 D
  • 27. 1 2 3 5 4 3 4 82 -5 6 7 1 1 2 3 4 5 1 0 3 8 ∞ -4 2 ∞ 0 ∞ 1 7 3 ∞ 4 0 ∞ ∞ 4 2 5 -5 0 -2 5 ∞ ∞ ∞ 6 0 -4 1 2 3 4 5 1 - 1 1 - 1 2 - - - 2 2 3 - 3 - - - 4 4 1 4 - 1 5 - - - 5 - 테이블1 : 거리를 저장한 테이블 D 테이블2 : 직전 정점을 저장한 테이블 D
  • 28. 1 2 3 5 4 3 4 82 -5 6 7 1 1 2 3 4 5 1 0 3 8 4 -4 2 ∞ 0 ∞ 1 7 3 ∞ 4 0 ∞ ∞ 4 2 5 -5 0 -2 5 ∞ ∞ ∞ 6 0 -4 1 2 3 4 5 1 - 1 1 2 1 2 - - - 2 2 3 - 3 - - - 4 4 1 4 - 1 5 - - - 5 - 테이블1 : 거리를 저장한 테이블 D 테이블2 : 직전 정점을 저장한 테이블 D
  • 29. 1 2 3 5 4 3 4 82 -5 6 7 1 1 2 3 4 5 1 0 3 8 4 -4 2 ∞ 0 ∞ 1 7 3 ∞ 4 0 5 ∞ 4 2 5 -5 0 -2 5 ∞ ∞ ∞ 6 0 -4 1 2 3 4 5 1 - 1 1 2 1 2 - - - 2 2 3 - 3 - 2 - 4 4 1 4 - 1 5 - - - 5 - 테이블1 : 거리를 저장한 테이블 D 테이블2 : 직전 정점을 저장한 테이블 D
  • 30. 1 2 3 5 4 3 4 82 -5 6 7 1 1 2 3 4 5 1 0 3 8 4 -4 2 ∞ 0 ∞ 1 7 3 ∞ 4 0 5 11 4 2 5 -5 0 -2 5 ∞ ∞ ∞ 6 0 -4 1 2 3 4 5 1 - 1 1 2 1 2 - - - 2 2 3 - 3 - 2 2 4 4 1 4 - 1 5 - - - 5 - 테이블1 : 거리를 저장한 테이블 D 테이블2 : 직전 정점을 저장한 테이블 D
  • 31. 1 2 3 5 4 3 4 82 -5 6 7 1 1 2 3 4 5 1 0 3 8 4 -4 2 3 0 ∞ 1 7 3 ∞ 4 0 5 11 4 2 5 -5 0 -2 5 ∞ ∞ ∞ 6 0 -4 1 2 3 4 5 1 - 1 1 2 1 2 4 - - 2 2 3 - 3 - 2 2 4 4 1 4 - 1 5 - - - 5 - 테이블1 : 거리를 저장한 테이블 D 테이블2 : 직전 정점을 저장한 테이블 D
  • 32. 1 2 3 5 4 3 4 82 -5 6 7 1 1 2 3 4 5 1 0 3 8 4 -4 2 3 0 ∞ 1 7 3 ∞ 4 0 5 11 4 2 -1 -5 0 -2 5 ∞ ∞ ∞ 6 0 -4 1 2 3 4 5 1 - 1 1 2 1 2 4 - - 2 2 3 - 3 - 2 2 4 4 3 4 - 1 5 - - - 5 - 테이블1 : 거리를 저장한 테이블 D 테이블2 : 직전 정점을 저장한 테이블 D
  • 33. 1 2 3 5 4 3 4 82 -5 6 7 1 1 2 3 4 5 1 0 3 8 4 -4 2 3 0 -4 1 7 3 ∞ 4 0 5 11 4 2 -1 -5 0 -2 5 ∞ ∞ ∞ 6 0 -4 1 2 3 4 5 1 - 1 1 2 1 2 4 - 4 2 2 3 - 3 - 2 2 4 4 3 4 - 1 5 - - - 5 - 테이블1 : 거리를 저장한 테이블 D 테이블2 : 직전 정점을 저장한 테이블 D
  • 34. 1 2 3 5 4 3 4 82 -5 6 7 1 1 2 3 4 5 1 0 3 8 4 -4 2 3 0 -4 1 7 3 ∞ 4 0 5 11 4 2 -1 -5 0 -2 5 8 ∞ ∞ 6 0 -4 1 2 3 4 5 1 - 1 1 2 1 2 4 - 4 2 2 3 - 3 - 2 2 4 4 3 4 - 1 5 4 - - 5 - 테이블1 : 거리를 저장한 테이블 D 테이블2 : 직전 정점을 저장한 테이블 D
  • 35. 1 2 3 5 4 3 4 82 -5 6 7 1 1 2 3 4 5 1 0 3 8 4 -4 2 3 0 -4 1 7 3 ∞ 4 0 5 11 4 2 -1 -5 0 -2 5 8 ∞ 1 6 0 -4 1 2 3 4 5 1 - 1 1 2 1 2 4 - 4 2 2 3 - 3 - 2 2 4 4 3 4 - 1 5 4 - 4 5 - 테이블1 : 거리를 저장한 테이블 D 테이블2 : 직전 정점을 저장한 테이블 D
  • 36. 1 2 3 5 4 3 4 82 -5 6 7 1 1 2 3 4 5 1 0 3 8 4 -4 2 3 0 -4 1 7 3 ∞ 4 0 5 11 4 2 -1 -5 0 -2 5 8 ∞ 1 6 0 -4 1 2 3 4 5 1 - 1 1 2 1 2 4 - 4 2 2 3 - 3 - 2 2 4 4 3 4 - 1 5 4 - 4 5 - 테이블1 : 거리를 저장한 테이블 D 테이블2 : 직전 정점을 저장한 테이블 D
  • 37. 1 2 3 5 4 3 4 82 -5 6 7 1 1 2 3 4 5 1 0 3 8 2 -4 2 3 0 -4 1 7 3 ∞ 4 0 5 11 4 2 -1 -5 0 -2 5 8 ∞ 1 6 0 -4 1 2 3 4 5 1 - 1 1 5 1 2 4 - 4 2 2 3 - 3 - 2 2 4 4 3 4 - 1 5 4 - 4 5 - 테이블1 : 거리를 저장한 테이블 D 테이블2 : 직전 정점을 저장한 테이블 D
  • 38. • 시간 복잡도 : O(|V|^3) • (노드의 수) * (노드의 수) * (노드의 수) => |V| * |V| * |V| • 공간 복잡도 : O(2 * |V|^2) • |V| * |V| 사이즈의 테이블 2개 Floyd-Warshall Algorithm
  • 39. 각 알고리즘 간 비교 Dijkstra Bellman-Ford Floyd-warshall 시간 복잡도 O(|V|^2) (Array) O(E*logV) (heap) O(|V|*|E|) O(|V|^3) 공간 복잡도 O(|V|) (Array) O(|V|) O(|V|^2) 특징 하나의 노드에서부터 최단 경로를 구함 최단 경로를 구할 때, 모든 edge를 고려함 모든 노드 사이의 최단 경로를 구함
  • 40. 참고자료 • 다익스트라 알고리즘 : • http://manducku.tistory.com/29 • P-Dijkstra 알고리즘 논문 : • https://fall.kics.or.kr/storage/paper/event/20171110_workshop/publish/9A-4.pdf • 벨만-포드 알고리즘: • https://www.geeksforgeeks.org/dynamic-programming-set-23-bellman-ford-algorithm/ • SPFA를 기반으로 한 개선된 벨만-보드 알고리즘 • http://dcollection.jnu.ac.kr/public_resource/pdf/000000034527_20180413044750.pdf • 플로이드 워셜 알고리즘 • https://ko.wikipedia.org/wiki/%ED%94%8C%EB%A1%9C%EC%9D%B4%EB%93%9C- %EC%9B%8C%EC%85%9C_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98