Algoritmos de aproximação

Slides:



Advertisements
Apresentações semelhantes
Algoritmos de Caminho Mínimo em Grafos
Advertisements

Grafos eulerianos 1.
CC/EC/Mestrado Teoria dos Grafos Grafos Hamiltonianos.
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Algoritmos em Grafos.
Algoritmos em Grafos (Parte 2)
Gustavo Sant´Anna Ferreira Rodrigo Ribeiro de Souza
Grafos - Caminhos Caminhos Máximo / Mínimo:
Celso C. Ribeiro Caroline T. Rocha
Fluxo em Redes Prof. Ricardo R. Santos.
Exercícios PAA- Grafos
Solved Exercises 1. Finding the Peak. Let A= a1,…,an be a sequence of n numbers with the following property: there is p in {1,…,n} for which (i) the.
CC/EC/PPGI/UFES Teoria dos Grafos (INF 5037/INF2781) Coloração.
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
Conectividade e Separabilidade
Coloração Teoria dos Grafos (INF 5037/INF2781) 1.
GRAFOS EULERIANOS E HAMILTONIANOS
Teste de Software Parte 3.
Programação Linear Método Simplex
Problemas NP-completos
Algoritmos e Estruturas de Dados
2002 LCG/UFRJ. All rights reserved. 1 Localização no Plano Claudio Esperança Paulo Roma.
Dárlinton B. Feres Carvalho
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
NÃO DETERMINISMO Marcus Eduardo Cabral Seabra
Daniel Felipe Neves Martins
Introdução à NP-completude
Problemas NP-completo
Algoritmos em Grafos.
Heurísticas, algoritmos gulosos e aproximações
Informática Teórica Engenharia da Computação
Teoria dos Grafos Caminhos e Noção de Grafos com pesos
Exercícios: Alg Gulosos Eduardo Laber. Cap 4-Exercício 2 a)Verdadeiro, já que trocando cada elemento pelo seu quadrado não altera a ordem das arestas.
Caminhamento em Grafos: Busca em Largura e Busca em Profundidade
Exercícios PAA- Grafos
Otimização Inteira 5a. Aula Franklina.
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Histórico, exemplos e problemas
Problemas de fluxo em grafos 1º semestre/2012 Prof. André Renato
Aula T06 – BCC202 Análise de Algoritmos (Parte 4) Túlio Toffolo
Heurísticas, algoritmos gulosos e aproximações
Introdução à NP-completude Katia S. Guimarães
Abordagens para problemas NP-completos
Complexidade computacional
Complexidade de Algoritmos
Disciplina Análise de Algoritmos BCC-UFU Profa. Sandra de Amo
Busca Combinatorial e Métodos de Heurística
Análise e Síntese de Algoritmos
Disciplina Análise de Algoritmos Bacharelado em CC
Como analisar um algoritmo
Aula de Monitoria – Miniprova
Programação Dinâmica.
Problemas NP-completos e Programação Dinâmica

Algoritmos FPT para o Problema da k-Cobertura por Vértices
Problema MST Método Genérico Guloso usando Estratégia do Corte
Introdução à NP-completude
Geometria Computacional Fecho Convexo
Exercícios de Fluxo em Redes
Teoria da complexidade
Caixeiro Viajante Problema: Dado um grafo G=(V,E), encontrar o Circuito Hamiltoniano de tamanho mínimo. Teorema: A menos que P=NP, não existe algoritmo.
Analise de Algoritmos e Notação Assintótica
Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha.
TEORIA DOS NÚMEROS Aula 2 – Princípio da Indução Finita
Abordagens para Problemas Intratáveis Katia S. Guimarães
Comportamento Assintótico
Transcrição da apresentação:

Algoritmos de aproximação Aula adaptada do seminário apresentado pelo mestrando Luiz Josué da Silva Filho

Roteiro Motivação Definições Problemas Razão de aproximação Esquema de aproximação Problemas Cobertura de vértices Caixeiro viajante Cobertura de conjuntos Soma de subconjuntos

Motivação

Motivação Muitos problemas de significância prática são NP-completos Três abordagens: Entradas pequenas Isolamento de casos especiais solúveis em tempo polinomial Pode ser possível achar soluções próximas da solução ótima

Problema de otimização Em um problema de otimização onde cada solução viável tem associada um custo positivo, deseja-se achar uma solução próxima da ótima. Dependendo da natureza do problema, a solução ótima pode ser definida como um custo máximo ou mínimo possível.

Definições

Razão de aproximação Suponha que em um problema de otimização: cada solução potencial tem um custo e deseja-se encontrar uma solução próxima da ótima determina a medida de aproximação do algoritmo Razão de aproximação: em função da entrada de tamanho n.

Razão de aproximação Para muitos problemas foram desenvolvidos algoritmos polinomiais: Com razão pequena constante Com razões que crescem em função do tamanho da entrada Há algoritmos que produzem razões muito pequenas mas ao custo de um tempo de computação muito alto. No último tópico: alguns problemas NP-completo permitem algoritmos polinomiais de aproximação que podem atingir razões incrivelmente pequenas através do uso de mais tempo de computação

Esquema de aproximação É um algoritmo de aproximação que: toma como entrada uma instancia do problema e um valor ε > 0 tal que para um ε fixo o esquema é um algoritmo (1+ ε)-aproximação. Um esquema de aproximação de tempo polinomial (PTAS) é um esquema que para qualquer ε>0 fixo o esquema executa em tempo polinomial em função do tamanho n da entrada.

Esquema de aproximação O tempo de execução de um esquema de aproximação em tempo polinomial pode crescer tão rápido quanto ε decresce. Ex: O ideal é que o tempo seja polinomial tanto em 1/ε quanto em n. Em um esquema de aproximação de tempo completamente polinomial (FPTAS) tanto o esquema quanto seu tempo de execução são polinomiais em 1/ε e n.

Problemas

O problema de cobertura de vértices É um problema NP-completo A cobertura de vértices de um grafo não direcionado é um subconjunto V’ de V tal que se é uma aresta de G, então u está em V’ ou v está em V’ (ou os dois). O problema consiste em achar uma cobertura de tamanho mínimo dado um grafo não-direcionado. Tal cobertura é uma cobertura de vértices ótima

Exemplo

O algoritmo INPUT G // grafo não direcionado C ← { } E’ ← E[G] while E’ is not empty do     Let (u,v) be an arbitrary edge of E’     C ← C U {u, v}     Remove from E’ every edge incident on either u or v return C

Execução

Aproximação do algoritmo O algoritmo é 2-aproximação em tempo polinomial Prova: Faça A denotar as arestas tomadas na linha 5. C* deve incluir pelo menos um terminal de cada aresta em A. Todas as arestas incidentes nos terminais da aresta escolhida são removidas de E’ na linha 7. Como não há duas arestas cobertas pelo mesmo vértice de C*, então temos um limite inferior:

Aproximação do algoritmo Cada execução da linha 5 toma uma aresta os quais nenhum de seus terminais (vértices) já está em C, o que nos leva a um limite superior: Que nos leva a:

O problema do caixeiro viajante Dado um grafo não direcionado onde existe um custo associado a cada aresta. Deve-se achar um ciclo hamiltoniano de G com um custo mínimo. Assim onde A é um subconjunto das arestas de G.

Desigualdade triangular É comum em muitas aplicações verificar a propriedade da desigualdade triangular É provado que o problema do caixeiro viajante é NP-completo mesmo verificando-se a propriedade da desigualdade triangular para a função de custo.

O problema do caixeiro viajante com desigualdade triangular Computa-se uma MST o qual o peso é um limite inferior em função do tamanho de uma solução ótima do TSP. O custo do ciclo será no máximo duas vezes o peso da MST Approx-TSP-Tour(G, c) select root vertex r in V[G] T = MST-Prim(G, c, r) // computes a MST L = list of vertices in preorder traversal of T return hamiltonian cycle with vertices ordered as in L

O problema do caixeiro viajante com desigualdade triangular

O problema do caixeiro viajante com desigualdade triangular Approx-TSP-Tour é um algoritmo 2-aproximação em tempo polinomial. Prova: Faça H* ser o ciclo ótimo para o dado conjunto de vértices. Como a MST T é obtida pela deleção de arestas, o peso de T é um limite inferior com relação ao custo de H*. Temos: Um caminho completo W de T : a,b,c,b,h,b,a,d,e,f,e,g,e,d,a

O problema do caixeiro viajante com desigualdade triangular W percorre as arestas de T duas vezes, logo Das equações anteriores temos: W não é um ciclo hamiltoniano, mas pela desigualdade triangular: H = {a,b,c,h,d,e,f,g} H é a pré-ordem de T e também é um ciclo hamiltoniano. Como H é obtido deletando-se vértices de W, temos Assim:

O problema de cobertura de conjuntos Uma instância (X,F) do problema de cobertura de conjuntos consiste em: um conjunto finito X uma família F de subconjuntos tal que todo elemento em X pertence a pelo menos um subconjunto em F: É dito que um subconjunto cobre seus elementos.

O problema de cobertura de conjuntos O problema é achar um subconjunto de tamanho mínimo, tal que seus membros cubram todos os eltos de X.

Um algoritmo de aproximação guloso GREEDY-SET-COVER(X,F) U = X C =  while U   do select S є F that maximizes | S ∩ U | U = U - S C = C U {S} return C

Um algoritmo de aproximação guloso GREEDY-SET-COVER é um algoritmo ρ(n)-aproximação onde onde H(d) corresponde ao d-ésimo número harmônico:

Um algoritmo de aproximação guloso Prova: Atribui-se um custo de 1 a cada conjunto selecionado pelo algoritmo Distribui-se este custo para os elementos cobertos pela primeira vez Utiliza-se estes custos para derivar o relacionamento desejado entre: o tamanho de uma cobertura de conjuntos ótima C* e o tamanho do conjunto de cobertura C retornado pelo algoritmo

Um algoritmo de aproximação guloso Faça-se Si o i-ésimo subconjunto selecionado pelo algoritmo O custo de 1 é atribuído ao adicionar-se Si a C. Distribui-se este custo aos elementos cobertos pela primeira vez: Tome Cx o custo alocado ao elemento x para cada O custo só é atribuído uma vez a x. Se x é coberto a primeira vez por Si, então:

Um algoritmo de aproximação guloso A cada passo do algoritmo uma unidade de custo é atribuída, então: O custo atribuído a cobertura ótima é: E como cada x está em pelo menos um conjunto

Um algoritmo de aproximação guloso Então: Como para qualquer conjunto S pertencente a família F temos: Assim: (desigualdade (1))

Resta-os mostrar a desigualdade (1) : Livro do Cormen (seção 37.3) Vamos demonstrar no quadro.....

O problema da soma de subconjuntos Uma instância do problema da soma de subconjuntos é a seguinte: Dado um par (S,t), onde S é um conjunto {x1,x2,...,xn} de inteiros positivos e t é um inteiro positivo. Este problema de decisão questiona se existe um subconjunto de S que tendo seus valores adicionados somam exatamente o valor de t. Este problema é NP-Completo.

O problema da soma de subconjuntos No problema de otimização associado: Deseja-se encontrar um subconjunto {x1,x2,...,xn} cujo a soma de seus elementos aproxima-se o máximo mas não supera t. ...associado devido a aplicações práticas

O algoritmo EXACT-SUBSET-SUM(S, t) n ← |S| L0 ← {0} for i ← 1 to n do Li ← MERGE-LISTS(Li-1, Li-1 + xi) remove from Li every element that is greater than t return the largest element in Ln É um algoritmo exponencial, mas em alguns casos especiais é polinomial Soma xi a todos os elementos da lista Li-1 ...associado devido a aplicações práticas

Outro algoritmo Pode-se derivar um esquema de aproximação em tempo polinomial completo. Realiza-se um “trimming” de cada lista após sua criação. ?

Trimming Idéia: Se dois valores em uma lista são próximos o suficiente, para o propósito se encontrar uma solução aproximada, não há necessidade de manter-se os dois explicitamente

Trimming Utiliza-se um parâmetro δ tal que 0 < δ < 1. Então remove-se da lista L tantos elementos quanto for possível, de forma que para cada y removido em L exista um z na lista resultante que se aproxima de y, tal que:

Trimming Exemplo: Complexidade Ө(n) Dado L = {10,11,12,15,20,21,22,23,24,29} e δ = 0,1 Após realizarmos Trim em em L teremos: L’ = {10,12,15,20,23,29} onde: 11 está representado por 10 21 e 22 estão representados por 20 24 está representado por 23 Complexidade Ө(n)

Trimming TRIM(L, δ) m ← |L| L′ ← {y1} last ← y1 for i ← 2 to m do if yi > last * (1 + δ) // yi ≥ last because L is sorted then append yi onto the end of L′ last ← yi return L′

SUBSET-SUM aproximada APPROX-SUBSET-SUM(S, t,) n ← |S| L0 ← 0 for i ← 1 to n do Li ← MERGE-LISTS(Li-1, Li-1 + xi) Li ← TRIM(Li, ε /2n) remove from Li every element that is greater than t let z* be the largest value in Ln return z* Com 0<ε<1 z* é o valor com 1+ ε o valor da solução ótima

Exemplo S={104,102,201,101}, t=308, ε=0,40 e δ= ε/8=0,05 linha 2: L0 = {0}, linha 4: L1 = {0, 104}, linha 5: L1 = {0, 104}, linha 6: L1 = {0, 104}, linha 4: L2 = {0, 102, 104, 206}, linha 5: L2 = {0, 102, 206}, linha 6: L2 = {0, 102, 206}, linha 4: L3 = {0, 102, 201, 206, 303, 407}, linha 5: L3 = {0, 102, 201, 303, 407}, linha 6: L3 = {0, 102, 201, 303}, linha 4: L4 = {0, 101, 102, 201, 203, 302, 303, 404}, linha 5: L4 = {0, 101, 201, 302, 404}, linha 6: L4 = {0, 101, 201, 302} z* = 302 que está dentro dos 40% de aproximação da solução ótima (307)