360 likes | 534 Vues
Análise e Síntese de Algoritmos. Programação Linear CLRS, Cap. 29. Contexto. Algoritmos em Grafos ( CLRS, Cap. 22-26 ) ... Fluxos máximos em grafos ( CLRS, Cap. 26 ) Programação Linear ( CLRS, Cap. 29 ) Fluxos de Custo Mínimo ( S, Cap. 22 ) Programação Dinâmica ( CLRS, Cap. 15 )
E N D
Análise e Síntese de Algoritmos Programação Linear CLRS, Cap. 29
Contexto • Algoritmos em Grafos (CLRS, Cap. 22-26) • ... • Fluxos máximos em grafos (CLRS, Cap. 26) • Programação Linear (CLRS, Cap. 29) • Fluxos de Custo Mínimo (S, Cap. 22) • Programação Dinâmica (CLRS, Cap. 15) • Algoritmos Greedy (CLRS, Cap. 16) • Emparelhamento de Caracteres (CLRS, Cap. 32) • Completude NP (CLRS, Cap. 34) • Algoritmos de Aproximação (CLRS, Cap. 35) Análise e Síntese de Algoritmos
Resumo • Motivação • Formas Standard e Slack • Formulação de Problemas • O Algoritmo Simplex • Soluções Exequíveis Iniciais • Dualidade Análise e Síntese de Algoritmos
Exemplo • Queremos ganhar pelo menos 50% dos votos (100.000 urbanos, 200.000 suburbanos e 50.000 rurais) • Entrada representa o número de votos (em milhares) ganhos por cada 1000 Euros gastos em campanhas Análise e Síntese de Algoritmos
Exemplo x1 = estradas; x2 = droga; x3 = subsídios; x4 = Imposto Análise e Síntese de Algoritmos
Formulação Geral • Programação Linear (LP): • Optimizar (minimizar ou maximizar) função linear sujeita a conjunto de restrições lineares • Função linear: • Restrições lineares: Análise e Síntese de Algoritmos
Perspectiva sobre LP • Qualquer solução do conjunto de restrições designa-se por solução exequível • Cada solução exequível corresponde a um valor da função objectivo (ou de custo) • O conjunto de soluções exequíveis é designado por região exequível • A região exequível é um conjunto convexo no espaço n-dimensional • Conjunto convexo S: qualquer ponto de segmento que liga dois pontos em S está também em S • S é designado por simplex • Exemplo Análise e Síntese de Algoritmos
Perspectiva sobre LP • Utilização de representações canónicas: • Formas standard e slack • Algoritmos: • Algoritmo Simplex • Exponencial no pior caso; eficiente na prática e muito utilizado • Algoritmo da Elipsóide • Polinomial; normalmente ineficiente • Métodos de Ponto Interior • Polinomiais; eficientes na prática, competitivos com Simplex Análise e Síntese de Algoritmos
Forma Standard função objectivo • Todos os valores cj, aij, bi são valores reais • Representação matricial: • Em que A = (aij), b = (bi) e c = (cj) e x = (xj) restrições Análise e Síntese de Algoritmos
Forma Standard • Noções a reter: • Solução exequível • Solução não exequível • Valor da função objectivo: valor objectivo • Valor máximo/mínimo: valor objectivo óptimo • LP sem soluções exequíveis diz-se não exequível; caso contrário diz-se exequível • LP exequível, mas sem solução óptima, diz-se não limitado Análise e Síntese de Algoritmos
Conversão para Forma Standard • Problemas: • Minimização em vez de maximização • Variáveis sem restrição de serem não negativas • Restrições com igualdade • Restricões com Análise e Síntese de Algoritmos
Conversão para Forma Standard • Soluções: • Minimização vs. Maximização: • Multiplicar coeficientes por -1 • Variáveis sem restrição de serem não negativas: • Substituir xi por duas variáveis xi1 e por xi2, e multiplicar coeficientes de xi2 por –1 • Restrições com igualdade: • Introduzir duas restrições, uma com e outra com • Restrições com : • Multiplicar restrição por –1 • Exemplo Análise e Síntese de Algoritmos
Conversão para Forma Slack • Objectivo é trabalhar apenas com igualdades • Todas as restrições, excepto as restrições das variáveis serem não negativas, são igualdades • Para cada restrição introduzir uma nova variável s • s: variável de slack • Conversão de forma standard para forma slack: • Exemplo Análise e Síntese de Algoritmos
Forma Slack • Nas expressões: • Variáveis expressas em função de outras variáveis designam-se por variáveis básicas • As variáveis que definem as variáveis básicas designam-se por variáveis não-básicas • Definir: • Exemplo Análise e Síntese de Algoritmos
Forma Slack • N: • Conjunto de índices das variáveis não básicas, |N| = n • B: • Conjunto de índices das variáveis básicas, |B| = m • Obs: • Forma slack descrita por: (N, B, A, b, c, v) • v: constante na função objectivo Análise e Síntese de Algoritmos
Formulação de Problemas de LP • Fluxos de Custo Mínimo: • Caminhos Mais Curtos • Fluxo Máximo • ... Análise e Síntese de Algoritmos
Outras Formulações • Caminhos Mais Curtos • Entre s e t: • Fluxo Máximo: Análise e Síntese de Algoritmos
O Algoritmo Simplex • Definições • Pivots • Exemplo • O algoritmo simplex • Soluções exequíveis iniciais • Dualidade Análise e Síntese de Algoritmos
Forma Slack • Nas expressões: • Variáveis expressas em função de outras variáveis designam-se por variáveis básicas • As variáveis que definem as variáveis básicas designam-se por variáveis não-básicas • Definir: • Forma slack descrita por: (N, B, A, b, c, v) • N: varáveis não básicas; |N| = n • B: variáveis básicas; |B| = m • v: constante na função objectivo Análise e Síntese de Algoritmos
Pivots • Exemplo • Escolher variável não básica xe para passar a básica • Variável de entrada • Escolher variável básica xl para passar a não básica • Variável de saída • Calcular nova forma slack do problema Análise e Síntese de Algoritmos
O Algoritmo Simplex • Calcular forma slack inicial • Para a qual solução básica inicial é exequível • Caso contrário reporta problema não exequível (retorna “unfeasible”) e termina • Enquanto existir ce > 0 (i.e. valor de z pode aumentar) • xe define variável de entrada (i.e. nova variável básica) • Seleccionar xl • xl corresponde a linha i que minimizabi / aie, para aie > 0 • Se aie < 0 para todo o i, retornar ‘ unbounded’ • Aplicar pivoting com (N, B, A, b, c, v, l, e) Análise e Síntese de Algoritmos
O Algoritmo Simplex • Para valores i em B • Atribuir valor bi • Caso contrário atribuir valor 0 • i.e. variáveis em N • Exemplos Análise e Síntese de Algoritmos
Solução Exequível Inicial • Um programa linear pode ser exequível, mas solução básica inicial pode não ser exequível • Exemplo Análise e Síntese de Algoritmos
Solução Exequível Inicial • Seja L um programa linear na forma standard, e seja Laux definido da forma seguinte: • Então L é exequível se e só o valor objectivo óptimo de Laux é 0 • Se L tem solução, então Laux tem solução com x0 = 0, o valor óptimo • Se o valor óptimo de x0 é 0, então solução é solução para L Análise e Síntese de Algoritmos
Solução Exequível Inicial • A partir de L construir Laux se solução básica inicial não for exequível • Determinar indíce l com menor bi • Aplicar pivot com e = 0 • A solução básica calculada é exequível para Laux • Aplicar passos do Simplex para calcular solução óptima • Se solução óptima verifica x0 = 0 retornar solução calculada, sem x0 • Caso contrário L não é exequível • Exemplo Análise e Síntese de Algoritmos
Solução Exequível Inicial • Após a primeira aplicação de pivot, a solução básica é exequível para Laux • Prova Análise e Síntese de Algoritmos
Simplex: Resultados Formais • Dado um programa linear (A, b, c): • Se o algoritmo Simplex retorna uma solução, a solução é exequível • Se o algoritmo Simplex retorna ‘unbounded’, o programa é não limitado • Dado um programa linear (A, b, c) na forma standard, e B um conjunto de variáveis básicas, a forma slack é única Análise e Síntese de Algoritmos
Simplex: Resultados Formais • Variação do valor da função objectivo após pivoting: • Valor da função objectivo não pode diminuir • Variável escolhida tem coeficiente positivo • Valor da variável é não negativo, pelo que novo valor da função de custo não pode diminuir • Valor da função objectivo pode não aumentar • Degenerescência • Mas é sempre possível assegurar que algoritmo termina Análise e Síntese de Algoritmos
Simplex: Resultados Formais • O Simplex está em ciclo se existem formas slack idênticas para duas iterações do algoritmo • Se o algoritmo Simplex não termina após iterações, então o algoritmo está em ciclo • Cada conjunto B determina unicamente a forma slack • Existem n+m variáveis e |B| = m • Número de modos de escolher B: • Número de formas slack distintas: • Se algoritmo executar mais de iterações, então está em ciclo • Eliminar ciclos: • Regra de Bland: desempates na escolha de variáveis através da escolha da variável com o menor indíce Análise e Síntese de Algoritmos
Dualidade • Conceito essencial em optimização • Normalmente associado com existência de algoritmos polinomiais • E.g., fluxo máximo corte mínimo • Programa linear dual: • Programa primal: formulação original • Exemplo Análise e Síntese de Algoritmos
Dualidade Fraca em Programação Linear • Seja x uma qualquer solução exequível do programa primal e seja y uma qualquer solução exequível do programa dual. Nestas condições: • Prova Análise e Síntese de Algoritmos
Dualidade em Programação Linear • Seja x uma qualquer solução pelo algoritmo Simplex, e sejam N e B os conjuntos de variáveis para a forma slack final. Seja c’ o vector dos coeficientes da forma slack final e seja yi = -cn+i para (n+i)N; 0 caso contrário. Nestas condições: • x é solução óptima para o programa primal • y é a solução óptima para o programa dual • e, • Exemplo Análise e Síntese de Algoritmos
Teorema Fundamental da Programação Linear • Qualquer programa linear na forma standard: • Ou tem solução óptima com valor finito, • Ou não é exequível, • Ou não é limitado. Se L não é exequível, o algoritmo Simplex retorna “infeasible” Se L não é limitado, o algoritmo Simplex retorna “unbounded” Caso contrário, o algoritmo Simplex retorna uma solução óptima com um valor objectivo finito Análise e Síntese de Algoritmos
Exemplos Adicionais • Algoritmo Simplex • Solução exequível inicial • Dualidade • Fluxo máximo com o Simplex Análise e Síntese de Algoritmos
Revisão • Programação Linear • Algoritmo Simplex • A seguir: • Fluxos de Custo Mínimo (S, Cap. 22) Análise e Síntese de Algoritmos