Análise e Síntese de Algoritmos

Documentos relacionados
INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

Análise e Síntese de Algoritmos. Problemas NP-Completos CLRS, Cap. 34

Análise e Síntese de Algoritmos

Algoritmos de aproximação

Análise e Síntese de Algoritmos. Programação Dinâmica CLRS, Cap. 15

Problema de Optimização. Metodologias de Apoio à Decisão 1. Slide 1

2006/2007 Análise e Síntese de Algoritmos 2

Análise e Síntese de Algoritmos

Ciclos hamiltonianos e o problema do caixeiro viajante

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

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

Árvore de Suporte de Comprimento Mínimo Minimal Spanning Tree

Algoritmos de aproximação - Problema do caixeiro viajante

PCC104 - Projeto e Análise de Algoritmos

Técnicas de Concepção de Algoritmos: Branch and Bound

Análise e Síntese de Algoritmos. Algoritmos em Grafos CLRS, Cap. 22

Algoritmos de Aproximação para o Problema do Caixeiro Viajante

ANÁLISE DE ALGORITMOS (INF 1721)

Aula 13: Branch-and-bound

Introdução à classe de problemas NP- Completos

5COP096 TeoriadaComputação

Grafos Hamiltonianos e o Problema do Caixeiro Viajante. Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá

Problemas Intratáveis ou computação eficiente X computação ineficiente

Análise e Projeto de Algoritmos

Como saber se um problema está em NP e não está em P?

Algoritmo Aproximação. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

Análise e Síntese de Algoritmos

Algoritmos de Aproximação Segundo Semestre de 2012

Os Problemas de Optimização Combinatória e a Teoria da Complexidade

Projeto e Análise de Algoritmos Prof. Ruy Luiz Milidiú

CAL ( ) MIEIC/FEUP Técnicas de Concepção de Algoritmos, CAL MIEIC/FEUP, Fev. de Técnicas de Concepção de Algoritmos. .

Notas. Notas. encontrem a solução ótima em tempo polinomial para qualquer instância do problema que estamos trabalhando 2 / 19.

Análise e Síntese de Algoritmos

Complexidade computacional

Algoritmos Combinatórios: Backtracking

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

Problemas de otimização

Algoritmos Greedy. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Algoritmos Greedy 2014/ / 40

Teoria e Algoritmos em Grafos

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4)

INTRATABILIDADE e NP-COMPLETUDE

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Aula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo

Projeto e Análise de Algoritmos

Problemas N P-Completo e Algoritmos Aproximados

ANÁLISE DE ALGORITMOS (INF 1721)

Árvores Árvores Geradoras de Custo Mínimo 0/16

Problemas N P-Completo. Algoritmos Aproximados. Introdução. Problemas. Classe N P - Problemas Sim/Não

Algoritmos de Aproximação Segundo Semestre de 2012

Problemas de Fluxo em Redes

TEORIA DE COMPLEXIDADE

Teoria e Algoritmos em Grafos

ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8.

Complexidade de Algoritmos

Teoria dos Grafos Aula 6

Modelos e Algoritmos. Transparências de apoio à leccionação de aulas teóricas. c 2001 José Fernando Oliveira, Maria Antónia Carravilla FEUP

Algoritmos de aproximação - Problema de cobertura por conjuntos

NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016

Árvores: Conceitos Básicos e Árvore Geradora

Situação Ideal. Algoritmos Aproximados - Motivação

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

Problema do Caixeiro Viajante (The Travelling Salesman Problem-TSP) (Problema Del viajante)

Métodos de pesquisa e Optimização

Problemas N P-Completo e Algoritmos Aproximados

Otimização Combinatória - Parte 4

Grafos: árvores geradoras mínimas. Graça Nunes

Problemas NP-Completo e Algoritmos Aproximados

Problemas N P-Completo e Algoritmos Aproximados

Grafos: componentes fortemente conexos, árvores geradoras mínimas

Problema do Caixeiro Viajante

Problemas NP-Completo e Algoritmos Aproximados

Uma forma de classificação

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO

Análise e Síntese de Algoritmos. Fluxos Máximos em Grafos CLRS, Cap. 26

Complexidade de Algoritmos

Otimização em Grafos

Circuito Hamiltoniano. Brute Force Greedy Heuristics

Redução polinomial. Permite comparar o grau de complexidade de problemas diferentes.

Sub-grafo. Árvore Geradora Mínima

Selecciona-se dos vértices ainda não seleccionados o vértice v k que está à menor distância de v i,

Melhores momentos AULA 24. Algoritmos p.906/953

Resolução de problemas difíceis de programação linear através da relaxação Lagrangeana

Análise de Algoritmos

TEORIA DE COMPLEXIDADE

Departamento de Engenharia de Produção UFPR 57

Teoria da Computação. Complexidade computacional classes de problemas

Polinomial: função de complexidade é O(p(n)), onde p(n) é um polinômio.

Programa. Análise de algoritmos. Notação Big-O. Sistemas de Informação Geográfica II. Análise de algoritmos

Algoritmos Combinatórios: Introdução

P, NP e NP-Completo. André Vignatti DINF- UFPR

Algoritmo Aproximado. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

Análise e Projeto de Algoritmos

Por que não encontramos algoritmos polinomiais para muitos problemas?

ALGUNS GRAFOS BEM-COBERTOS LIVRES DE K 1,3

Algoritmos para o problema da árvore de Steiner com coleta de prêmios

Problemas de Decisão em Redes 18

Por que não encontramos algoritmos polinomiais para muitos problemas?

Complexidade de Algoritmos. Edson Prestes

Análise de Algoritmos. Slides de Paulo Feofiloff

Análise e Síntese de Algoritmos

Transcrição:

Análise e Síntese de Algoritmos Algoritmos de Aproximação CLRS, Cap. 35 Resumo Algoritmos de aproximação Algoritmos, com complexidade polinomial, que calculam soluções aproximadas para problemas de optimização NPdifíceis i.e. problemas de optimização cuja formulação como problema de decisão é NP-completa 2006/2007 Análise e Síntese de Algoritmos 2 1

Algoritmos de Aproximação Motivação Definições Exemplos de algoritmos de aproximação Problemas de optimização cuja formulação de decisão é NPcompleta Problema da Cobertura de Vértices Problema do Caixeiro Viajante Problema da Mochila Problema da Cobertura de Conjuntos 2006/2007 Análise e Síntese de Algoritmos 3 Motivação Problemas NP-Completos Qualquer algoritmo existente demora no pior caso tempo exponencial no tamanho da instância Suporta conjectura P NP Problemas de decisão Formulação original requer resposta sim/não Problemas de optimização Formulação de decisão provada NP-completa Encontrar solução óptima é computacionalmente difícil Calcular (em tempo polinomial) solução aproximada! Mas estabelecer garantias quanto ao valor da solução calculada 2006/2007 Análise e Síntese de Algoritmos 4 2

Motivação Algoritmos de aproximação Algoritmos para problemas de optimização NP-completos (cujas formulações de decisão são NP-completas) Algoritmos de tempo polinomial Com garantias quanto ao máximo afastamento do valor calculado face à solução óptima 2006/2007 Análise e Síntese de Algoritmos 5 Definições Limite da razão p(n) Algoritmo de aproximação para um problema de optimização Para qualquer instância de tamanho n Custo da solução calculada, C Custo da solução óptima, C* max(c/c*, C*/C) p(n) maximização: 0 C C* minimização: 0 C* C p(n) 1 2006/2007 Análise e Síntese de Algoritmos 6 3

O Problema da Cobertura de Vértices Definição: G=(V,E), grafo não dirigido Cobertura de vértices (VC): conjunto de vértices V tal que qualquer arco em G é incidente em pelo menos um dos vértices de V O problema VC opt consiste em calcular uma cobertura de vértices com o número mínimo de vértices 2006/2007 Análise e Síntese de Algoritmos 7 O Problema da Cobertura de Vértices Algoritmo de aproximação: VC-Approx(G) C = E = E[G] while E Seja (u, v) arco de E C = C { u, v } Remover de E qualquer arco incidente em u ou v return C Exemplo 2006/2007 Análise e Síntese de Algoritmos 8 4

O Problema da Cobertura de Vértices Teorema: VC-Approx é um algoritmo de aproximação com limite da razão 2 para o problema VC opt max(c/c*, C*/C) = C/C* 2 Prova: A: conjunto de arcos seleccionados pelo algoritmo Conjunto C é cobertura de vértices Ciclo iterado até todos os arcos de E estarem cobertos Por inspecção, nenhum par de arcos em A tem vértices comuns Também por inspecção, C = 2 A 2006/2007 Análise e Síntese de Algoritmos 9 O Problema da Cobertura de Vértices Cobertura dos arcos em A requer pelo menos um vértice incidente em cada um dos arcos de A Qualquer cobertura de vértices tem que cobrir arcos de A Válido também para C* A C* Conclusão: C = 2 A 2 C* 2006/2007 Análise e Síntese de Algoritmos 10 5

O Problema da Mochila Definição: Dados n objectos com pesos w 1, w 2,, w n e valores v 1, v 2,, v n, e uma mochila que pode transportar peso máximo W, o problema KNAPSACK opt consiste em identificar os objectos a transportar, que não excedem o peso máximo W, e que maximizam o valor dos objectos transportados 2006/2007 Análise e Síntese de Algoritmos 11 O Problema da Mochila Algoritmo Greedy: KNAP-Greedy(w,v,W) Ordenar w e v tal que v[i]/w[i] v[j]/w[j] para 1 i j n peso = 0; valor = 0 for i = 1 to n if peso + w[i] W valor += v[i] peso += w[i] return valor Problema Exemplo 2006/2007 Análise e Síntese de Algoritmos 12 6

O Problema da Mochila Algoritmo de Aproximação: KNAP-Approx(w,v,W) maior = max {v[i] : 1 i n} // Admite-se w[i] W, 1 i n return max {maior, KNAP-Greedy(w,v,W)} Exemplo 2006/2007 Análise e Síntese de Algoritmos 13 O Problema da Mochila Teorema: O algoritmo KNAP-Approx é um algoritmo de aproximação com limite da razão 2 para o problema KNAPSACK opt Prova: C*: solução óptima; C: solução retornada pelo algoritmo Escolher menor l tal que, l w i " W! i= 1 KNAP-Greedy(w,v,W) verifica, KNAP - Greedy(w, v, W) E, maior v l (por definição de maior) # l 1! " v i i= 1 2006/2007 Análise e Síntese de Algoritmos 14 7

O Problema da Mochila Notando que max(x,y) (x+y)/2, obtemos: C = max(maior,knap- Greedy(w, v,w)) ( )! (maior + KNAP- Greedy(w, v,w)) / 2 ' l ) 1 $ l! % vl + ( vi " / 2 = ( vi / 2 = C' / 2 & i = 1 # i = 1! C * / 2 Definição de W e C : W '! w i C'! = l i= 1 Notar que W W e v 1 /w 1 v 2 /w 2 v l /w l Pelo que C C* C é a solução óptima para W = l v i i= 1 2006/2007 Análise e Síntese de Algoritmos 15 O Problema do Caixeiro Viajante Definição: G=(V,E), grafo completo não dirigido, com função de pesos w Circuito: caminho que visita todos os vértices de G apenas uma única vez e que termina no vértice de onde começa Peso de um circuito: peso do caminho respectivo Problema do Caixeiro Viajante (TSP): Encontrar o circuito de menor peso em G Desigualdade triangular: w(t,v) w(t,u) + w(u,v) para quaisquer arcos (t,v), (t,u) e (u,v) de G 2006/2007 Análise e Síntese de Algoritmos 16 8

O Problema do Caixeiro Viajante Algoritmo de Aproximação: TSP-Approx(G,w) Seleccionar qualquer r V para vértice raiz Construir MST T a partir de r L = lista de vértices resultantes de visita de T em pré-ordem Definir circuito H que visita vértices de G pela ordem L return H Exemplo Visita de árvore que lista a raiz antes dos vértices de cada sub-árvore 2006/2007 Análise e Síntese de Algoritmos 17 O Problema do Caixeiro Viajante Teorema: O algoritmo TSP-Approx é um algoritmo de aproximação com limite da razão 2 para instâncias do problema TSP que verificam a desigualdade triangular Prova: H*: circuito com custo mínimo Provar: C(H) 2C(H*) T: MST de G W: travessia completa de T cada vértice u identificado se visitado pela primeira vez ou se travessia retorna a u W visita cada arco 2 vezes 2006/2007 Análise e Síntese de Algoritmos 18 9

O Problema do Caixeiro Viajante C(T) C(H*) T é MST de G e qualquer árvore abrangente pode ser obtida a partir de circuito por remoção de 1 arco C(W) = 2C(T) W atravessa cada arco 2 vezes Pelo que, C(W) 2C(H*) Ordem dos vértices visitados em W:,t,v,u,,u,v,t, Desigualdade triangular assegura que podemos apagar um vértice que o custo total não aumenta E.g.: com,t,v,u,,u,t, custo total não aumenta 2006/2007 Análise e Síntese de Algoritmos 19 O Problema do Caixeiro Viajante Repetir processo de remoção de vértices até cada vértice ser visitado apenas 1 vez Obtém-se ordem dos vértices após visita em pré-ordem Circuito resultante, H, visita todos os vértices de G e verifica: C(H) C(W) 2C(H*) Exemplo 2006/2007 Análise e Síntese de Algoritmos 20 10

O Problema da Cobertura de Conjuntos Definição: Uma instância (X,F) do problema de cobertura de conjuntos consiste de: Conjunto finito X Família de subconjuntos de X, F Tal que, X = S F S O problema da cobertura de conjuntos consiste em identificar um subconjunto C de F de menor tamanho e tal que X = S C S 2006/2007 Análise e Síntese de Algoritmos 21 O Problema da Cobertura de Conjuntos Algoritmo de Aproximação: SC-Approx(X,F) U = X C = while U Seleccionar S F que maximiza S U U = U - S C = C { S } return C Exemplo 2006/2007 Análise e Síntese de Algoritmos 22 11

O Problema da Cobertura de Conjuntos Teorema: O algoritmo SC-Approx tem limite da razão H(max{ S : S F}), com H(d) = 1 + 1/2 + + 1/d, H(0) = 0 Prova: (ver CLRS) Colorário: SC-Approx tem limite da razão de ln X + 1 Prova: (ver CLRS) 2006/2007 Análise e Síntese de Algoritmos 23 Revisão Algoritmos de Aproximação Exemplos de algoritmos de aproximação para problemas NPdifíceis 2006/2007 Análise e Síntese de Algoritmos 24 12