Eu esperava que alguém pudesse me explicar por que exatamente o problema do produto do subconjunto é fortemente NP-difícil, enquanto o problema da soma do subconjunto é fracamente NP-difícil.
Subconjunto Soma: Dado e T , existe um subconjunto X ′ tal que ∑ i ∈ X ′ .
Subconjunto do produto: Dado e T , não existe um subconjunto X ' tal que Π i ∈ X ' x i = T .
Eu sempre pensei que os dois problemas eram equivalentes - uma instância do SS poderia ser transformada em uma instância do SP via exponenciação e uma instância do SP para SS via logaritmos. Isso me levou a concluir que os dois pertenciam à mesma classe de NP-hard - ou seja, ambos eram fracamente NP-hard.
Além disso, parece que a mesma recorrência pode ser usada para resolver ambos os problemas usando programação dinâmica com uma alteração muito pequena (substituindo subtração em SS por divisão em SP).
Isso foi até eu ler o capítulo 8 de "Teoria da computação", de Bernard Moret (para aqueles que não têm o livro, ele tem uma prova de dureza do produto do subconjunto via X3C - um problema fortemente difícil de NP).
Entendo a redução, mas não consigo descobrir o que havia de errado com minha conclusão anterior (equivalência dos dois problemas).
ATUALIZAÇÃO : Acontece que o produto do subconjunto é apenas fracamente NP completo (o produto de destino é exponencial em ). Gary e Johnson publicaram isso na coluna NP-completeness em 1981 , mas acho que era menos visível do que a afirmação anterior em seu livro.
Respostas:
Em relação ao problema de equivalência da Soma do Subconjunto e do Produto do Subconjunto Existe um detalhe técnico referente ao Produto do Subconjunto. O produto de x's = T é na verdade psuopolinomial se T não for exponencial! Portanto, as provas de que o Subset Product é NP Hard não são (por razões técnicas !!!) muito corretas!
No entanto, dada a promessa de que T é grande, a redução via Logaritmos para Subconjunto dá um SOM DE SUBSET NÃO NORMAL, que está acima dos reais! Isso significa que o algoritmo Psuedopolinomial para Subconjunto de soma não se aplica! Embora os logaritmos sejam pequenos, as casas decimais atrapalham a Programação Dinâmica Psuedopolinomial!
Eu espero que isso ajude
Zelah
fonte
Em primeiro lugar, o uso da exponenciação para ir do SS para o SP funciona (usando a base 2 em vez da base ), mas aumenta o tamanho dos números envolvidos. Uma dureza NP fraca significa que, se os números forem pequenos (ou mais precisamente, indicados como unários), o problema não será mais difícil. Portanto, o uso da exponenciação cria instâncias de tamanho exponencial do SP, mesmo para as instâncias fáceis do SS, em que os números são escritos em unário.e
Em segundo lugar, o uso de logaritmos para ir de SP para SS não funciona, pois os logaritmos geralmente geram valores não inteiros. SS e SP são definidos usando números inteiros, e os logaritmos geralmente resultam em valores transcendentais, difíceis de representar ou fazer contas.
Seja um número inteiro, A > 0 , então o log 2 A é racional se, e somente se A for uma potência de 2, e transcendental de outra forma. Em primeiro lugar, se log 2 A = pA A>0 log2A A para inteiros diferentes de zeropeq, entãoA=2 plog2A=pq p q ,Aq=2p. Portanto, temos queA=2rpor decomposição primária. Além dissoArq=2p, para que uma dadaUmpodemos escolherq=1ep=rpara provarlog2Umé racional.A=2pq Aq=2p A=2r Arq=2p A q=1 p=r log2A
Só precisamos mostrar que o nunca é transcendental. Isso se segue do teorema de Gelfond-Schneider , para uma formulação equivalente (como pode ser encontrada na página da Wiki) é "se α e γ são números algébricos diferentes de zero e tomamos qualquer logaritmo diferente de zero de α , então ( log γ ) / ( log α ) = log α γ é racional ou transcendental. " Também é fácil de verificar tomando o inverso do teorema e definindo α β = γ e, portanto, βlog2A α γ α (logγ)/(logα)=logαγ αβ=γ .β=logαγ
Por fim, considere o que acontece quando tentamos o algoritmo de programação dinâmica do SS no SP. Como usamos produtos em vez de somas, os números envolvidos aumentam enormemente, e a matemática arbitrária de precisão necessária de repente se torna um fator no tempo de execução. É por isso que o algoritmo não pode resolver instâncias de SP rapidamente, mesmo que os números estejam unários.
fonte
The literal explanation is that Subset Product problem is NP-complete by a reduction from strongly NP-complete problem such as exact cover by 3-sets. In such "strong" reduction, the input integers are bounded by some polynomial function in the number of integers in the resulting instance of Subset Product problem.
Such a "strong" reduction is impossible from any strongly NP-complete problem to Subset Sum Problem unlessP=NP . We have polynomial-time dynamic programming algorithm for solving Subset Sum problem if input integers are bounded by a polynomial.
fonte