다음과 같은 수학 문제가 있습니다. 응용 프로그램에서 필요한 문제가 있습니다. 근사치와 반대로 최적의 솔루션을 찾는 효율적인 방법이 있는지 궁금합니다.알고리즘 : 범위 내에서 머물 수있는 최적의 값 조합
- 나는 양수 값과 음수 값 목록이 있습니다.
- 이들 값의 합계는 (x, y) 범위 내에 있습니다.
- 나머지 값의 합계가 범위 내에 있도록 제거 할 수있는 최대 값 수를 알고 싶습니다.
예 :
Values: -10, -5, -2, 7, 9, 15
Sum: 14
Range: (10, 18)
Eliminate -2 => SUM = 16
Eliminate -5 => SUM = 21
Eliminate 7 => SUM = 14
Eliminate -10 => SUM = 24
Eliminate 9 => SUM = 15
(15)을 제거하여 만들 것이다 범위 밖에 SUM = 0. 5 값이 제거되었습니다.
반면에 15를 제거하고 -10, -5, -2를 제거하면 4 개의 값만 제거 할 수 있습니다.
나는 모든 가능한 조합을 시도한 알고리즘을 작성했지만 그 성능은 25 개 이상의 값을 갖게되면 빠르게 저하됩니다. 나는 100-200 값에 대해 10 분의 1 초의 결과가 필요합니다.
현재는 절대 값을 기준으로 작은 값에서 큰 값으로 정렬 한 다음 합계가 더 이상 범위에 포함되지 않을 때까지 하나씩 제거합니다. 물론, 이것이 항상 최적의 솔루션을 제공하지는 못합니다.
이것이이 질문 유형에 적합한 장소가 아니며 다른 포럼을 참조 할 수 있다면 도움이 될 것입니다.
모든 제거가 범위 또는 최종 번호 목록에 머물러 야합니까? 예를 들어 범위가 (-1, 1)이고 (5, -5)가 있으면 둘 다 제거 할 수 있습니까 아니면 전혀 사용하지 않을 수 있습니까? – vroomfondel
@rogaos 예제의 두 번째 단계는 21의 합계를 제공하기 때문에 마지막 숫자가 범위에 있어야한다고 생각합니다. – Teepeemm
@rogaos : 마지막 숫자 목록 만 범위 내에 있어야합니다. –