버킷으로 그룹화 된 항목의 중첩되지 않는 조합을 모두 찾아야합니다. 여러 개의 버킷이있을 수 있으며 각 버킷에는 여러 개의 항목이 포함될 수 있습니다. 올바른 조합에는 각 버킷의 정확히 1 개의 항목이 포함됩니다.겹치지 않는 모든 조합은 어떻게 찾습니까?
bucket item start end
========================
|-- I1 1 5
B1----|-- I2 6 9
|-- I3 15 20
|-- I4 6 9
B2----|-- I5 10 14
|-- I6 14 25
|-- I7 1 14
B3----|-- I8 26 40
|-- I9 1 20
|-- In ...
Bn ...
예를 들어, 1,4,8; 1,5,8; 1,6,8; 2,5,8; 2,6,8; 3,4,8; 및 3,5,8.
항목 9는 버킷 1의 모든 항목과 겹치기 때문에 조합으로 나타나지 않으며 옵션이없는 것을 볼 수 있습니다.
이 문제를 어떻게 효율적으로 가장 잘 해결할 수 있습니까? JavaScript JavaScript에서 이것을 구현하고 있습니다.
버킷이 채워지는시기와 방법을 설명해야합니다. – Popnoodles
각 버킷 (및 해결 중 부분 솔루션)을 고정하려면 간격 트리를 사용해야합니다. 그것 이외의, 이것은 NP 완전한 문제처럼 보입니다. – ElKamina
@popnoodles : 간단한 개체 배열로 시작합니다. '[{버킷 : Bn, id : In, 시작 : x, 끝 : y}, ...]' – josh3736