Eu tenho uma família de problemas de programação linear: maximize sujeito a , . Os elementos de , , e são números inteiros não negativos, estritamente positivo. ( também deve ser integral, mas vou me preocupar com isso mais tarde.)b c c x
Geralmente, em minha aplicação, os coeficientes e são tais que um algoritmo simplificado de uma passagem fornece a solução ideal para todas as opções de : o algoritmo de uma passagem determina os elementos em seqüência, escolhendo cada é o maior valor possível consistente com os valores já determinados . Na linguagem simplex, a sequência de entrada de variáveis é apenas a e termina após etapas. Isso economiza muito tempo em comparação com o simplex completo.c b x 1 , … , x n x j x 1 , … , x j - 1 x 1 x n n
Esse algoritmo funciona quando as colunas de e os elementos de foram classificados de "barato" para "caro". Uma variável "barata" é uma coluna de com valores geralmente pequenos, para os quais o elemento correspondente de é grande: para esse elemento de você obtém muita saída com pouca demanda na restrição . Portanto, o algoritmo diz apenas "faça as coisas fáceis primeiro".c A c x b
Minha pergunta é: que propriedade de e nos garantiria que esse algoritmo simplificado funciona para todos os ? Minha conjectura inicial era que os elementos diferentes de zero de deveriam aumentar em cada linha, mas isso não está correto.c b A
Aqui estão alguns exemplos, todos com : , , , . Para tudo isso, o algoritmo seqüencial fornece a solução ideal para todos os valores de (por experimentação numérica). é o único para o qual todas as permutações de colunas também funcionam.A 1 = ( 1 1 1 1 2 3 3 2 0 ) A 2 = ( 0 0 1 3 0 2 0 3 2 ) A 3 = ( 1 1 1 1 0 0 1 1 1 ) A 4 = ( 1 0 1 0 1 0parece mais caro que e mais caro que .
Eu ficaria tremendamente grato por qualquer indicação na literatura, por quaisquer problemas como esse ou quaisquer sugestões. Deve ter havido outros casos em que algumas variáveis podem ser determinadas como "mais baratas" do que outras e podem ser feitas primeiro com segurança. Com todo o trabalho realizado na programação linear ao longo dos anos, parece que algo semelhante deve ter surgido, mas não consegui encontrá-lo.
fonte
Graças à sugestão do professor Spivey, finalmente localizei o que considero o estado da arte: Ulrich Faigle, Alan J. Hoffman e Walter Kern, "Uma Caracterização de Matrizes Não-Negativas Box-Greedy", SIAM J. Disc. Matemática. 9 (1996) pp 1-6. Uma matriz é "gananciosa" se o algoritmo que descrevi acima fornecer a solução ideal para todos os . Uma matriz é "gananciosa em caixa" se o algoritmo ganancioso fornecer a solução ideal com a condição adicional x ≤ d para todos os b e todos d ≥ 0 . Claramente, a caixa gananciosa é uma condição mais forte que a gananciosa.b x≤d b d≥0
Sempre assuma que . Faigle, Hoffman e Kern provam que A é caixa gananciosa se, e somente se, não tiver submatriz k × ( k + 1 ) (para qualquer k ) da forma ( r 1 s 1c1≥⋯≥cn>0 A k×(k+1) k com cadarj>0e∑i:si>0ri⎛⎝⎜⎜⎜⎜⎜r1r2⋮rks1s2⋱sk⎞⎠⎟⎟⎟⎟⎟ rj>0 . Na extração das submatrizes, permutações arbitrárias de linhas são permitidas, mas não colunas, e subconjuntos arbitrários de linhas e colunas são permitidos. Assim, em particular, comk=1, os elementos diferentes de zero em cada linha deA nãodevem diminuir.∑i:si>0risi>1 k=1 A
Infelizmente, no meu problema, as matrizes não são gananciosas, embora eu ainda acredite que são gananciosas. Por exemplo, na minha acima da condição é violada e esta matriz não é caixa-gananciosos embora seja ganancioso. Até onde eu sei, não há resultados na identificação de matrizes gananciosas.A1
fonte
O exemplo mais fácil para algo como isso pode ser o problema da mochila fracionada, em que itens podem ser fracionados. esse problema (e seu lp dual) pode ser resolvido classificando os itens para lucro por peso, escolhendo a sequência mais longa nessa ordem, que seja possível e fracionando o último item.
fonte