Minimize o componente máximo de uma soma de vetores

11

Gostaria de aprender algo sobre esse problema de otimização: Para determinados números inteiros não negativos , encontre uma função minimize a expressão fai,j,kf

maxkiai,f(i),k

Um exemplo usando uma formulação diferente pode ficar mais claro: você recebe um conjunto de conjuntos de vetores como

{
    {(3, 0, 0, 0, 0), (1, 0, 2, 0, 0)},
    {(0, 1, 0, 0, 0), (0, 0, 0, 1, 0)},
    {(0, 0, 0, 2, 0), (0, 1, 0, 1, 0)}
}

Escolha um vetor de cada conjunto, para que o componente máximo de sua soma seja mínimo. Por exemplo, você pode escolher

(1, 0, 2, 0, 0) + (0, 1, 0, 0, 0) + (0, 1, 0, 1, 0) = (1, 1, 2, 1, 0)

com o componente máximo igual a 2, o que é claramente ideal aqui.

Estou curioso para saber se este é um problema conhecido e quais métodos de solução aproximados específicos do problema estão disponíveis. Deve ser rápido e fácil de programar (sem solucionador de ILP , etc.). Nenhuma solução exata é necessária, pois é apenas uma aproximação do problema real.


Vejo que deveria ter adicionado alguns detalhes sobre as instâncias de problemas em que estou interessado:

  • i{0,1,,63} , ou seja, sempre existem 64 linhas (quando escritas como no exemplo acima).
  • j{0,1} , ou seja, existem apenas 2 vetores por linha.
  • Nk{0,1,,N1} que (o comprimento do vetor) está entre 10 e 1000.N

Além disso, em cada linha a soma dos elementos de todos os vetores é a mesma, ou seja,

i,j,j:kai,j,k=kai,j,k

e a soma dos elementos do vetor soma é menor que seu comprimento, ou seja,

kiai,f(i),k<N
maaartinus
fonte
4
Não é difícil reduzir o problema de 3 partições para o seu problema. Isso significa que seu problema é NP-completo, mesmo que os números sejam dados unários, e isso exclui uma das abordagens comuns para um algoritmo de aproximação.
Tsuyoshi Ito
Obrigado pelas correções e obrigado a @Tsuyoshi Ito pela compreensão. Se eu entendi direito, a restrição de dois vetores por linha (que esqueci de declarar) invalida a redução e pode facilitar o problema.
Maaartinus
Você está certo, a redução do problema de três partições em que eu estava pensando não funcionará se houver apenas dois vetores por linha.
Tsuyoshi Ito
Portanto, existem combinações para comparar? ji
21812 Jason Kleban
@ uosɐs: Para ser mais preciso, existem possíveis combinações, onde é o número de possibilidades de e é o número de possibilidades para . J = 2 j I = 64 iJI=264J=2jI=64i
Maaartinus

Respostas:

7

Redução de 3SAT para a versão de dois vectores: um dada fórmula, deixe variáveis de índice, , e cláusulas de índice. Seja o número de vezes que a variável aparece positivamente (se ) ou negativamente (se ) na cláusula . OPT é menor que se a fórmula for satisfatória (a seleção é óbvia).j { 0 , 1 } k a i , j , k i j = 0 j = 1 k 3ij{0,1}kai,j,kij=0j=1k3

Como eu atacaria esse problema: pesquisa em grandes bairros. Comece com qualquer solução. Escolha linhas aleatoriamente. Use força bruta para encontrar a melhor solução em que pode mudar apenas nessas linhas - muito viável para moderado, considerando que o tamanho do problema é de linhas. Repetir.f k 64rfk64

oi mods
fonte
1
Esta é uma redução bonita. Não sei ao certo por que não há nenhum voto positivo. Enfim, aqui está o meu +1.
Tsuyoshi Ito
1
Eu acho que você deveria elaborar um pouco mais sobre a redução. Em particular, você tem escondida bem, talvez muito bem, como faz o bijection um pouco difícil de ver. f
Raphael
7

Não podemos discutir a complexidade de um problema quando o tamanho do problema é fixo em uma constante, porque (a maior parte) a teoria da complexidade lida com o comportamento assintótico da complexidade do problema, pois o tamanho do problema tende ao infinito. Aqui, considero o número de linhas e a dimensão dos vetores como variáveis.

Então o problema é NP-completo, mesmo que os números na entrada sejam dados unários. Esta não é uma resposta para sua pergunta, porque você está perguntando sobre aproximação, mas é alguma coisa.

Defina o problema rigorosamente:

Instância : n pares de vetores a i , b im ( i ∈ {1,…, n }) e K ∈ ℕ, todos em unário.
Pergunta : Podemos escolher a i ou b i para cada i, de modo que a soma desses n vetores tenha no máximo K em cada coordenada?

A seguir, um problema NP-complete conhecido chamado de 3 partições :


Instância de 3 partições : B ∈ ℕ e 3 k números inteiros c 1 ,…, c 3 k entre B / 4 e B / 2, exclusivos, de modo que = i = 1 3 k c i = kB , todos em unário.
Pergunta : O multiset { c 1 ,…, c 3 k } pode ser particionado em k multisets S 1 ,…, S k de modo que a soma de cada S j seja igual aB ?

Dada uma instância ( B ; c 1 ,…, c 3 k ) do problema de 3 partições, construa uma instância do problema acima da seguinte maneira. Para cada i = 1,…, 3 k e j = 1,…, k , construiremos um par de vetores dimensionais de 4 k , representando a escolha de se c i pertence a S j ou não:

  • O vetor que representa a escolha “ c iS j ” possui apenas uma entrada diferente de zero, que é ( k −1) c i na j- ésima coordenada.
  • O vector que representa a escolha “ c iS j ” também tem apenas uma entrada diferente de zero, que é B na ( k + i ) -ésimo de coordenadas.

Não é difícil ver que a instância ( B ; c 1 ,…, c 3 k ) do problema de 3 partições possui uma solução se e somente se houver uma maneira de escolher um vetor de cada um dos 3 k 2 construídos. pares de modo a que todas as coordenadas da soma destes vectores são, no máximo, ( k -1) B . (De fato, quando isso acontece, todas as coordenadas da soma são iguais a ( k −1) B. ) Portanto, essa é uma redução do problema de 3 partições para o problema acima.

Até o momento, eu ignorei as duas restrições adicionais declaradas no final da pergunta, mas ambas são fáceis de aplicar modificando ligeiramente essa redução. A condição de que a soma dos elementos de cada vetor é igual pode ser aplicada anexando coordenadas fictícias que contêm apenas 0 ou 1. A condição de que essa soma seja menor que a dimensão pode ser aplicada anexando coordenadas fictícias que contêm apenas 0.

Tsuyoshi Ito
fonte
N