1 / 35

Análise e Síntese de Algoritmos

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 )

tamber
Download Presentation

Análise e Síntese de Algoritmos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Análise e Síntese de Algoritmos Programação Linear CLRS, Cap. 29

  2. 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

  3. 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

  4. 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

  5. Exemplo x1 = estradas; x2 = droga; x3 = subsídios; x4 = Imposto Análise e Síntese de Algoritmos

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. Formulação de Problemas de LP • Fluxos de Custo Mínimo: • Caminhos Mais Curtos • Fluxo Máximo • ... Análise e Síntese de Algoritmos

  17. Outras Formulações • Caminhos Mais Curtos • Entre s e t: • Fluxo Máximo: Análise e Síntese de Algoritmos

  18. O Algoritmo Simplex • Definições • Pivots • Exemplo • O algoritmo simplex • Soluções exequíveis iniciais • Dualidade Análise e Síntese de Algoritmos

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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

  29. 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

  30. 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

  31. 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

  32. 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

  33. 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

  34. Exemplos Adicionais • Algoritmo Simplex • Solução exequível inicial • Dualidade • Fluxo máximo com o Simplex Análise e Síntese de Algoritmos

  35. Revisão • Programação Linear • Algoritmo Simplex • A seguir: • Fluxos de Custo Mínimo (S, Cap. 22) Análise e Síntese de Algoritmos

More Related