Traveling Salesman Problem – 개요 (1/2)

Slides:



Advertisements
Similar presentations
최적화 문제 해결 현대 생산  운영관리 부산대학교 산업대학원 2012 년 2 학기 하병현.
Advertisements

PDP/LCD 영상홍보 지역제안서. 회사 소개 회사 연혁매체 소개매체 운영방법설치 사진 Contents.
안녕하십니까! 아파하는 이웃을 위한 치료제, 약 사 팀의 발표를 시작하겠습니다..
그래프.
15 장. 알고리즘의 설계 알고리즘 설계 학습목표 기본 패턴 패턴의 한계점 일곱 가지 패턴의 알고리즘 설계 기법을 이해한다.
캐주얼 온라인게임의 시장 세분화 기능성 게임의 약진과 비전
Maximum Flow.
Design of Waveguide Filter for 5G Phased Array Antenna System (WR-34)
Shortest Path Algorithm
7주차. 제 품 관 리.
2017 법인관련 개정세법 곽장미 세무사.
두벌식 자판과 완성형 코드가 잘못된 까닭과 속내
제 6 장 그래프 6.1 그래프의 정의 6.2 용어 및 표현법 6.3 그래프의 표현 방법 6.4 그래프의 순회와 신장 트리
『대기업-중소협력업체 안전보건 공생협력 프로그램』 추진 사업
워크샵 진행계획(안) 일정 : (금),19:00~1.30(토),12:00 (1박2일,합숙)
제 7 장 정수계획법 (IP : Integer Programming)
CHAP 10:그래프 순천향대학교 하상호.
부분집합의 합 구하기 문제 부분집합의 합 구하기(Sum-of-Subsets) 문제
CHAP 10 : 그래프 C로 쉽게 풀어쓴 자료구조 생능출판사 학기 데이터구조.
CHAP 10 : 그래프 C로 쉽게 풀어쓴 자료구조 Slide 1 (of 62).
연결리스트 (Linked List) 충북대학교 컴퓨터공학과 서 영 훈.
물류관리사 화물운송론 조 윤 성.
지 명 원 First & Best CORPORATION 시스템에어컨만을 관리하는 기업 -
On the computation of multidimensional Aggregates
Introduction.
Genetic Algorithm 신희성.
쉽게 배우는 알고리즘 9장. 그래프 알고리즘.
 Branch-and-Bound (분기한정)
알고리즘(Algorithm) – Greedy Method (탐욕적 방법)
Chapter 10 그래프(graph) SANGJI University Kwangman KO
10장. 그래프 알고리즘.
그래프(graph) 연결되어 있는 객체 간의 관계를 표현하는 자료구조 가장 일반적인 자료구조 형태
이산수학(Discrete Mathematics)
제 7 장 직장인과 세금 목 차 1. 직장인과 연말정산 2. 봉급생활자와 세금 3. 퇴직금과 세금 4. 연금소득
CHAPTER 6 그래프.
동적 계획(Dynamic Programming)
Ch.06 Branch-and-Bound (분기한정법) (Ch.05-7 포함)
월 정례조회.
Ch.03 Dynamic Programming (동적 프로그래밍 or 동적 계획법)
제 7 장 정수계획법 정수계획법의 모형화 정수계획법의 해법 분단탐색법 정수계획법 적용사례.
Homework #5 (1/3) Backtracking, Branch-and-Bound
이산수학(Discrete Mathematics)
고등학생을 위한 성교육 4단원: 나는 이성친구에게 피임 Policy를 제안한다
2d game pRogramming 1차 발표 이재남.
스케줄링 (Scheduling) 시스템 내부시간(time in the system): 스케줄링 문제
한국관광공사 모니터링 조사 결과 보고서 2006 하반기
Prof. Seewhy Lee Presents
동적계획법과 최적화 문제 Dynamic Programming을 사용한 최적화 문제를 해결하는 알고리즘 설계 절차
2010년 연말정산 교육자료 센터운영팀 인사파트
3장. 탐색.
0-1 Knapsack – 개선된 BFS 기반 알고리즘
CHAP 10 : 그래프.
탐색 (Lecture Note #3) 인공지능 이복주 단국대학교 컴퓨터공학과 Modified from the slides
나는 하나님의 사람이예요 나는야 보배로운 하나님 사람 세상에 살지만 하늘을 품네 주의 말씀 내 모든 삶에 기준이 되고 주와 함께 걸어가는 친구로 살리 언제든지 어디든지 주님 따라가리 하나님 나를 보며 기뻐하고 세상은 나를 통해 축복을 받네.
과학 중학교 8학년 2학기 Ⅷ. 혼합물의 분리, 1.순물질과 혼합물
 Branch-and-Bound (분기한정)
Homework #5 (1/3) Backtracking, Branch-and-Bound
8주차. 제 품 관 리 마케팅 원론.
탐색 (Search) 컴퓨터가 문제를 자율적으로 해결하기 위해 해 혹은 해에 이르기 위한 경로를 찾아가는 과정
상황별/유형별 고객응대법.
올바른 부모교육으로 육아를 교육하자 해피트리.
켈러의 경영경제통계학 제11장 모집단에 관한 추론.
지역전략산업진흥사업 연계 첨단부품소재(나노/화학) 마케팅지원사업 설명자료
Traveling Salesman Problem – 개요 (1/2)
제 4장 그리디 알고리즘.
나도 모르게 할 수 있는 범죄! 사이버 폭력!.
사라진 삼국 문화재 연역식의 프리젠테이션 구성 마리포사 탐정 회사.
[CPA340] Algorithms and Practice Youn-Hee Han
Traditional Methods – Part 1
Traveling Salesman Problem – 개요 (1/2)
Presentation transcript:

Traveling Salesman Problem – 개요 (1/2) 외판원이 자신의 집이 위치하고 있는 도시에서 출발하여 다른 도시들을 “각각 한번씩만 방문”하고, “다시 자기 도시로 돌아오는” 가장 짧은 일주여행경로(tour)를 결정하는 문제이다. 일반적으로, 이 문제는 음이 아닌 가중치가 있는, 방향성 그래프를 대상으로 한다. 여러 개의 일주여행경로 중에서 길이가 최소가 되는 경로가 최적일주여행경로(optimal tour)가 된다.

Traveling Salesman Problem – 개요 (2/2) 무작정 알고리즘: 가능한 모든 일주여행경로를 다 고려한 후, 그 중에서 가장 짧은 일주여행경로를 선택한다.  Complete Graph에서 가능한 일주여행경로의 총 개수는 (n – 1)!이다. n = 20일 때, 무작정 알고리즘: 각 일주여행경로의 길이를 계산하는데 걸리는 시간은 1sec이라고 할 때, (20 - 1)! = 19!sec = 3857년이 걸린다. DP 기반 알고리즘 (P.128 참조): 기본동작을 수행하는데 걸리는 시간을 1sec이라고 할 때, T(20) = (20 - 1)(20 - 2)220-3sec = 45초가 걸리고, M(20) = 20  220 = 20,971,520의 배열 슬롯이 필요하다. n = 40이라면? DP 또한 6년 이상 걸린다. Dynamic Programming 방법 또한 실용적인 해결책이 아니다.

TSP – BnB 기반 접근법 – Running Example 보기: 다음 인접행렬로 표현된 그래프를 살펴보시오. 완전 연결그래프의 인접행렬 표현 최적 일주여행경로 14 v1 v2 4 8 11 10 7 5 7 7 v4 v3 9 20 18 16 2 7 17 4 v5

TSP – BnB 기반 상태공간트리 구축 (1/2) 각 노드는 출발노드로부터의 일주여행경로를 나타냄 루트노드의 여행경로는 [1]이 되고, 루트노드에서 뻗어 나가는 수준 1에 있는 여행경로는 각각 [1,2], [1,3], …, [1,5]가 된다. 노드 [1,2]에서 뻗어 나가는 수준 2에 있는 노드들의 여행경로는 각각 [1,2,3], [1,2,4], [1,2,5]가 된다. 이런 식으로 뻗어 나가서 단말노드에 도달하게 되면 완전한 일주여행경로를 가지게 된다. 최적일주여행경로를 구하는 방법: 단말노드에 있는 일주여행경로를 모두 검사하여 그 중에서 가장 비용이 낮은 일주여행경로를 찾으면 된다.

TSP – BnB 기반 상태공간트리 구축 (2/2) 구축된 상태공간 트리의 일부 예 노드의 수 = 5 참고: 각 노드에 저장되어 있는 노드가 4개가 되면 더 이상 뻗어 나갈 필요가 없다. 왜냐하면, 5번째 노드는 더 이상 뻗어 나가지 않고도 알 수 있기 때문이다.

TSP – BnB-Best First Search 개요 (1/6) 분기한정 가지치기로 최고우선 검색을 사용하기 위해서 각 노드의 한계치(bound)를 구할 수 있어야 한다. 이 문제에서는 주어진 노드에서 뻗어 나가서 얻을 수 있는 여행경로 길이의 하한(최소치, lower bound)을 구하여 한계치로 한다. 각 노드를 방문할 때 그 노드가 유망 (Promising)할 조건 “한계치” < “최소여행경로의 길이” 반대로, 최소 여행경로의 길이가 한계치보다 큰 경우는 Pruning을 수행하여 검색 공간을 줄인다.

TSP – BnB-Best First Search 개요 (2/6) 루트노드의 하한 구하기 전략: 어떤 일주여행경로라도 각 정점을 최소한 한번은 방문 후 떠나야 하므로, 각 정점을 떠나는 이음선 중 최소값의 합이 하한이 된다. v1  min(14, 4, 10, 20) = 4 v2  min(14, 7, 8, 7) = 7 v3  min(4, 5, 7, 16) = 4 v4  min(11, 7, 9, 2) = 2 v5  min(18, 7, 17, 4) = 4 따라서, 일주여행경로 길이의 하한은 21(= 4+7+4+2+4)이 된다. 주의할 점은 “이 길이의 일주여행경로가 있다는 말이 아니라, 이보다 더 짧은 일주여행경로가 있을 수 없다”는 것이다. 그래서 하한(lower bound)이라는 말을 사용한다.

TSP – BnB-Best First Search 개요 (3/6) 루트노드가 아닌 다른 노드의 한계치 구하기 주어진 총 정점: [v1, …, vk, vk+1, …, vn] [v1, …, vk] 여행경로를 가진 노드의 한계치 (bound) = [v1, …, vk] 경로 상의 총 거리a + vk 에서 V - [v1, …, vk] 에 속한 정점으로 가는 이음선의 길이들 중에서 최소치b + vk+1 에서 V - [v2, …, vk, vk+1] 에 속한 정점으로 가는 이음선의 길이들 중에서 최소치c + vk+2 에서 V - [v2, …, vk, vk+2] 에 속한 정점으로 가는 이음선의 길이들 중에서 최소치c + … + vn 에서 V - [v2, …, vk, vn] 에 속한 정점으로 가는 이음선의 길이들 중에서 최소치c

TSP – BnB-Best First Search 개요 (4/6) 노드 [1, 2]를 선택한 경우의 하한 구하기 근거: 이미 v2를 선택하였음을 의미하므로, v1  v2의 비용은 이음선의 가중치인 14가 된다. 나머지는 앞서와 동일한 방법으로 구한다. v1  v2 = 14a v2  min(7, 8, 7) = 7b v3  min(4, 7, 16) = 4c v4  min(11, 9, 2) = 2c v5  min(18, 17, 4) = 4c 따라서, [1, 2]를 포함하는 노드에서 확장하여 구한 일주여행경로 길이의 하한은 31(= 14+7+4+2+4)가 된다. bound=21 bound=31

TSP – BnB-Best First Search 개요 (5/6) 노드 [1, 2, 3]를 선택한 경우의 하한 구하기 근거: 이미 v2와 v3를 선택하였음을 의미하므로, v1  v2  v3의 비용은 21(=14+7)이 된다. 나머지는 앞서와 동일한 방법으로 구한다. v1  v2  v3 = 21a v3  min(7, 16) = 7b v4  min(11, 2) = 2c v5  min(18, 4) = 4c 따라서, [1, 2, 3]을 포함하는 노드에서 확장하여 구한 일주여행경로 길이의 하한은 34(= 21+7+2+4)이 된다. bound=21 bound=31 bound=34

TSP – BnB-Best First Search 개요 (6/6) 한계치(lower bound)와 최소여행경로(Min Length)의 비교 최소여행경로(Min Length) 의 초기값은 로 놓는다. 완전한 여행경로를 처음 얻을 때 까지 방문하는 모든 노드는 한계치가 무조건 의 최소여행경로의 길이 (Min Length= ) 보다 작으므로 그러한 모든 노드는 유망하다. 완전한 여행경로를 얻은 후에는 가 아닌 최소여행경로의 길이(Min Length)를 얻게 되므로, 이후 방문하는 노드의 한계치가 그러한 최소여행경로의 길이(Min Length)보다 크면 Pruning의 효과가 발생한다.

BnB – Best FS 기반 상태공간트리 구축 (1/5) 루트노드 방문 (Lower Bound = 21, minLen = ) 기본적으로 너비우선검색 (Breadth-first search) 노드 [1, 2] (LB = 31) 노드 [1, 3] (LB = 22) 노드 [1, 4] (LB = 30) 노드 [1, 5] (LB = 42) Best First Search에 따라 한계 값이 가장 작은 [1, 3]을 방문한다.

BnB – Best FS 기반 상태공간트리 구축 (3/5) 노드 [1, 3, 2] (LB = 22) 노드 [1, 3, 4] (LB = 27) 노드 [1, 3, 5] (LB = 39) BFS에 따라 한계 값이 가장 작은 [1, 3, 2]를 방문한다.

BnB – Best FS 기반 상태공간트리 구축 (4/5) 노드 [1, 3, 2, 4] 단말노드 이므로 일주여행경로의 길이를 계산한다. 이 길이가 37이고, 37 < 이므로, minLen = 37이 된다. [1, 5]와 [1, 3, 5]는 한계값 (각각 42, 39)이 minLen 보다 크므로 Pruning 할 수 있다.

BnB – Best FS 기반 상태공간트리 구축 (4/5) 노드 [1, 3, 2, 5] 방문 결과 minLen = 31이 된다. [1, 2]를 가지치기 할 수 있다. 다음으로, [1, 3, 4]를 선택한다. 상기 과정을 계속 반복하면, minLen = 30을 최소 일주 경로 길이로 구할 수 있다.

BnB – Best FS 기반 상태공간트리 구축 (1/5) 최종 결과 트리 (p.244)

TSP – BFS 기반 상태공간트리 구축 (5/5) 원래 상태공간 트리의 전체 노드 개수는 41개가 될 수 있다. (1 + 4 + 4 x 3 + 4 x 3 x 2 = 41) 반면에, BnB-BFS에서 구성한 상태공간트리를 보면 노드 개수가 17개이다. 결국, 효과적인 Pruning이 이뤄짐을 알 수 있다.

TSP의 BnB-BFS 기반 알고리즘 자세한 알고리즘은 생략 (교재 p. 247 참조) 아직도 알고리즘의 시간복잡도는 지수적 시간에 거의 가깝다! 증명 생략 하지만, 대체로 DP 보다 빠른 시간 내에 답을 구할 수 있음 BnB-BFS를 사용해도 여전히 n = 40 정도가 되면 문제를 풀 수 없는 것과 다름없다고 할 수 있다. 다른 방법이 있을까? 근사(approximation) 알고리즘: 최적의 해답을 준다는 보장은 없지만, 무리 없이 최적에 가까운 해답을 주는 알고리즘 (대학원)

TSP를 해결하는 여러 근사알고리즘 논문