DETAPSACK DYNAMING 프로그래밍 복잡성 문제 $ W= 1 $는 $ O (n) $인가?
-
29-09-2020 - |
문제
0-1끼리 문제는
에 의해 제공됩니다.$$ \ begin {Align} & \ text {maximize} \ sum_ {i= 1} ^ n v_ix_i, \ tag {p1} \\ & \ text {} \ sum_ {i= 1} ^ n w_i x_i \ leq w, \\ & \ text {and} x_i \ in \ {0,1 \}. \ end {정렬} $$
이 문제에 대한 동적 프로그래밍 알고리즘을 실행하면 $ o (nw) $ 에 최적의 해결책을 제공합니다.
$ p_i= w_i / w $ 을 정의하면 다음 knapsack 문제가 발생합니다 :
$$ \ begin {정렬} & \ text {maximize} \ sum_ {i= 1} ^ n v_ix_i, \ tag {p2} \\ & \ text {} \ sum_ {i= 1} ^ n p_i x_i \ leq 1, \\ & \ text {and} x_i \ in \ {0,1 \}. \ end {정렬} $$
이 문제에 대한 동적 프로그래밍 알고리즘을 실행하면 $ o (n) $ 에 최적의 해결책을 제공합니다.이것은 사실이 아닙니다, 그렇지 않습니까?
해결책
모든 가중치가 정수 인 경우 실행 시간은 $ O (NW) $ 입니다.이는 동적 프로그래밍 테이블이 하위 집합의 무게로 인덱싱되기 때문입니다.모든 가중치가 정수 인 경우, 우리는 $ W $ 에만 $ w + 1 $ 우리에게 관심을 가질 수있는 부분 집합의 무게. 실행 시간의 $ W $ 요인이 오는 곳입니다.