Folga complementar (CS) é comumente ensinada quando se fala de dualidade. Estabelece uma boa relação entre as restrições / variáveis primárias e as duplas do ponto de vista matemático.
Os dois principais motivos para a aplicação do CS (conforme ensinado em cursos de graduação e livros didáticos):
- Para verificar a otimização do LP
- Para ajudar a resolver o duplo
Dado o poder computacional de hoje e os algoritmos polinomiais para resolver LPs, o CS ainda é relevante do ponto de vista pragmático? Sempre poderíamos resolver os duais e abordar os dois pontos acima. Concordo que é "mais eficiente" resolver o dual com a ajuda do CS, mas é isso? Ou há mais no CS do que aparenta? Onde exatamente o CS é útil além dos dois pontos acima ? Eu geralmente vi textos aludindo ao conceito de CS quando falamos sobre algoritmos de aproximação, mas não entendo seu papel lá.
Respostas:
A negligência complementar é essencial para o design de algoritmos primal-duplo. A ideia básica é:
Um exemplo clássico é o algoritmo húngaro. O algoritmo Ford-Fulkerson pode ser visto como outro exemplo. Observe que a etapa 2. é um problema de viabilidade que geralmente é mais fácil do que o problema de otimização original e também pode ser resolvido combinatoriamente. Esse é o poder da negligência complementar. Por exemplo, no caso de correspondência bipartida de custo mínimo, a etapa 2 equivale a verificar se existe uma correspondência perfeita usando apenas arestas apertadas. No caso de vazão máxima - , a etapa 2 equivale a verificar se as arestas saturadas separam e .s t s t
Os algoritmos primal-duplos são bons por vários motivos. Filosoficamente, eles fornecem mais informações do que um algoritmo genérico. Eles geralmente fornecem algoritmos de tempo fortemente polinomiais, enquanto ainda não temos solucionadores de LP fortemente polinomiais. Eles geralmente são mais práticos do que algoritmos genéricos. Isso é especialmente verdadeiro se não podemos escrever o LP explicitamente e nossa única outra opção é o algoritmo elipsóide, que é o caso da correspondência não bipartida e do algoritmo primal-dual de Edmonds.
Primal-dual também é uma estrutura muito útil para algoritmos de aproximação, usando versões descontraídas de folga complementar. Isso tem sido útil no projeto de algoritmos de aproximação para problemas difíceis de NP (veja, por exemplo, o Capítulo 7 do livro Williamson-Shmoys ) e no design de algoritmos on-line com boa relação competitiva (veja o livro de Buchbinder e Naor ). O ponto aqui é que o algoritmo mantém uma solução ao duplo do relaxamento de LP de um problema difícil e, a cada passo, encontra um viável primal integral modo que a folga complementar aproximada é satisfeita ou melhora a solução duplay x y . A preguiça complementar aproximada é uma condição da seguinte forma: se , a restrição dupla correspondente é estanque e, se , a restrição primal correspondente seria estanque se for escalonado por . Isso fornece um fator de aproximação . Está tudo muito bem explicado nas duas fontes acima.xEu> 0 yj> 0 x α α
fonte