Considere o seguinte problema.
Dado um conjunto de números inteiros, uma função e , decida se há tal que .
Isso ainda é considerado um problema de soma de subconjuntos ?
Por exemplo, dado
e , encontre um subconjunto tal que para . Nesse caso, uma solução é .
complexity-theory
Caracteres
fonte
fonte
Respostas:
Depende da forma de . Se , então é idêntico à soma do subconjunto. Se , então é um problema trivial com uma solução : return . Você pode definir de outras maneiras para tornar a pergunta mais ou menos difícil também.f f(x)=x f(x)=0 O(1) true f
Veja abaixo um zoológico de mini-complexidade correspondente a diferentes opções de :f
Alguém viu algo mais divertido?
fonte
Você pode obter problemas difíceis arbitrários, dependendo do seu .f
Seja um idioma. Defina seguinte maneira:A f
Considere definir . Há um vazio não subconjunto r sse .S={x} X⊆S f(Σx∈Xx)=0 x∈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 adequadof f g y∈Range(g) x g(x)=y f(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.y 2i X f(Σx∈Xx)=y S m S x=Σx∈Sx
Por outro lado, se é um tempo polinomial calculável, o problema estará em .f NP
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−1 S S′ (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
fonte
on the other hand'? Your restricted complexity example uses polynomial time computability as your restriction, and then you suggest
com "por outro lado", mas continua falando sobre computabilidade de tempo polinomial? Além disso, em seu último parágrafo, fiquei confuso com o comentário "contanto que a função linear não seja constante", mas o problema da soma de subconjuntos não é constante por natureza? 0 ou 1? Obrigado pela resposta completa.Sim, este ainda é um problema de soma de subconjuntos , mas em vez de encontrar um subconjunto cuja soma é , você deve ter uma soma que seja igual a outra coisa (no seu exemplo, 3, em geral é , que pode ser um conjunto de números se for muitos para um ).0 f−1(0) f
Isso não muda muito a dificuldade do problema para o bijetivo , mas depende do número de pré-imagens que possui. Como já foi dito, se , o problema se torna trivial.f f−1(0) f(y)=0
fonte