TSP에 대한 Bellman-Held-Karp 알고리즘의 시간 복잡성, 2 소요


16

최근의 질문BellmanHeld-Karp 와 독립적으로 인해 TSP에 대한 현재 고전적인 동적 프로그래밍 알고리즘에 대해 논의했습니다 . 알고리즘은 보편적 으로 시간 으로 실행되는 것으로보고됩니다 . 그러나 최근에 한 학생이 지적했듯이이 러닝 타임에는 불합리하게 강력한 계산 모델이 필요할 수 있습니다.O(2nn2)

다음은 알고리즘에 대한 간략한 설명입니다. 입력 값은 개의 꼭짓점이 있고 음이 아닌 길이 함수 를 갖는 유 방향 그래프 로 구성 됩니다. 임의의 정점 과 , 어떤 부분 집합 X 제외 것을 정점 t는 ,하자 L (들, X, t)가 최단 해밀턴 경로의 길이를 나타낸다 t 유도 서브 그래프에서 G [X \ 컵 \ {s, t \}] . Bellman-Held-Karp 알고리즘은 다음과 같은 되풀이를 기반으로합니다 (또는 경제학자 및 제어 이론가로서 "Bellman의 방정식"이라고 함).n : E R + s t X s t L ( s , X , t ) s t G [ X { s , t } ]G=(V,E)n:ER+stXstL(s,X,t)stG[X{s,t}]

L(s,X,t)={(s,t)if X=minvX (L(s,X{v},v)+(v,t))otherwise

정점 s 경우 최적의 여행 세일즈맨 투어의 길이는 L(s,V{s},s) 입니다. 첫 번째 매개 변수 s 는 모든 재귀 호출에서 일정 하기 때문에 Θ(2nn) 다른 하위 문제가 있으며 각 하위 문제는 최대 n 다른 문제에 따라 달라집니다 . 따라서 동적 프로그래밍 알고리즘은 O(2nn2) 시간에 실행됩니다.

아니면합니까?!

표준 정수 RAM 모델은 O(logn) 비트를 사용하여 정수의 상수 시간 조작을 허용 하지만, 적어도 산술논리 연산의 경우 더 큰 정수는 워드 크기의 청크로 나눠야합니다. (그렇지 않으면 이상한 일 이 발생할 수 있습니다.) 더 긴 메모리 주소에 대한 액세스도 마찬가지입니까? 알고리즘이 초 다항식 공간을 사용하는 경우 메모리 액세스에 일정한 시간 만 필요하다고 가정하는 것이 합리적입니까?

특히 벨만 - 보류 - 카프 알고리즘, 알고리즘은 서브셋의 설명 변환해야 X 서브 세트의 설명에 X{v} 각각에 대한 v , 순서대로 액세스의 메모이 제이션 테이블. 서브 세트가 정수로 표현되는 경우, 이들 정수는 n 비트를 요구 하므로 일정한 시간에 조작 될 수 없다; 정수로 나타내지 않으면 메모 테이블에 대한 인덱스로 직접 표현을 사용할 수 없습니다.

그래서 : 벨만 - 개최 - 카프 알고리즘의 실제 점근 실행 시간은?


"이상한 것"링크가 깨졌습니다.
타이슨 윌리엄

링크를 수정했습니다.
Jeffε

답변:


12

이것은 철학적 인 것보다 수학적 답이 아니지만, 적어도 만큼 큰 비트 수의 비트 수를 가진 정수의 정수 시간 조작을 허용하는 RAM 모델을 생각하는 것을 선호합니다 여기서 S는 알고리즘에 필요한 공간입니다. 정수가 그렇게 크지 않다면 어떻게 메모리를 해결할 수 있습니까? 다항식 시간 및 공간 알고리즘의 경우 O (log n) 비트와 동일하지만 지수 공간 알고리즘의 경우 문제를 피합니다.log2S

물론 S가 실제로 보유한 메모리 양을 초과하면 알고리즘이 전혀 실행되지 않습니다. 또는 정보를 메모리 내외부로 페이징하여 실행되므로 RAM 모델 대신 메모리 계층 구조 모델을 사용해야합니다.


기계 모델이 입력 크기 에 의존해야한다는 생각에 익숙 하지만 기계 모델이 알고리즘에 의존하게하는 데 약간의 어려움이 있습니다. 이미 지수 공간을 사용하는 한 PSPACE의 시스템이 일정한 시간 안에 문제를 해결하도록 하시겠습니까? n
Jeffε

3
나에게 그것은 알고리즘에 따라 모델을 다양하게 만드는 문제가 아니라 고정되어 있지만 모든 알고리즘을 실행할 수없는 모델이 있는지에 대한 질문이 아닙니다 (공간이 부족하기 때문에). 그것은 실제 컴퓨터와 크게 다르지 않습니다.
David Eppstein

1
I am not convinced by David's answer. There are two issues here. One is theoretical, the other practical. In the theoretical setting it is more natural to be precise about the model and analyze the running time appropriately. In the practical setting it is not easy to know whether one would actually run out of memory on any particular instance because of various optimizations that one can do (and do partial memoization etc), however, when implementing the algorithm we will have to deal with how we store the sets and index into them. The above model does not help in this regard.
Chandra Chekuri

8

Wf(n)=O(g(n))f(n)=O(g(n)poly(n))

O(2n)2nlogWnO(1) (note, 2nlogWnO(1)O(2n) ), respectively.


1
So they dodge the issue by hiding the polynomial factor. I want to know what the polynomial factor is!
Jeffε

3
They assume that the polynomial factor is n2 (see the link in my comment).
Oleksandr Bondarenko
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.