Esta é uma questão muito interessante.
Primeiro, uma observação esclarecedora. Note-se que "limite superior do número de testemunhas" é não uma propriedade de um problema computacional em si, mas de um verificador específico usado para decidir um problema, apenas como um "limite superior ao número de estados" não seria um propriedade de um problema, mas de uma máquina de Turing que o decide. Portanto, dizer " problema N P com limite superior do número de soluções" não é muito preciso e, se P = N P , todo problema N P tem um verificador com qualquer número de soluções desejadas (incluindo zero e todas as seqüências possíveis) .NPNPP=NPNP
Portanto, temos que fazer uma definição, para responder à sua pergunta. Para , digamos que um problema N P L "tenha no máximo s ( n ) soluções" se, para alguma constante c, houver um verificador de tempo O ( n c ) V tal que, para cada comprimento de entrada n e para cada x ∈ L de comprimento n , existem distintos y 1 , … , y s ( ns:N→NNPLs(n)cO(nc)Vnx∈Ln de comprimento n cy1,…,ys(n)ncde modo que aceita para todos os i , e V ( x , y ) rejeita todos os outros y de comprimento nV(x,yi)iV(x,y)y .nc
Tudo o que acho que posso dizer no momento é o seguinte:
- Todo problema de eu conheço (definido por algum verificador natural) tem um óbvio correspondente # PNP#P versão contagem -completo (com o mesmo verificador).
- For any NP-complete problem defined with a verifier having at most poly(n) solutions (or even 2no(1) solutions) the corresponding counting version probably isn't #P-complete.
More details: Suppose L is NP-complete, with a verifier V that has at most O(nc) solutions. Then the natural counting "decision" version of L, which we define as
CountL(x):=the number of y such that V(x,y) accepts
FPNP[O(logn)]O(logn)NPxkNP: the witness, if it exists, is simply the number of yi's making V accept, which we know to be at most O(nc). Then we can binary search using this NP problem to compute the exact number of solutions to L.
Therefore, an NP-complete problem of this kind could not be extended to a #P-complete problem in the usual way, unless #P⊆FPNP[O(logn)]. This looks unlikely; the whole polynomial time hierarchy would basically collapse to PNP[O(logn)].
If you assume s(n)=2no(1) in the above, you would still get an unlikely consequence. You would show that #P can be computed in 2no(1) time with an NP oracle. That's more than enough to prove, for instance, that EXPNP≠PP and subsequently EXPNP⊄P/poly. Not that those separations are unlikely, but it seems unlikely they'd be proved by giving a subexp time NP-oracle algorithm for the Permanent.
By the way, I have said nothing too insightful here. There is almost certainly an argument like this in the literature.