Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouVítor Gabriel Caires Weber Alterado mais de 8 anos atrás
1
maio/2000katia@cin.ufpe.br1 Abordagens para Problemas Intratáveis Katia S. Guimarães katia@cin.ufpe.br
2
maio/2000katia@cin.ufpe.br2 São problemas para os quais Não se conhece solução polinomial e Não se sabe se elas existem. http://np-complete.search.ipupdater.com/ O link Contém informação e apontadores para listas de problemas deste tipo em várias áreas de aplicação. Problemas Intratáveis
3
maio/2000katia@cin.ufpe.br3 Abordagens para Problemas Intratáveis Há uma série de técnicas para lidar com problemas intratáveis. Dependendo da situação, algumas são mais adequadas do que outras. Ex. - Programação Dinâmica (Pseudo-polinomiais) - Heurísticas / Algoritmos de Aproximação - Backtracking - Algoritmos Randômicos
4
maio/2000katia@cin.ufpe.br4 Problema Soma dos Subconjuntos Entrada: n números naturais Saída: Existe uma bipartição dos números na entrada tal que as somas dos elementos em cada conjunto seja igual? Uma entrada poderia ser: 5 3 2 4 Abordagem: Programação Dinâmica
5
maio/2000katia@cin.ufpe.br5 Problema Soma dos Subconjuntos Entrada: 5 3 2 4 Abordagem: Programação Dinâmica 5 0 0 0 0 x 0 0 0 0 0 0 0 0 0 3 0 0 x 0 x 0 0 x 0 0 0 0 0 0 2 0 x x 0 x 0 x x 0 x 0 0 0 0 4 0 x x x x x x x x x x x 0 x Saída: Matriz [n, x i / 2] Custo: Tamanho da matriz = n x i (Pseudo-Polinomial)
6
maio/2000katia@cin.ufpe.br6 Problema Soma dos Subconjuntos Entrada: 7 3 2 4 Abordagem: Programação Dinâmica 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 7 0 0 0 0 0 0 x 0 0 0 0 0 0 0 0 0 3 0 0 x 0 0 0 x 0 0 x 0 0 0 0 0 0 2 0 x x 0 x 0 x 0 x x 0 x 0 0 0 0 4 0 x x x x x x 0 x x x x x x 0 x Saída: Matriz [4, 8]
7
maio/2000katia@cin.ufpe.br7 Algoritmo de Programação Dinâmica para Soma dos Subconjuntos soma 0 para i = 1.. n faça soma soma + A [i] para j = 0.. soma faça M [1, j] 0 /* Zera a 1ª. linha da matriz */ M [1, A[1] ] 1 /* Única soma possível = 1ºelem. do array */ para i = 2.. n faça para j = 1.. soma faça M [i, j] M [i-1, j] /* Copia linha anterior */ se (A[i] < j e M [i-1, j-A[i] ]=1) então M[i,j] 1 M [i, A[i] ] 1 devolva ( M [n, soma/2] )
8
0/1 Knapsack Problem ou Problema da Mochila maio/2000katia@cin.ufpe.br8
9
maio/2000katia@cin.ufpe.br9 0/1 Knapsack - Problema da Mochila Entrada: - Coleção de itens, com peso e valor - Capacidade C de uma mochila (container) Saída: - Relação de itens que caibam todos dentro da capacidade da mochila, maximizando o valor da carga. Aplicações: Problemas de acomodação e transporte de carga. Ex: Arrumação de Containers ou Ladrão em um museu. GREEDY RESOLVE?
10
maio/2000katia@cin.ufpe.br10 Knapsack - GREEDY RESOLVE? Estratégia Greedy: Tomar os itens em ordem por maior valor Dados: Capacidade: 30 Itens: A B C PESO 1020 30 VALOR 100 120 130 A abordagem Greedy escolheria quais itens? Qual seria a melhor escolha?
11
maio/2000katia@cin.ufpe.br11 Knapsack - GREEDY RESOLVE? Estratégia Greedy: Tomar os itens em ordem por menor peso Dados: Capacidade: 50 Itens: A B C PESO 10 20 30 VALOR 30 60 100 A abordagem Greedy escolheria quais itens? Qual seria a melhor escolha?
12
maio/2000katia@cin.ufpe.br12 Knapsack – Programação Dinâmica? Criar uma Formulação PD: Dados n itens e capacidade X, Construir tabela F, onde Linha 0 = 0 Linha i, 0<i<n, Considerar se vale a pena incluir item i na mochila, mesmo à custa da remoção de algum outro item já incluído.
13
maio/2000katia@cin.ufpe.br13 Heurísticas e Algoritmos de Aproximação Ex. Problema Bin-Packing Entrada: Números 0 < x < 1 Saída: Quantos bins de capacidade 1 são necessários para conter estes números? Uma entrada poderia ser:.4.3.4.5.7.6.5.6 Abordagem 1: FIRST FIT
14
maio/2000katia@cin.ufpe.br14 Bin-Packing Entrada:.4.3.4.5.7.6.5.6 Abordagem 1: FIRST FIT Saída: {.4,.3}, {.4,.5}, {.7}, {.6}, {.5}, {.6} Garantia do FIRST FIT: de bins 2 ótimo. Abordagem 2: DECREASING FIRST FIT
15
maio/2000katia@cin.ufpe.br15 Bin-Packing Entrada:.4.3.4.5.7.6.5.6 Abordagem 2: DECREASING FIRST FIT Saída: {.7,.3}, {.6,.4}, {.6,.4}, {.5,.5} Garantia do DECREASING FIRST FIT: de bins 1.25 ótimo.
16
maio/2000katia@cin.ufpe.br16 Problema Cobertura de Vértices INPUT: Grafo G = (V, E) OUTPUT: V’ V, |V’| mínimo, tal que α=(v, w) E, (v E) ou (w E). Heurística guloso seria uma solução?
17
maio/2000katia@cin.ufpe.br17 Problema Cobertura de Vértices O algoritmo guloso opera iterativamente, e a cada iteração toma um vértice de grau máximo. Mas a solução encontrada nem sempre é ótima. Qual seria o pior relacão entre uma solução obtida pelo algoritmo guloso e uma solução ótima?
18
maio/2000katia@cin.ufpe.br18 Problema Cobertura de Vértices Neste exemplo, guloso daria uma solução ótima. Qual seria o pior relacão entre uma solução obtida pelo algoritmo guloso e uma solução ótima? (Será que você descobre isso sem cursar Algoritmos 2?)
19
maio/2000katia@cin.ufpe.br19 Alg. de aproximação para Cobertura de Vértices 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 PERGUNTA : Qual a aproximação garantida?
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.