Requisitos de soma de subconjuntos

7

Considere o seguinte problema.

Dado um conjunto de números inteiros, uma função e , decida se há tal que .Sf:ZZkZXSf(xXx)=k

Isso ainda é considerado um problema de soma de subconjuntos ?

Por exemplo, dado

S={7,3,2,5,8}

e , encontre um subconjunto tal que para . Nesse caso, uma solução é .k=0Xf(xXx)=0f(y)=3+yX={3,2,8}

Caracteres
fonte
Não é sem perda de generalidade? k=0
Jeffe
@ Jeff Parece que sim. Para e , existe um equivalente com . fk0fk=0
precisa saber é o seguinte
Quando exatamente você quer dizer com "Isso ainda é considerado um problema de soma de subconjuntos"? Você está perguntando se pode chamar uma instância de um problema desse tipo (isto é, dado um ) como 'uma variante da soma do subconjunto'? f
Aryabhata

Respostas:

7

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.ff(x)=xf(x)=0O(1)truef

Veja abaixo um zoológico de mini-complexidade correspondente a diferentes opções de :f

  • para , o problema é ( retorne verdadeiro se ).f(x)=cO(1)c=0
  • para para a e caso contrário, o problema é ( pesquisa linear para qualquer número maior do que 0 )f(x)=0x0f(x)=1O(n)
  • para para , , caso contrário, o problema não será maior que ) ( classifique os itens no conjunto em ordem decrescente e veja se algum prefixo corresponde a uma solução funcional )f(x)=0xcc>0f(x)=1O(nlogn
  • para , o problema é tão difícil quanto a soma do subconjunto (em um sentido informal, e eu não forneço uma construção para demonstrar a redução da soma do subconjunto para isso ... se eu estiver errado sobre este, por favor me avise!)f(x)=ax+b
  • para se a máquina de Turing codificada por pára a representação binária 's quando administrado a representação binária do como entrada (em alternativa, quando for dada a fita vazia como entrada, e tipos semelhantes de problemas de paragem), e caso contrário, o problema é indecidível ( uma solução para o problema para este pode resolver o problema de parada )f(x)=0xxf(x)=1f

Alguém viu algo mais divertido?

Patrick87
fonte
1) "o problema é equivalente à soma do subconjunto" - você quer dizer isso literalmente ou "tão difícil quanto"? 2) No último marcador, você deve dar como entrada na TM; como está, você resolve algum problema de parada, mas não o canônico. x
Raphael
1) Sim, quero dizer "tão duro quanto", em uma espécie de sentido informal. É claro que não forneço uma construção para isso, mas parece estar certo ... é claro, já me surpreendi antes, e isso pode estar errado. Edição para deixar isso claro. 2) Certo, eu debati a princípio se deveria fazer isso ou não, mas ouvir você sugerir que é melhor assim é o suficiente para mim.
precisa saber é o seguinte
`Tão difícil quanto 'significa que o problema é NP-Completo. Isso tornaria uma redução da soma do subconjunto ou do 3-CNF SAT? Existe uma prova que mostra a redutibilidade de um subconjunto neste caso especial de ter uma equação cujos valores são inteiros e cuja solução é 0?
Char
@ Patrick87 sua segunda bala está a par de onde minha pergunta está me levando. Você pode expandir essa parte para discutir detalhadamente sua NP-Completeness?
6123 Char
@Char Subset-sum é um caso especial de (seja a = 1, b = 0). Para ver a outra redução, resolva depois de dividir todos os elementos definidos por a (o problema é invariável à escala). Como outros já apontaram, já é bem sabido que o problema com é "tão difícil quanto" a soma do subconjunto canônico (ou seja, onde ). f(x)=ax+bf(x)=x+b/af(x)=x+cf(x)=x
precisa saber é o seguinte
6

Você pode obter problemas difíceis arbitrários, dependendo do seu .f

Seja um idioma. Defina seguinte maneira: Af

f(x)={0xA1o.w.

Considere definir . Há um vazio não subconjunto r sse .S={x}XSf(ΣxXx)=0xA

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 adequadoffgyRange(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(ΣxXx)=ySmSx=ΣxSx

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)xS}NP-hard(S,k)f1SS(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

Kaveh
fonte
se arbitrário, como determino se minha função produzirá uma complexidade NP-hard? A linearidade? Você pode obter uma prova disso? Além disso, o que você quer dizer 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.
7123 Char
Supus na minha resposta que é uma função fixa do priorado. Se você deseja que faça parte da entrada, é necessário definir como é fornecido primeiro. Digamos que seja dado como uma sequência finita, que é o código de uma máquina de Turing que a computa, então você não pode. Você deve fazer uma pergunta separada se quiser saber por que a complexidade de uma determinada máquina de Turing não é um problema decidível. ff
Kaveh
"Você pode obter uma prova disso?" Eu não entendo o que você quer dizer.
Kaveh
"Por outro lado" ainda é sobre o tempo polinomial , a diferença é que está dando um limite superior à complexidade do problema. f
Kaveh
Se é uma função constante, o problema é trivial, pois, independentemente do que você selecionar, será o mesmo. "o problema de soma de subconjuntos não é constante na natureza? 0 ou 1?" novamente, eu não entendo o que você quer dizer. fXf(ΣxXx)
Kaveh
0

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 ).0f1(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.ff1(0)f(y)=0

Tocou.
fonte
O problema aqui é que você está procurando um número x = 3 para f (x) igual a 0, mas você não sabe que é o valor necessário e, em vez de resolver a equação, usa uma soma de subconjunto para encontrar o valor por testando para ver se a função retorna 0.
Char
2
Você deve editar a pergunta para esclarecer esse ponto. Como dito, tudo depende de . Se você não "sabe" (mas só tem um acesso caixa-preta para ele, a resposta é diferente (como demonstrado por @ patrick87)f
Ran G.
Você sabe , você não conhece . Você pode sugerir uma reescrita para a pergunta. Tenho a desvantagem de saber o que eu quis dizer e acho difícil reformular a pergunta para esclarecer mais. O que ainda não está claro para quem está lendo? fx
Char
Não sei se entendi completamente o que você está procurando. Se você conhece , (supondo que seja simples), por que não pode invertê-lo para encontrar sua raiz (o valor x que faz e, em seguida, resolve a soma do subconjunto com esse valor como destino?ff(x)=0
Postado por
11
@Tocou. Funções simples não são necessariamente simples de inverter. Veja toda a criptografia de chave pública!
jeffe