Algum plano de fundo. O problema acima é o problema da mochila com restrições. A solução de problema de mochila mais eficiente, com ou sem restrições, pode ser resolvida em tempo pseudopolinomial, ainda NP-Hard. Para algumas variações, consulte https://en.wikipedia.org/wiki/Knapsack_problem#Definition . A primeira restrição nessa variação é que o valor dos itens (bolas) a serem colocados na mochila (caixas) não importa. O problema é restrito à quantidade de tempo que leva para colocar os itens na mochila. O problema original requer que os itens mais valiosos sejam colocados no menor tempo possível. Outra restrição com esta versão é que os pesos e todos os outros argumentos são inteiros. E a restrição de interesse é que os pesoswjdivida para todos os j . Nota: o problema da mochila fracionária pode ser resolvido em tempo polinomial, mas não apresenta as soluções mais práticas para o problema original. Esse problema usa números inteiros que se dividem igualmente (sem soluções racionais). Talvez veja Qual é o grande problema com o problema da mochila? .wj+1j
A principal pergunta talvez deve ser "é este problema ainda NP-Hard quando é ilimitado por um polinômio correspondente ao i , como o problema é menos complexa (em P) quando é limitado? A razão de eu dizer isso é porque o problema pode ser mostrado em P quando w j é delimitado e NP-Hard quando w j não necessariamente divide w j + 1wjiwjwjwj+1uniformemente (os pesos são simplesmente aleatórios), todas as restrições limitam a complexidade desse problema a essas duas condições. Essas condições (1. o problema da mochila de peso aleatório sem a restrição de valor do item e 2. o problema da mochila de peso divisível sem a restrição de valor do item) se negam em termos de redução da complexidade, pois os quocientes dos pesos podem ser aleatórios ( especialmente quando ilimitado), impondo cálculos de tempo exponencial (isso será mostrado no exemplo abaixo). Além disso, como divide w j + 1 , w j aumenta exponencialmente em tamanho para cada jwjwj+1wjj. Isso ocorre porque, em vez de usar itens ponderados aleatórios (bolas cujo peso unitário pode ser limitado a pesos unitários inferiores a 100 ou 50 ou mesmo 10), a restrição faz com que a complexidade do tempo dependa do número de dígitos de , o mesmo como divisão de teste, que é exponencial.wj
Portanto, sim, o programa inteiro acima permanece NP-difícil, mesmo quando divide w j + 1 para todos os j . wjwj+1j E isso é facilmente observado.
Exemplo 1: Seja e w p sejam potências de dois. Por causa da constante dois, todo o problema é resolvido no tempo quadrático, como mostra o seu exemplo. Os pesos não são aleatórios e, portanto, o cálculo é resolvido com eficiência.n=1wp
wj+1wj∗ppjp=2,j=1:p=3,j=2,p=5,j=3,p=7,j=4,...,P,Jwjwj+1jwjj1,2,6,30,210,2310,30030,...pj ~ jlog(j), via the prime number theorem), as the quotients are all primes, we get the complexity NP-Intermediate.
Example 3: let wj+1 be defined as wj∗Rp, where Rp is a randomly chosen prime number from two to infinity, corresponding to j. This is applicable to this problem, as wj divides wj+1 for all j. We get the first 5 quotients (randomly falling from two to infinity), as 101,2657,7,3169,2. We see that even at the 5th ball, the weight has eleven digits. Fortunately, the fifth quotient was two and not a prime in the order of 10100 or larger.
Example three above is what happens when wj is not bounded (random weights) by a polynomial corresponding to i. The time complexity is exponential, NP-Hard. For some perspective, just add up all the weights, see if they fit. But there isn’t a solution to solving it significantly faster by making the weights divisible than trying each subset to see if it works. After a few dozen balls, you are still entering the realm of even the trillions of subsets or trillions of digits.