Um problema de partição no qual alguns números podem ser cortados


8

No padrão problema partição , que são dados alguns números cuja soma é 2s e tem de decidir se pode ser dividida em duas subconjunto cuja soma é s . É conhecido por ser NP-difícil.

No entanto, suponha que tenhamos permissão para designar um dos números como um "número flexível" que pode ser dividido em um número arbitrário de peças, onde peças diferentes podem ser colocadas em subconjuntos diferentes. Então o problema se torna fácil: basta organizar todos os números em uma linha em uma ordem arbitrária e cortar a linha em duas sub-linhas com a mesma soma.

PERGUNTA: Suponha que recebamos alguns números cuja soma seja 3s e tenhamos que decidir se eles podem ser particionados em três subconjuntos cuja soma é s , enquanto usamos no máximo um número flexível. Qual é a complexidade desse problema?

  • Se pudermos usar dois números flexíveis, o problema será novamente fácil - podemos resolvê-lo organizando os números em uma linha como acima.
  • Se for permitido usar zero números flexíveis, o problema é obviamente difícil - é pelo menos tão difícil quanto o problema de particionar em dois subconjuntos.
  • Se tivermos permissão para usar um número flexível, meu palpite é que o problema ainda deve ser difícil e, de alguma forma, podemos reduzi-lo a partir do problema de partição padrão, mas não consegui encontrar a redução correta. Então, é fácil ou difícil?

Outra pergunta: caso o problema seja realmente NP-difícil, ele pode ser resolvido em tempo pseudo-polinomial como o problema da partição de dois subconjuntos?


1
Uma parte desse problema é encontrar um subconjunto cuja soma é um terço da soma de todo o conjunto. No entanto, não consigo encontrar as referências apropriadas dizendo que esse problema restrito de soma de subconjuntos é NP-difícil.
John Dvorak

É equivalente a isso, na verdade, já que o restante é bipartir os dois terços com um corte.
John Dvorak

@JohnDvorak, se pudermos resolver o problema da soma dos subconjuntos, podemos resolver o problema na pergunta, mas o oposto não é verdadeiro: podemos ter uma solução para o problema em questão, em que um número é cortado em três frações e cada subconjunto contém uma fração. Esta solução não resolve o problema da soma de subconjuntos.
Erel Segal-Halevi

por isso não postei uma resposta. Estou convencido de que o problema da partição 1: 2 ainda está np-completo (e, geralmente, o problema da partição para qualquer proporção fixa), mas não tenho nenhuma prova disso. Mas se é realmente NP-difícil, então é a partição de três vias com um problema de corte.
John Dvorak

1
Atualizei a formulação do problema para que fique claro que um número cortável pode ser cortado em vários pedaços. (Quando li pela primeira vez o problema, eu pensei que você só estão autorizados a cortar um número uma vez.)
Gamow

Respostas:


5

O maior número é o número flexível

Eu afirmo que, para qualquer instância do seu problema, se a instância for solucionável (é possível particionar os números usando um número flexível), é possível resolver a instância usando o maior número como o único número flexível. É fácil provar: qualquer solução pode ser modificada em uma solução com o maior número como o número flexível; basta colocar o número que atualmente é o número flexível na partição que contém o maior número e dividir o maior número entre as partes da partição.

Problema de embalagem

Aqui está um problema que chamarei de problema de embalagem:

A entrada consiste em uma lista de números positivos a1,a2,,ak um número final tal que ai para todos osi . Definirs=13(+i=1kai) . Em seguida, o problema é o de dividir a lista deai s em três partes de tal modo que cada parte tem soma na maioria doss.

Eu afirmo que o problema de embalagem com entradas a1,,ak e é equivalente ao seu problema com a lista de entrada a1,,ak, . Se é possível para embalar os números a1,,ak em três grupos cada um soma, no máximo, s então você pode usar como um número suave para completar cada uma das somas a exatamente s ; assim, você tem uma partição de a1,,ak, em três grupos de somas usando um número macio. Se, por outro lado,a1,,ak, pode ser dividida em três grupos de somas utilizando um número suave, em seguida, a lista pode ser dividida em três grupos de somas usando como o número de moles (com o resultado de a seção anterior). Neste caso, o agrupamento do ai s em três partes satisfaz a condição de que cada parte tem soma na maioria dos s .

O problema de embalagem sem números pequenos

Digamos que uma instância do problema de empacotamento "não tenha números pequenos" se, para cada i ,ai>2 . Eu afirmo que você pode reduzir o problema de embalagem ao problema de embalagem sem números pequenos.

Suponha que na embalagem instância problema (a1,,ak), alguns ai tenhamai2 . WLOG suponhaaké esteai. Então reivindico a instância do problema de empacotamento(a1,,ak1),+ak é equivalente à instância original. Observe que o valors permanece o mesmo nos dois casos.

Certamente, se você pode embalar os números a1,,ak em três grupos, com cada grupo tendo soma na maioria das s , em seguida, você pode embalar os números a1,,ak1 em três grupos, com cada grupo tendo soma, no máximo,s .

Por outro lado, suponha que você possa agrupar os números a1,,ak1 em três grupos, com cada grupo tendo soma no máximo s . Para cada um dos três grupos, considere o valor s menos a soma dos elementos no grupo. Chame esses valores e1,e2,e3 ; aqui ei é a quantidade de "espaço vazio" no grupo i . Sabemos que e1+e2+e3 , o espaço total vazio, é igual a 3si=1k1ai (espaço total3s menos espaço usadoi=1k1ai ). Mas3si=1k1ai=ak+ pela definição des . Assim, os três grupos têmak+ espaço vazio de k + no total. Então, desde queak<2 , sabemos que o espaço vazio total é superior a3ak. Pelo princípio do buraco do pombo, pelo menos um dos grupos temakou mais espaço vazio. Assim, pode-se adicionar elementoakde um dos grupos e acabar com uma embalagem dos números dea1,,akem três grupos, com cada grupo soma tendo no máximos.

Assim, para resolver seu problema, basta resolver apenas o problema de empacotamento sem um número pequeno.

Lema 1

Declaração do lema:

Suponha-se que podem dividir a1,,ak em grupos de 1 e 2 de tal forma que o grupo 2 tem um número par de elementos e a soma dos elementos do grupo 1 está no intervalo[s2,s] . Então é possível dividir ainda mais o grupo 2 em dois subgrupos 2a e 2b, cada um dos quais com soma no máximos. Observe que os grupos 1, 2a e 2b são uma solução da instância do problema de empacotamento.

Aqui está uma prova.

Atribua provisoriamente metade dos elementos do grupo 2 ao subgrupo 2a e a outra metade ao subgrupo 2b. Crie uma correspondência entre os elementos dos dois subgrupos. Troque esses pares entre os dois grupos, um par de cada vez. Se houver 2n elementos no grupo 2, esse processo passará exatamente por n+1 partições possíveis do grupo 2 nos subgrupos 2a e 2b. Afirmo que pelo menos uma dessas partições possui ambos os subgrupos com soma menor ques .

Seja S2a eS2b as somas dos dois subgrupos (permitimos que esses valores mudem conforme os grupos mudam).

Em cada etapa do processo acima, o grupo 2a ganha um elemento e perde outro. Como cada elemento tem valor entre 2 e, podemos concluir que em cada etapa do processo acima,S2a muda no máximo 2 .

Além disso, o valor final de S2a é igual ao valor inicial de S2b pois ao final do processo os grupos trocaram completamente.

Seja A o valor médio de S2a e S2b . Observe que isso é constante conforme os grupos mudam. Sabemos que os valores iniciais e finais de S2a média para A (uma vez que os valores iniciais e finais de S2a igualar os valores iniciais de S2a e S2b ). Assim, A deve estar entre os valores inicial e final de S2a . À medida que mudamos de grupo, o valor de S2atoma etapas de tamanho no máximo 2 de um lado deApara o outro. A partir disso, podemos concluir que, em algum momento, o valor deS2adeve estar dentro da metade do tamanho máximo da etapa (4 ) deA. ComoS2bsempre tem a mesma distância deAqueS2a, podemos concluir que, em algum momento, ambas as somasS2aeS2bestão dentro de4 deA.

3s(S2a+S2b) é a soma dos elementos do grupo 1; assim,3s(S2a+S2b)s2 (pela condição na soma do grupo 1). Reorganizando, temos que(S2a+S2b)2s2 . Portanto, a média deS2aeS2bé no máximos4 . Então, no momento em queS2aeS2bestiverem dentro4 deA , vemos que ambos são no máximo s conforme desejado.

Caso 1: k=3n

Soma o n menor ai também o n maiorai s.

Se o n menor ai s soma mais que s , nenhum grupo pode ter n ou mais elementos (como qualquer opção de n elementos irá resultar na soma sendo muito grande). Mas o princípio do buraco do pombo nos diz que pelo menos um grupo tem pelo menos n elementos. Portanto, neste caso, não há solução para a instância do problema de empacotamento.

Se n maior ai s soma no máximo s , então cada escolha de n elementos tem uma soma no máximos . Nesse caso, simplesmente particionar os elementos em três grupos de tamanho igual resolve a instância do problema de empacotamento.

O único caso restante é que os menores n elementos somam no máximo s e os maiores n elementos somam mais que s . Como no lema, podemos fazer a transição lenta entre esses dois conjuntos: comece com um grupo inicializado com os menores n elementos e troque elementos até que o grupo tenha os maiores n elementos. Cada etapa move a soma do grupo no máximo 2 (pela mesma lógica que na prova do lema) e a soma cruza o valorsem algum momento deste processo. Portanto, imediatamente antes ou imediatamente após cruzar o valors, a soma é menor quesmas menor no máximo2 . Em outras palavras, em algum momento desse processo, o grupo possui uma soma no intervalo[s2,s]. Tome esse grupo como grupo 1 e o restante2n elementos n como grupo 2. O lema se aplica, permitindo encontrar uma solução para a instância do problema de empacotamento.

Caso 2: k=3n+1

Soma n+1 menor ai também n+1 maior ai s.

Se o n+1 menor ai soma da mais do que s , em seguida, nenhum grupo pode ter n+1 ou mais elementos (como qualquer escolha de n+1 elementos irá resultar na soma de ser muito grande). Mas o princípio do buraco do pombo nos diz que pelo menos um grupo tem pelo menos n+1 elementos. Portanto, neste caso, não há solução para a instância do problema de empacotamento.

Se n+1 maior ai s soma no máximo s , então toda escolha de n+1 elementos tem uma soma no máximo s . Nesse caso, simplesmente particionar os elementos em três grupos de tamanho n , n e n+1 resolve a instância do problema de empacotamento.

O único caso restante é que os menores elementos n+1 somam no máximo s e os maiores elementos n+1 somam mais que s . Como no caso anterior, podemos fazer a transição lenta entre esses dois conjuntos: comece com um grupo inicializado com os menores elementos n+1 e troque elementos até que o grupo tenha os maiores elementos n+1 . Cada etapa move a soma do grupo no máximo 2 (pela mesma lógica que na prova do lema) e a soma cruza o valorsem algum momento deste processo. Portanto, imediatamente antes ou imediatamente após cruzar o valors, a soma é menor quesmas menor no máximo2 . Em outras palavras, em algum momento desse processo, o grupo possui uma soma no intervalo[s2,s]. Tome esse grupo como grupo 1 e o restante2n elementos n como grupo 2. O lema se aplica, permitindo encontrar uma solução para a instância do problema de empacotamento.

Caso 3: k=3n+2 primeira subcaça fácil

Soma o n menor ai o n maior ai s.

Se um dos valores estiver no intervalo [s2,s], aplique imediatamente o lema com a escolha denelementos como grupo 1 e os2n+2elementosrestantescomo grupo 2. Isso nos permite encontrar uma solução para a instância do problema de empacotamento.

Se n menor ai s soma menos que s2 enmaioraisoma s para mais desentão podemos começar com onmenorais e elementos de swap até que acabar com onmaiorais. A cada passo, a soma se move no máximo2 , portanto, em algum momento deste processo, temos um grupo denelementos cuja soma está no intervalo[s2,s]. Tome esse grupo como grupo 1 e os restantes2n+2elementos como grupo 2. O lema se aplica, permitindo-nos encontrar uma solução para a instância do problema de empacotamento.

Se o n menor ai s soma a mais de s , então nenhum grupo pode ter n ou mais elementos (como qualquer escolha de n elementos irá resultar na soma sendo muito grande). Mas o princípio do buraco do pombo nos diz que pelo menos um grupo tem pelo menos n+1 elementos. Portanto, neste caso, não há solução para a instância do problema de empacotamento.

O caso único remanescente é que tanto o n menor e n maior ai s add para menos de s2 .

Caso 3: k=3n+2 segundos em subcasca fácil

Resumindo o n+2 menor ai s e a n+2 maior ai s.

Se um dos valores estiver no intervalo [s2,s], aplique imediatamente o lema com a escolha den+2elementos como grupo 1 e os2nelementosrestantescomo grupo 2. Isso nos permite encontrar uma solução para a instância do problema de empacotamento.

Se n+2 menor ai s soma menos que s2 en+2maioraisoma s para mais desentão podemos começar com on+2menorais e elementos de swap até que acabar com on+2maiorais. A cada passo, a soma se move no máximo2 , portanto, em algum momento deste processo, temos um grupo den+2elementos cuja soma está no intervalo[s2,s]. Tome esse grupo como grupo 1 e os2n elementosrestantes n como grupo 2. O lema se aplica, permitindo encontrar uma solução para a instância do problema de empacotamento.

Se n+2 maior ai s soma no máximo s , então toda escolha de n+2 elementos tem uma soma no máximo s . Nesse caso, simplesmente particionar os elementos em três grupos de tamanho n , n+1 e n+1 resolve a instância do problema de empacotamento.

O único caso restante é que n+2 menor e n+2 maior ai s são adicionados a mais de s .

Caso 3: k=3n+2 subcasa rígida

Suponha que nenhuma das duas subcasas acima tenha manipulado a instância. Então sabemos o seguinte:

  • tanto o n menor e n maior ai add s para menos de s2 .
  • tanto o n+2 menores e n+2 maior ai s add para mais de s .

Desde o n+2 menor ai s add para mais de s , nenhum grupo pode ter n+2 ou mais elementos. A única maneira de conseguir isso é se os grupos tiverem tamanhos n , n+1 e n+1 .

Note-se que desde o n maior ai s add para menos de s2 , não importa quais elementos estão no grupo de tamanhon: esse grupo terá soma menor quesqualquer maneira. Claramente, podemos modificar qualquer solução trocando onmaiorais contra o grupo de tamanhon. Esses swaps apenas diminuem as somas dos outros dois grupos; portanto, existe uma solução para a instância do problema de empacotamento, se e somente se houver uma solução na qual onmaiorai s forma um dos grupos.

Assim, a tarefa em mãos é simplesmente a seguinte: é possível dividir o 2n+2 menor ai s em dois grupos de tamanho n+1 de tal modo que cada um desses dois grupos tem soma na maioria dos s . WLOG supor que o ai s estão em ordem crescente para que os 2n+2 menores ai s são a1,,a2n+2

Vamos v ser a média do n maior ai s. Seja xi=vai para cada i . Então 3s=+i=13n+2ai=+i=12n+2ai+i=2n+23n+2ai=+i=12n+2(vxi)+nv=+(3n+2)vi=12n+2(xi)=(v)+(3n+3)vi=12n+2(xi).

Então s=(n+1)v+v313i=12n+2(xi) .

Se nós escolhemos um conjunto I de n+1 índices, então a soma de a ai s com iI é igual a iIai=iIvxi=(n+1)viIxi . Um conjunto de índices I é uma opção válida para um dos grupos, desde que essa soma seja no máximo s. Em outras palavras, usando a definição alternativa de s derivada acima, a condição na qual estamos interessados ​​é iIxi13i=12n+2(xi)v3 . Obviamente, as restantesn+1índicesI={1,,2n+2}Itambém deve satisfazer esta condição:iIxi13i=12n+2(xi)v3 . DesdeiIxi=i=12n+2xiiIxi, podemos escrever a segunda condição comoiIxi23i=12n+2(xi)+v3 .

Assim, reformulamos esse subproblema usando uma alternativa equivalente: estamos tentando escolher um conjunto I de n+1 índices entre {1,,2n+2} modo que 23i=12n+2(xi)+v3iIxi13i=12n+2(xi)v3 .

Note-se que v (e, por conseguinte, v0 ) uma vez que v é a média de cerca de ai s e é um limite superior em toda ai s. Deixe X=i=12n+2(xi) . Nossa condição acima pode ser reescrita da seguinte maneira: escolha um conjunto I de n+1 índices entre {1,,2n+2} de tal modo queiIxi está no intervalo[cX,(1c)X] em quec=13v3X13 .

Suponha que para alguns j , xj tenha valor pelo menos X3 . Nesse caso,Iconsistirei no índiceje também nosíndicesn1correspondentes aos menoresxis. Se essesxisão somados no máximo(1c)Xentão essa opção deIsatisfaz a restrição acima: a somaiIxié pelo menosxjX3=13XcXe, no máximo,(1c)X. Portanto, esse conjunto de índicesIpode ser usado para selecionar um dos grupos de tamanhon+1em uma solução para a instância do problema de empacotamento. Por outro lado, se essesxisão adicionados a mais de(1c)X, a instância não pode ser resolvida: uma das duas metades incluiráxje a soma dessa metade sempre será maior que(1c)X(já que era mais do que isso, mesmo quando colocamos os menores elementos com xj ).

Assim, lidamos com o caso de que alguns xj têm valor pelo menos X3 . O caso restante é que todoxitem valor no máximoX3 . Em seguida, atribua osxis a dois grupos, 1 e 2, arbitrariamente. Crie uma correspondência dos elementos dos dois grupos e troque esses pares, um par de cada vez. Ao longo deste processo, a soma dos elementos do grupo 1 passará da soma inicial para a soma inicial dos elementos do grupo 2. Em outras palavras, a soma do grupo 1 cruzará o valor médioX2 . Cada etapa deste processo envolve o grupo 1 perdendo umxie ganhando um; já que osxis têm valor no máximoX3 , um par dexis difere em no máximoX3 e, portanto, cada passo move a soma do grupo 1 no máximoX3 . Portanto, haverá algum ponto no processo quando a soma do grupo 1 estiver dentro da metade do tamanho máximo da etapa da média. Assim, em algum momento, a soma do grupo 1 ficará dentro deX2±X6 . Mas este é o intervalo[13X,23X], que é um subintervalo de[cX,(1c)X]. Assim, em algum momento durante esse processo, o grupo 1 na ocasião satisfará a condição desejada. Podemos usar esse grupo dexis para seleccionar um grupo correspondente deais; estesais forma um dos dois grupos de tamanhon+1necessária para resolver o problema de embalagem exemplo.

Conclusão

O estudo de caso exaustivo acima pode ser usado como um algoritmo para particionar uma lista em três grupos da mesma soma usando um número flexível. O estudo de caso também identificará quando isso é impossível. O tempo de execução desse algoritmo é polinomial.


Obrigado! A prova do lema 1 pode ser reduzida: encomende os elementos do grupo 2 aumentando a ordem. Seja o grupo 2a os elementos indexados ímpares e o grupo 2b os elementos indexados pares. Cada elemento em 2a é menor que o próximo elemento que está em 2b, então . Por outro lado, se removermos o menor elemento de 2a e o maior de 2b, a soma dos elementos restantes em 2a é pelo menos a soma dos elementos restantes em 2b. Então S 2 b - S 2 a o maior menos o menor elemento = l / 2 . Pela suposição, S 2 b + SS2bS2aS2bS2al/2. Somando as desigualdades, obtemos S 2 bs. S2b+S2a2sl/2S2bs
Erel Segal-Halevi

Pergunta: Você mencionou um sub-problema: "é possível particionar o menor um i -s em dois grupos de tamanho n + 1 tal que cada um desses dois grupos tem soma na maioria dos s ?". Por que esse problema não é tão difícil quanto o problema de PARTIÇÃO? 2n+2ain+1s
Erel Segal-Halevi

Você está certo, minha prova do Lema 1 não é a mais simples possível. Estou com um pouco de preguiça de colocar as edições (principalmente porque outras partes da prova fazem referência às técnicas usadas na prova). Quanto ao subproblema, a razão pela qual não é tão difícil quanto a PARTIÇÃO é que você realmente não precisa resolver esse subproblema com total generalidade: o valor de não é arbitrário. A fim de se enquadram nessa caso, há restrições adicionais específicas sobre s e no um i s que espera obrigação. Se essas restrições estivessem ausentes, você estaria certo: o problema seria tão difícil quanto a PARTIÇÃO. ssai
Mikhail Rudoy 5/02/19

Muito obrigado pela solução clara e detalhada.
Erel Segal-Halevi

Oi Mikhail, estamos trabalhando em um documento em que esse resultado seja útil. Você gostaria de participar? Se sim, por favor escreva-me um email.
Erel Segal-Halevi

3

Esta resposta não resolve a questão. Ele apenas resolve o seguinte problema auxiliar formulado por @JohnDvorak nos comentários (particionando um conjunto na proporção de 1: 2):

Problema auxiliar:
Instância: racionais positivos a1,,am com i=1mai=3A .
Pergunta: Será que não existe um índice conjunto I{1,,n} com iIai=A ?

  • Tome um exemplo da PARTIÇÃO clássica (racionais b1,,bn com a soma 2B , você pode dividi-los em dois grupos com a soma B ).
  • Tome b1,,bn junto com os quatro números 5B,5B,5B,7B para criar uma instância do problema auxiliar. A soma de todos os n+4 números é 24B , de modo que A=8B .
  • Dividir os números n+4 em um grupo com a soma A=8B e um grupo com a soma 2A=16B é possível se e somente se a instância PARTITION tiver respondido YES.

Portanto, o problema auxiliar de @ JohnDvorak é NP-complete


Olá Gamow, estamos trabalhando em um artigo em que esse resultado possa ser útil. Você gostaria de participar? Se sim, por favor escreva-me um email.
Erel Segal-Halevi

3

Editar: o resultado está incorreto; veja a discussão no final.

Inspirado na resposta de Mikhail Rudoy, ​​podemos generalizar para particionar em k partes com soma igual. O problema é tempo polinomial solucionável para cada constante k .

A entrada é a1,,an tal que an é o maior número. As observações de Mikhail são, wlog,

  • o número flexível é an
  • ai>ank1 para cadai

WLOG, assumir que a soma de a1,,an1 é 1 (ou seja, 1=ksan ). Observe que an1n1 , entãoai>1(k1)(n1)>1kn para cadai. O problema é equivalente a particionar os númerosa1,,an1emsubconjuntoskmodo que a soma de cada subconjunto seja no máximos:=1+ank .

Consideramos uma restrição do problema da mochila múltipla . Defina o problema da mochila k como uma instância do problema da mochila múltipla com k mochila da mesma capacidade, em que o valor de cada item é igual ao peso do item.

Deixe a entrada para o k problema -knapsack ser a1,,an1 , e cada mochila tem capacidade s . A afirmação a seguir é clara.

Reivindicação : A (11kn)algoritmo de aproximação para oproblema da mochilakretorna1, se e somente se todos os númerosa1,,an1puderem ser empacotados nak mochilas.

Pela reivindicação acima, basta encontrar um (11kn)k

kk

D[b1,,bk,i]a1,,aib1,,bkD[b1,,bk,i+1]=max(maxj(D[b1,,bjai+1,bk,i])+ai+1,D[b1,,bk,i])O(skkn)

(11kn)kk

k


Encontrei este artigo: epubs.siam.org/doi/abs/10.1137/S0097539700382820, que mostra um PTAS para mochila múltipla. Como você obtém um FPTAS? (você quis dizer que há uma FPTAS para o caso especial em que os valores são iguais aos pesos?)
Erel Segal-Halevi

k

Oi Chao, estamos trabalhando em um artigo em que esse resultado seja útil. Você gostaria de participar? Se sim, por favor escreva-me um email.
Erel Segal-Halevi
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.