Você pode obter problemas difíceis arbitrários, dependendo do seu .f
Seja um idioma. Defina seguinte maneira:
Af
f(x)={01x∈Ao.w.
Considere definir . Há um vazio não subconjunto r sse .S={x}X⊆Sf(Σx∈Xx)=0x∈A
Sem colocar um requisito de complexidade em você pode obter problemas de dificuldade arbitrária.f
Um caso interessante é quando é de complexidade restrita, por exemplo, tempo polinomial computável. Nesse caso, podemos usá-lo para inverter , para que os problemas possam ser tão difíceis quanto inverter uma função de tempo polinomial arbitrário (e supondo que haja geradores de números psuedo-aleatórios computáveis em tempo polinomial que são difíceis de inverter em tempo subexponencial, isso significa você não pode resolver o problema): seja uma função computável de tempo polinomial arbitrário. Suponha que recebemos e desejemos encontrar um st . Defina . Seja para grande adequadoffgy∈Range(g)xg(x)=yf(x)=g(x)S={0,1,2,4,8,…,2m}m(para garantir que uma pré-imagem de possa ser representada como a soma dos números no conjunto). Em cada conjunto, removeremos um número do conjunto e verificaremos se ainda existe um subconjunto st . Se a resposta for sim, sabemos que existe uma solução que não precisa desse número e, portanto, a removemos permanentemente deSe a resposta for não, sabemos que precisamos desse número para todas as soluções. Após etapas, teremos um conjunto que é uma solução e nenhum subconjunto é uma solução, para que possamos retornar como nossa resposta.y2iXf(Σx∈Xx)=ySmSx=Σx∈Sx
Por outro lado, se é um tempo polinomial calculável, o problema estará em .fNP
No caso especial em que a função é linear, uma vez que alterna com funções lineares, o problema é o mesmo que resolver a soma do subconjunto sobre . Desde que a função linear não seja constante, o problema será tão difícil quanto a soma do subconjunto, por exemplo, (se você quiser resolver a instância da soma do subconjunto , aplique para membros de para obter e use a versão modificada em para resolvê-lo).fΣf(S)={f(x)∣x∈S}NP-hard(S,k)f−1SS′(S′,k)
(Esse truque também funcionará para casos mais gerais, onde a função é computável em tempo polinomial e possui uma inversa que também é computável em tempo polinomial.)f