Isso é uma combinação linear das colunas de . Portanto, resolver em significa expressar o vetor dado como uma combinação linear das colunas em . Cada coluna está em , e temos colunas para escolher (com ). Para uma solução básica, escolha quaisquer colunas linearmente independentes, chame-as de base (realmente uma base para , o espaço que contém o lado direito dado ), e use apenas essas. Isso é uma ``solução básica (SB) para ''; pode haver várias dessas.
Cada componente no vetor indica a recompensa (se ) ou penalidade (se ) por incluir a coluna na representação.
Escolha quaisquer colunas linearmente independentes de . Registre seus subscritos em um conjunto . Chame isso de base. Permute/agrupando colunas selecionadas em uma matriz quadrada (tamanho ). Decomposição simbólica:
leva a
Acompanhe o objetivo:
Novo dicionário:
Esta é uma estrutura algébrica contendo símbolos juntamente com vários números. Substituindo determina os valores numéricos de em uma solução básica para . É bom quando isso é viável, mas a derivação acima não requer isso.
Imagine escolher quaisquer valores para os elementos do vetor . Este dicionário mostra os componentes de que você deve usar para satisfazer e o valor de que resulta quando você o faz (viabilidade é ignorada). Escolher dá a solução básica e o valor objetivo .
Suponha que temos um dicionário viável e a linha de coeficientes de custo tem uma entrada negativa. Identifique a coluna associada de e chame-a de . Note que . Escolher de modo que e para todos os outros leva a . Acompanhe os valores dos coeficientes básicos atuais:
Para muitos , isso terá entradas diferentes de zero. Escolha o menor onde uma ou mais entradas mudam para 0: essas entradas identificam as colunas elegíveis para sair. Chame o valor de sorte de .
Troque a coluna de entrada na base; a coluna de saída escolhida fora; atualize o vetor de coeficientes usando , e outros coeficientes da fórmula anterior.
Implementação Eficiente
Nunca se calcula realmente a partir de . Em vez disso, resolvemos sistemas lineares da seguinte forma:
Para gerar coeficientes objetivos, introduza para reorganizar , como , ou seja, . Encontre resolvendo um sistema linear.
Na atualização de coeficientes, encontre resolvendo o sistema .
Você precisa de uma base viável para começar. (Tente adivinhar uma; use um passo auxiliar ``Fase Um'' se a adivinhação falhar.) Deixe ser o conjunto de subscritos que definem a base atual; deixe ser o conjunto que contém os subscritos não básicos.
Escaneie em busca de entradas negativas. Para encontrar :
Encontre (um vetor linha) resolvendo o sistema .
Construa .
Se nenhuma entrada for negativa, a BFS atual é ótima. Pare. Se existirem entradas negativas, escolha uma. Ela rotula uma ``coluna de entrada'' adequada que tem um índice original . A própria coluna é , com coeficiente .
Defina o coeficiente não básico , mantendo todas as outras variáveis não básicas em 0. Isso dá ao vetor exatamente uma entrada não nula, com:
Observe os coeficientes da base atual mudarem à medida que aumenta:
onde é encontrado resolvendo . Deixe denotar o menor para o qual tem uma entrada zero. Cada entrada zero em identifica uma coluna na base atual que pode sair. Escolha uma; use como um símbolo para o índice de saída. Então, a coluna de saída é . (Se nunca desenvolver uma entrada zero, enviar prova que o problema é ilimitado. Relate esse fato e pare.)