문제

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 $ 요인이 오는 곳입니다.

$ W $ 에 의한 모든 가중치를 정확히 정확히 수행합니다.당신은 문제를 바꾸지 않았으므로 해결하기위한 필요한 시간은 정확히 동일합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top