5. The Traveling Salesperson Problem (TSP)
0) The Traveling Salesperson Problem
1> tour (Hamiltonian cycle)
모든 vertex를 한 번씩 지나는 cycle 구하기
2> optimal tour
minimum length(cost)로 tour를 만들기
=> TSP : optimal tour 찾기
1) The Principle of Optimality
1> 전제 : T = [v1, vp1, vp2, ... , vpn-1, v1] = optimal tour
=> P = [vp1, vp2, ... , vpn-1, v1]라는 path가 minimum length(cost)
2> 가정 : P'라는 다른 path가 length(cost)가 더 작다.
3> 전제 부정 : P가 minimum length(cost)라는 것에 모순이 생깁니다.
4> 결론 : 그러므로 P가 minimal length(cost)를 가집니다.
2) Algorithm
0> recursive form을 위한 정의
W[i][j] : vi부터 vj까지의 length(cost) (edge가 없으면 ∞)
D[vi][A] : [1] vi부터 v1까지 [2] A 내부의 모든 점을 한 번씩 지나는 [3] 최소 path의 length(cost)
1> recursive form
[1] recursive form
(vi에서 A 내부 원소들을 중복 없이 다 거쳐서 v1까지 갈 때의 minimum length)
- <1> vj에서 'vj를 제외한 A 내부 원소들을 중복 없이 다 거쳐서 v1까지 간 것 앞에
- <2> vi에서 vj까지의 length를 붙인 것
- A 내부의 j 중에서 <1> + <2>가 최소가 되는 것을 고른다.
[2] 초항
(vi에서 v1까지 아무것도 거치지 않고 갈 때의 minimum length = W[i][1])
[3] 최종 optimal tour 형태
(v1에서 V-{v1} 내부 원소들을 중복 없이 다 거쳐서 v1까지 갈 때의 minimum length)
2> bottom-up
A가 공집합일 때부터 |A|=n-1일 때까지 bottom-up
3> top-down
[1] memo
P[i][A] : D[i][A}에서 최소를 만드는 j를 저장합니다. (i 다음에 i를 이어주는 j를 저장합니다.)
[2] 구현
3) Complexity
1> Time Complexity
2> Space Complexity
'알고리즘 > 알고리즘_학교' 카테고리의 다른 글
7-0강 - Greedy Algorithm 0 (그리디 알고리즘) (0) | 2020.11.25 |
---|---|
6-9강 - [중요] Dynamic Programming 9 (Directed Acyclic Graphs) (0) | 2020.11.25 |
6-3강 - Dynamic Programming 3 (the principal of optimality, 행렬 곱셈) (0) | 2020.11.12 |
6-2강 - Dynamic Programming 2 (최단거리 유형, 플로이드 알고리즘 ) (0) | 2020.11.12 |
6-1강 - Dynamic Programming 1 (DP, Binomial Coefficient) (0) | 2020.11.11 |