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 f
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:
- , ou seja, sempre existem 64 linhas (quando escritas como no exemplo acima).
- , ou seja, existem apenas 2 vetores por linha.
- N que (o comprimento do vetor) está entre 10 e 1000.
Além disso, em cada linha a soma dos elementos de todos os vetores é a mesma, ou seja,
e a soma dos elementos do vetor soma é menor que seu comprimento, ou seja,
fonte
Respostas:
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 3Eu j ∈ { 0 , 1 } k ai,j,k i j=0 j=1 k 3
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 64r f k 64
fonte
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:
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.
fonte