문제

일정한 $ l $ 에 의해 배낭에있는 항목 수를 수정 해야하는 경우 어떻게 배낭 문제를 해결할 수 있습니까?이것은 동일한 문제입니다 ( $ w $ 의 최대 무게가 $ v $ 값이 있습니다.무게 $ w $ ) 그러나 $ l $ 항목을 추가해야합니다.배낭에 (S) (그리고 분명히 배낭의 총 가치를 최적화해야 함).

지금까지이를 구현하는 것으로 생각한 모든 방법 (동적 프로그래밍, 무차별 힘)은 실패 또는 수명의 유니버스 수준 계산 시간을 초래했습니다.도움이나 아이디어가 감사합니다.

편집 : 나는 의사 - 다항식 시간 솔루션을 찾고 있습니다

도움이 되었습니까?

해결책

이 문제를 배낭의 인스턴스로 변환 할 수 있습니다. $ n $ 항목 수, $ v $ 항목의 최대 값이되고 각 항목은 대부분의 $ W $ (그렇지 않으면 버려집니다).

적어도 $ l $ 항목 :

를 선택하십시오.

  • $ n (v + 1) $ 을 모든 항목의 값으로 추가합니다.
  • 이제 문제는 선택한 항목의 수를 극대화하는 것과 동일합니다. 무게 제약 조건에 따라 가장 큰 원래 총 값을 가진 항목 세트를 찬성하여 넥타이를 분해하는 것과 동일합니다. 최소한 $ L $ 항목을 선택하는 솔루션이 있습니다. IFF 최적의 솔루션은 적어도 $ N (v +1) l $ .

대부분의 $ l $ 항목 :

를 선택하십시오.

  • $ (w + 1) $
  • 를 추가하십시오.
  • $ l (w + 1) $ $ w $
  • 이제 $ l $ 항목의 모든 부분은 최소한 $ (l + 1) (w + 1) )= L (w + 1) + (w + 1)> l (w + 1) + w $ 이므로 실현 가능하지 않습니다. $ l $ 수학 컨테이너 "> $ w $ 의 전체 무게가있는 항목은 이제 $ L (W + 1) + W $ 이므로 가능한 IFF $ w \ LE W $ 입니다. $ L $ 항목이 항목이 가능할 수 있습니다. $ W $ 그러나 전체 값은 항상 $ n (v + 1) l $ 을보다 작게합니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top