홀드-카프 알고리즘
Held–Karp algorithm홀드-카프 알고리즘(Bellman-karp)이라고도 함Held–Karp 알고리즘은 역동적인 프로그래밍 알고리즘 1962년에 독립적으로 Bellman[1]과 헬드와 Karp[2]에 의해로 도시에 대한 집합 간의 입력은 거리 매트릭스를 방문 외판원 문제(TSP),를 해결하기 위해 제안된, 그리고 그 목표가 일단 정확히 말하자면 시동으로 돌아오기 전에 각 도시를 방문하는minimum-length 여행을 찾는 것이다.지점그것은 이 문제와 해밀턴 사이클 문제를 포함한 몇 가지 관련 문제들에 대한 정확한 해결책을 기하급수적으로 시간에 찾아낸다.
알고리즘 설명 및 동기 부여
이(가) 임의로 "시작" 도시로 지정된 로 1,,n 1, 도시에 번호를 매긴다(TSP에 대한 해결책이 사이클이기 때문에 시작 도시의 선택은 중요하지 않다).The Held–Karp algorithm begins by calculating, for each set of cities and every city not contained in , the shortest one-way path from to that passes through e의 매우 도시(다른 도시에서는 제외됨)Denote this distance , and write for the length of the direct edge from to . We'll compute values of starting with the smallest sets and f가장 큰 것들과 함께 하는
이 (가) 둘 이하인 경우 , ){\을(를) 계산하려면 하나 또는 두 개의 가능한 최단 경로를 확인해야 한다.For example, is simply , and is just the length of . Likewise, is the length of either→ → → 4 또는 → 3→ 2→ [\중 더 짧은 것이 특징이다.
S 에 3개 이상의 도시가 포함되면 을 통과하는 경로의 수는 빠르게 증가하지만, 그러한 경로의 몇 개만 검사하면 가장 짧은 도시를 찾을 수 있다.For instance, if is shorter than , then must be shorter than , and the length of is not a possible value of . Similarly, if the shortest path from through to is , and the shortest path from through to ends with the edge , then the whole path from to must be , and not any of the other five paths created by visiting in a dif격조 높은 질서
보다 일반적으로 ={ 1,…, s S이 (가) k 도시의 집합이라고 가정하자.For every integer , write for the set created by removing from 그런 1{\ 에서 S{\ S까지 가는 최단 에 i 가 두 번째에서 인 도시인 경우 이 경로에서 최종 가장 짧은 경로를 해야 ~ 즉, , s )+ , ) {i 각각 가능한 2 ~ 도시의 에 1 k}에서e {\ s}까지의최단 경로만 있을 수 있다 및 e)= g , i)+ d( s , ) = }}{i})+
This stage of the algorithm finishes when is known for every integer , giving the shortest distance from city to city that passes through every 다른 도시.훨씬 짧은 두 번째 단계는 이러한 거리를 가장자리 길이 , ) 에 추가하여 - 1 의 가능한 최단 주기를 부여한 다음 가장 짧은 거리를 찾는다.
마지막으로 가장 짧은 경로 자체(뿐만 아니라는 에서 을를 통해 e {\까지의 경로에 두 번째에서 마지막 의 라벨을 저장하여 공간 요구사항을 일정한 요인만 증가시킴으로써 재구성할 수 있다.
알고리즘 복잡성
Hold-Karp 알고리즘은 시간 (2 를 가지는데 이는 흉물-강력 알고리즘의 초경량 성능 ( 보다 상당히 나은 것이다.그러나 홀드-Karp는 함수 , e ){\ ^{의 모든 계산 값을 보유하려면 공간이 필요한 반면, 과격력은 그래프 자체를 하려면 ) 공간만 필요하다.
시간
Computing one value of for a -element subset of requires finding the shortest of possible paths, each found by adding a known value of and anedge length from the original graph; that is, it requires time proportional to . There are -element subsets of ; and each subset gives possible values of . Computing all values of where thus requires time , for a total time across all subset sizes .알고리즘의 두 번째 는 - 1 후보로부터 완전한 주기를 찾는 으로 ,() 시간이 소요되며 점증상 성능에 영향을 주지 않는다.
공간
Storing all values of for subsets of size requires keeping values.A complete table of values of thus requires space .
사이클 자체가 아니라 최단 사이클의 길이만 필요한 경우, k 의 S g}에 g(, e) 을(를 계산하려면 - 의부분 집합에 대해 값만 필요하다는 점에 유의하여 공간 복잡성을 다소 개선할 수 있다.. Keeping only the values of where has size either or 은(는 = k 일 때 얻어진 알고리즘의 최대 공간 요구사항을 로 줄인다
예[3]
거리 행렬:
함수 설명:
- g(x, S) - 1, path min cost가 꼭지점 x에서 끝나기 때문에 S 세트의 정점을 정확히 한 번 통과
- cxy - y에서 x로 끝나는 에지 비용
- p(x, S) - 세트 S에서 x까지의 두 번째에서 마지막 정점.끝에서 뒤로 TSP 경로를 구성하는 데 사용된다.
k = 0, null 집합:
∅ 설정:
g21(2, ∅) = c = 1 g(3, ∅) = c31 = 15 g(4, ∅) = c = 641
k = 1, 원소의 집합 고려:
{2} 설정:
g(3,{2}) = c32 + g(2, ∅ ) = c21 = 732 + 1 = 8 p(3,{2}) = 2 g(4,{2}) = 2 g(2, ∅ ) = c424221 = 3 + 1 = 4 p(4,{2}) = 2
{3} 설정:
g23(2,{3}) = c + g(3, ∅ ) = c = 623 + 1531 = 21 p(2,{3}) = 3 g(4,{3}) = 3 g(3, }) ) = c4343 = 12 + 1531 = 27 p(4,{3}) = 3
{4} 설정:
g24(2,{4}) = c + g(4, ∅ ) = c = 424 + 641 = 10 p(2,{4}) = 4 g(3,{4} = 4 g(3,{4}) = c34 + g41(4, ∅ ) = c34 = 8 + 6 = 14 p(3,{4}) = 4
k = 2, 다음 두 요소의 집합을 고려하십시오.
{2,3} 설정:
g(4,{2,3}) = 최소 {c42 + g(2,{3}), c43 + g(3,{2}}} = 최소 {3+21, 12+8}= 최소 {24, 20}= 20p(4,{2,3}) = 3
{2,4} 설정:
g(3,{2,4}) = 최소 {c32 + g(2,{4}), c34 + g(4,{2}}) = 최소 {7+10, 8+4} = 최소 {17, 12} = 12p(3,{2,4}) = 4
{3,4} 설정:
g(2,{3,4}) = 최소 {c23 + g(3,{4}), c24 + g(4,{3}}} = 최소 {6+14, 4+27}= 최소 {20, 31}= 20p(2,{3,4}) = 3
최적 둘러보기 길이:
f = g(1,{2,3,4}) = 최소 {c12 + g(2,{3,4}), c1314 + g(3,{2,4}), c + g(4,{2,3}) } = 최소 {2 + 20, 9 + 12, 10 + 20} = 최소 {22, 21, 30} = 21 = 21 = 21 = 21 = 21 = 21 = 21 = 21
노드 1의 이전 버전: p(1,{2,3,4}) = 3
노드 3의 이전 버전: p(3, {2,4}) = 4
노드 4의 이전 버전: p(4, {2}) = 2
노드 2의 이전 버전: p(2, {}) = 1
따라서 최적의 TSP 투어는 1 → 3 → 4 → 2 → 1로 주어진다.
가성음[4]
function algorithm TSP (G, n) is for k := 2 to n do g({k}, k) := d(1, k) end for for s := 2 to n−1 do for all S ⊆ {2, ..., n}, S = s do for all k ∈ S do g(S, k) := minm≠k,m∈S [g(S\{k}, m) + d(m, k)] end for end for end for opt := mink≠1 [g({2, 3, ..., n}, k) + d(k, 1)] return (opt) end function
관련 알고리즘
TSP를 해결하기 위한 정확한 알고리즘
동적 프로그래밍 외에도 선형 프로그래밍과 분기 및 바운드는 TSP에 대한 정확한 솔루션에도 사용되는 설계 패턴이다.선형 프로그래밍은 절삭면 방법을 정수 프로그래밍에 적용하는데, 즉 모델의 두 제약조건에 의해 형성된 LP를 푼 다음, 불평등 제약조건을 추가하여 절삭면을 추구하여 점차 최적의 해법으로 수렴한다.절단면을 찾기 위해 이 방법을 적용할 때 경험에 의존하는 경우가 많아 일반적인 방법으로 사용하는 경우는 드물다.
나뭇가지와 바운드라는 용어는 리틀 등이 TSP에 발표한 논문에서 1963년에 처음 사용되었는데, 정확한 해결책을 위한 실질적인 적용 범위를 확대하기 위해 더 작은 검색 공간을 결합하고 하한을 설정하는 기법을 기술하였다.이 기술은 계산적으로 고려될 수 있는 도시의 수를 확대하는 데 유용하지만, 여전히 대규모 데이터 집합에서 분해된다.
제한적 경계를 적용해 검색 프로세스를 제어해 공간 상태 트리에서 최적의 솔루션 분기를 검색해 최대한 신속하게 최적의 솔루션을 찾을 수 있도록 했다.이 알고리즘의 핵심 요소는 제한적 경계선 선택이다.서로 다른 제한적 경계가 다른 분기 바인딩 알고리즘을 형성할 수 있다.
TSP 해결을 위한 대략적인 알고리즘
문제를 해결하기 위한 정밀 알고리즘의 적용이 매우 제한적이기 때문에 근사 알고리즘이나 휴리스틱 알고리즘을 사용하는 경우가 많다.알고리즘 결과는 C / C* ≤ ε으로 평가할 수 있다. C는 근사 알고리즘에서 생성된 총 이동 거리, C*는 최적 이동 거리, ε은 최악의 조건에서 최적 솔루션에 대한 근사 용액의 총 이동 거리 비율에 대한 상한이다.ε >1.0의 값.1.0에 가까울수록 알고리즘이 좋다.이러한 알고리즘에는 다음이 포함된다.보간 알고리즘, 가장 가까운 이웃 알고리즘, Clark & Wright 알고리즘, 더블 스패닝 트리 알고리즘, Christofides 알고리즘, Hybrid 알고리즘, 확률론 알고리즘(예: 시뮬레이션 어닐링)
참조
- ^ '여행 중인 세일즈맨 문제의 동적 프로그래밍 처리' 리차드 벨만, 협회 저널 오브 어소시에이션 계산 마하 9. 1962.
- ^ '문제 시퀀싱에 대한 동적 프로그래밍 접근법' 마이클 홀드와 리차드 M. Karp, 산업 및 응용 수학 협회 저널 1962년 1장 10절.
- ^ http://www.mafy.lut.fi/study/DiscreteOpt/tspdp.pdf
- ^ http://www.lsi.upc.edu/~mjserna/docencia/algofib/P07/dynprog.pdf[영구적 데드링크]