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

maxk∑iai,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,…,N−1} 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,

∑k∑iai,f(i),k<N

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


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 i ℕ m ( 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 i ∈ S j ” possui apenas uma entrada diferente de zero, que é ( k −1) c i na j- ésima coordenada.
  • O vector que representa a escolha “ c i ∉ S 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.


N
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.