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(ℓ+∑ki=1ai) . 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 uma1, … , Umk, ℓ . Se é possível para embalar os números uma1, … , Umk 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 uma1, … , Umk, ℓ em três grupos de somas usando um número macio. Se, por outro lado,uma1, … , Umk, ℓ 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 umaEu 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 Eu ,umaEu> ℓ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, … , Umk) , ℓ alguns umaEu tenhamumaEu≤ ℓ2 . WLOG suponhaumaké esteumaEu. Então reivindico a instância do problema de empacotamento( a1, … , Umk - 1) , ℓ + ak é equivalente à instância original. Observe que o valors permanece o mesmo nos dois casos.
Certamente, se você pode embalar os números uma1, … , Umk em três grupos, com cada grupo tendo soma na maioria das s , em seguida, você pode embalar os números uma1, … , Umk - 1 em três grupos, com cada grupo tendo soma, no máximo,s .
Por outro lado, suponha que você possa agrupar os números uma1, … , Umk - 1 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 eEu é a quantidade de "espaço vazio" no grupo Eu . Sabemos que e1+ e2+ e3 , o espaço total vazio, é igual a 3 s - ∑k - 1i = 1umaEu (espaço total3 s menos espaço usado∑k - 1i = 1umaEu ). Mas3 s - ∑k - 1i = 1umaEu= ak+ ℓ pela definição des . Assim, os três grupos têmumak+ ℓ espaço vazio de k + ℓ no total. Então, desde queumak< ℓ2 , sabemos que o espaço vazio total é superior a3 ak. Pelo princípio do buraco do pombo, pelo menos um dos grupos temumakou mais espaço vazio. Assim, pode-se adicionar elementoumakde um dos grupos e acabar com uma embalagem dos números deuma1, … , Umkem 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 uma1, … , Umk 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[ s - ℓ2, 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 2 n 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 S2 a eS2 b 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,S2 a muda no máximo ℓ2 .
Além disso, o valor final de S2 a é igual ao valor inicial de S2 b pois ao final do processo os grupos trocaram completamente.
Seja UMA o valor médio de S2 a e S2 b . Observe que isso é constante conforme os grupos mudam. Sabemos que os valores iniciais e finais de S2 a média para UMA (uma vez que os valores iniciais e finais de S2 a igualar os valores iniciais de S2 a e S2 b ). Assim, UMA deve estar entre os valores inicial e final de S2 a . À medida que mudamos de grupo, o valor de S2 atoma etapas de tamanho no máximo ℓ2 de um lado deUMApara o outro. A partir disso, podemos concluir que, em algum momento, o valor deS2 adeve estar dentro da metade do tamanho máximo da etapa (ℓ4 ) deUMA. ComoS2 bsempre tem a mesma distância deUMAqueS2 a, podemos concluir que, em algum momento, ambas as somasS2 aeS2 bestão dentro deℓ4 deUMA.
3 s - ℓ - ( S2 a+ S2 b) é a soma dos elementos do grupo 1; assim,3 s - ℓ - ( S2 a+ S2 b) ≥ s - ℓ2 (pela condição na soma do grupo 1). Reorganizando, temos que( S2 a+ S2 b) ≤ 2 s - ℓ2 . Portanto, a média deS2 aeS2 bé no máximos - ℓ4 . Então, no momento em queS2 aeS2 bestiverem dentroℓ4 deUMA , vemos que ambos são no máximo s conforme desejado.
Caso 1: k = 3 n
Soma o n menor umaEu também o n maiorumaEu 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áximoℓ2 . Em outras palavras, em algum momento desse processo, o grupo possui uma soma no intervalo[s−ℓ2,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áximoℓ2 . Em outras palavras, em algum momento desse processo, o grupo possui uma soma no intervalo[s−ℓ2,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 [s−ℓ2,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 s−ℓ2 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áximoℓ2 , portanto, em algum momento deste processo, temos um grupo denelementos cuja soma está no intervalo[s−ℓ2,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 s−ℓ2 .
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 [s−ℓ2,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 s−ℓ2 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áximoℓ2 , portanto, em algum momento deste processo, temos um grupo den+2elementos cuja soma está no intervalo[s−ℓ2,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 s−ℓ2 .
- 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 s−ℓ2 , 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=v−ai para cada i . Então 3s=ℓ+∑3n+2i=1ai=ℓ+∑2n+2i=1ai+∑3n+2i=2n+2ai=ℓ+∑2n+2i=1(v−xi)+nv=ℓ+(3n+2)v−∑2n+2i=1(xi)=(ℓ−v)+(3n+3)v−∑2n+2i=1(xi).
Então s=(n+1)v+ℓ−v3−13∑2n+2i=1(xi) .
Se nós escolhemos um conjunto I de n+1 índices, então a soma de a ai s com i∈I é igual a ∑i∈Iai=∑i∈Iv−xi=(n+1)v−∑i∈Ixi . 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 é ∑i∈Ixi≥13∑2n+2i=1(xi)−ℓ−v3 . Obviamente, as restantesn+1índicesI′={1,…,2n+2}∖Itambém deve satisfazer esta condição:∑i∈I′xi≥13∑2n+2i=1(xi)−ℓ−v3 . Desde∑i∈I′xi=∑2n+2i=1xi−∑i∈Ixi, podemos escrever a segunda condição como∑i∈Ixi≤23∑2n+2i=1(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 23∑2n+2i=1(xi)+ℓ−v3≥∑i∈Ixi≥13∑2n+2i=1(xi)−ℓ−v3 .
Note-se que ℓ≥v (e, por conseguinte, ℓ−v≥0 ) uma vez que v é a média de cerca de ai s e ℓ é um limite superior em toda ai s. Deixe X=∑2n+2i=1(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 que∑i∈Ixi está no intervalo[cX,(1−c)X] em quec=13−ℓ−v3X≤13 .
Suponha que para alguns j , xj tenha valor pelo menos X3 . Nesse caso,Iconsistirei no índiceje também nosíndicesn−1correspondentes aos menoresxis. Se essesxisão somados no máximo(1−c)Xentão essa opção deIsatisfaz a restrição acima: a soma∑i∈Ixié pelo menosxj≥X3=13X≥cXe, no máximo,(1−c)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(1−c)X, a instância não pode ser resolvida: uma das duas metades incluiráxje a soma dessa metade sempre será maior que(1−c)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,(1−c)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.