문제

나는 이제 송풍기 문제 (KP)를 연구하고있다. - Middle "rel="Nofollow Noreferrrer "> Wikipedia $ ^ * (2 ^ {n / 2}) $ ? 나는 0-1 kp의 특정 인스턴스 인 서브 세트 합계 문제 (SSP)에 대한 알고리즘을 이해할 수 있지만 일반화 된 문제는 단계에 문제가있을 수 있습니다 :

  for each subset of A do
      find the subset of B of greatest value such that the combined weight is less than W
.

이해할 때, 이것은 각 검색에 대는 로그 시간을 소요하는 B의 모든 하위 집합의 결합 된 가중치에서 검색 (예 : 바이너리 검색)을 검색하는 것입니다. 그러나 어느 하위 집합이 W가 적은 무게를 결합한 것을 알고 나서 가장 큰 가치 중 하나를 찾는 방법은 무엇입니까? $ o ^ * (2 ^ {n / 2}) $ 과 같은 $ o ^ * (2 ^ n) $

결합 된 무게에 대한 수축이없는 가장 큰 값 (테이블에 쉽게)을 찾는 것에서도, 그 후에 체중 검증은 거짓으로 바뀌고 다른 하위 집합에 더 많은 테스트가 필요합니다. 숫자는 테이블 크기와 연관된 것처럼 보입니다.

이제는 총 가치와 결합 된 가중치가 강하게 긍정적 인 상관 관계가 있으므로 최대 허용 무게가있는 하위 집합을 찾은 후에는 가장 큰 값 중 하나에 대해이 하위 집합을 검색하는 데 일정한 시간이 걸립니다. 그러나 나는이 설명에 만족하지 않는다. 그래서 누구도이 문제에 대한 더 나은 아이디어가 있습니까?

PS : 나는 Horowitz, Ellis and Sahni, Sartaj의 원래의 종이를 읽었으나 공통 최적화 문제가 아닌 결정 문제가 정의 된 문제가 발견되었습니다. 어쩌면 누군가 가이 방향으로 아이디어를 제공 할 수 있습니다.

도움이 되었습니까?

해결책

첫째, $ B $ 의 모든 하위 집합의 가중치를 미리 양호합니다.

가중치로 정렬하고 병렬 배열에 가중치와 하위 집합을 $ w [i]= 무게 $ $ s [i]= 하위 집합 $

그런 다음 $ Best [i] $ $ j $ $ j <= i $ 을 제공하는 가장 큰 값 집합의 집합. $ i= 0 $ 에서 지금까지 가장 큰 값을 기억하는 가장 큰 값을 기억하십시오.

이제 $ b $ 을 검색하려면 $ W $ 에서 바이너리 검색을 수행합니다.최대 허용 무게는 $ BEST $

의 동일한 인덱스에서 가장 적합한 세트를 얻습니다.

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