2017-02-14 17 views
1

Iv'e가 프로젝트에서 작업 중이고 다음과 같은 시나리오가 발생했습니다. 가중치가 가장 좋지만 제한이 2 개인 M> N 인 동안 M의 집합에서 N = 2 상자를 선택해야합니다 :알고리즘 제한이 2 개인 배낭

  • 우리는 우리는 같은 박스 ID를 선택할 수 없습니다 같은 상자 색상
  • 를 선택할 수 없습니다

상자는 최고

에서 가장 높은 무게 분류 온다 내가 가장 높은 무게 red1라고로 시작하는 순진한 알고리즘 (red1라면, Blue2)를 선택 0

enter image description here

, 우리는 우리가 같은 ID 1이 있었기 때문에 Blue1을 추가하고,뿐만 아니라 우리가 빨간색 상자를했기 때문에 Red2를 추가 couldnt는 없습니다 10의 무게로 11의 총 무게로 끝났지 만 Blue1을 선택하면 18.9로 끝날 수 있습니다 & 빨강 2 N은 2보다 클 수 있습니다.

NP 하드 문제입니까? 좋은 런타임 효율성을 가진 더 나은 솔루션?

+0

다른 색상의 수 또는 다른 ID의 수가 제한되어 있습니까? – Codor

+0

2 경계/제약 조건 결과가 서로 다른 색상을 가질 수 있고 가중치 합이 가장 높은 다른 ID가 있어야합니다. – ohadsas

답변

0

우리는 그래서에 따라

복잡성 O(M choose N) 복잡성 O(2^color * 2^id * M * N) 또는 역행 + 치기와 DP 솔루션을 사용하는 방법을 큰 M, N, 색상 및 ID에 대한 제약.

+0

N 및 M의 크기에 따라 달라질 수 있습니다. N은 주로 9-10이고 M은 변경됩니다. 10 - 350 – ohadsas

+0

, N <= 10 및 M <= 350 일 수 있습니다. 역 추적 + 효율적인 잘라내기를 통해 문제가 해결 될 수 있습니다. – algojava