Definições Abordagens para Problemas Intratáveis Letícia Rodrigues Bueno UFABC Definições Motivação Se você se depara com um problema intratável... Definições Motivação Se você se depara com um problema intratável... I can’t find an efficient algorithm, but neither can all these famous people. Fonte: GAREY, M. R. e JOHNSON, D. S. Computers and Intractability. A guide to the theory of NP-Completeness, Definições Motivação ...e não pode usar alternativas como eBay... Fonte: http://xkcd.com/399/ Definições Motivação ...mas ainda precisa de uma solução... Definições Motivação ...mas ainda precisa de uma solução... "You are on your own!" Fonte: GAREY, M. R. e JOHNSON, D. S. Computers and Intractability. A guide to the theory of NP-Completeness, W.H. Freeman and Company: New York, 1979. Definições Algumas Abordagens ...há problemas NP-completos que admitem um tratamento razoável desde que algumas concessões sejam feitas (relaxações): Definições Algumas Abordagens ...há problemas NP-completos que admitem um tratamento razoável desde que algumas concessões sejam feitas (relaxações): 1. Algoritmos heurísticos: fornecem soluções sem limite formal de qualidade, avaliação empírica de complexidade e qualidade das soluções. Exemplos: algoritmos gulosos, Simulated Annealing, busca tabu, algoritmos genéticos, ant system, etc; Definições Algumas Abordagens ...há problemas NP-completos que admitem um tratamento razoável desde que algumas concessões sejam feitas (relaxações): 1. Algoritmos heurísticos: fornecem soluções sem limite formal de qualidade, avaliação empírica de complexidade e qualidade das soluções. Exemplos: algoritmos gulosos, Simulated Annealing, busca tabu, algoritmos genéticos, ant system, etc; 2. Algoritmos randomizados: fornecem melhor solução possível com probabilidade (alta) conhecida em tempo execução determinístico (Monte Carlo) e/ou fornecem melhor solução possível em tempo execução que é variável aleatória (Las Vegas); Definições Algumas Abordagens 1. Algoritmos aproximativos: fornecem soluções que estão a um fator ǫ da melhor solução possível; Definições Algumas Abordagens 1. Algoritmos aproximativos: fornecem soluções que estão a um fator ǫ da melhor solução possível; 2. Algoritmos paralelos: fornecem soluções pelo uso de computadores com grande poder de processamento e do princípio de que alguns problemas grandes podem ser divididos em problemas menores que então são resolvidos em paralelo. Definições Heurísticas: Algoritmos Gulosos • heurística que faz a escolha localmente ótima a cada estágio com a esperança de encontrar o ótimo global. Definições Heurísticas: Algoritmos Gulosos • heurística que faz a escolha localmente ótima a cada estágio com a esperança de encontrar o ótimo global. • Problemas com subestrutura ótima: se solução ótima contém dentro dela soluções ótimas para subproblemas; Definições Algoritmo Guloso Bem-sucedido Caminho mínimo de fonte única (algoritmo de Dijkstra): t x 1 10 s 9 2 3 4 5 6 7 y 2 z Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Algoritmo Guloso Bem-sucedido Caminho mínimo de fonte única (algoritmo de Dijkstra): t ∞ x 1 ∞ 10 s 0 9 2 3 4 5 6 7 ∞ y 2 ∞ z Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Algoritmo Guloso Bem-sucedido Caminho mínimo de fonte única (algoritmo de Dijkstra): t ∞ x 1 ∞ 10 s 0 9 2 3 4 5 6 7 ∞ y 2 ∞ z Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Algoritmo Guloso Bem-sucedido Caminho mínimo de fonte única (algoritmo de Dijkstra): 10 t x 1 ∞ 10 s 0 9 2 3 4 5 6 7 5 y 2 ∞ z Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Algoritmo Guloso Bem-sucedido Caminho mínimo de fonte única (algoritmo de Dijkstra): 8 t x 1 14 10 s 0 9 2 3 4 5 6 7 5 y 2 z 7 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Algoritmo Guloso Bem-sucedido Caminho mínimo de fonte única (algoritmo de Dijkstra): 8 t x 1 13 10 s 0 9 2 3 4 5 6 7 5 y 2 z 7 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Algoritmo Guloso Bem-sucedido Caminho mínimo de fonte única (algoritmo de Dijkstra): 8 t x 1 9 10 s 0 9 2 3 4 5 6 7 5 y 2 z 7 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Algoritmo Guloso Bem-sucedido Caminho mínimo de fonte única (algoritmo de Dijkstra): 8 t x 1 9 10 s 0 9 2 3 4 5 6 7 5 y 2 z 7 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Algoritmo Guloso Mal-sucedido Problema do Caixeiro Viajante: c1 4 9 5 c4 8 c3 8 3 c2 Definições Algoritmo Guloso Mal-sucedido Problema do Caixeiro Viajante: c1 4 9 5 c4 8 c3 8 3 c2 Definições Algoritmo Guloso Mal-sucedido Problema do Caixeiro Viajante: c1 4 9 5 c4 8 c3 8 3 c2 Definições Algoritmo Guloso Mal-sucedido Problema do Caixeiro Viajante: c1 4 9 5 c4 8 c3 8 3 c2 Definições Algoritmo Guloso Mal-sucedido Problema do Caixeiro Viajante: c1 4 9 5 c4 8 c3 8 3 c2 Definições Algoritmo Guloso Mal-sucedido Problema do Caixeiro Viajante: c1 4 9 5 c4 8 c3 3 8 Custo: 25 c2 Definições Algoritmo Guloso Mal-sucedido Problema do Caixeiro Viajante: c1 4 9 5 c4 8 c3 3 8 Custo: 24 c2 Definições Algoritmo Guloso Mal-sucedido Problema da Mochila 0 − 1: Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Algoritmo Guloso Mal-sucedido Problema da Mochila 0 − 1: item 3 50 item 2 item 1 30 20 10 R$60 R$100 R$120 Mochila Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Algoritmo Guloso Mal-sucedido Problema da Mochila 0 − 1: item 3 item 2 item 1 30 R$120 + 30 20 20 R$100 10 R$60 R$100 R$120 Mochila=R$220 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Algoritmo Guloso Mal-sucedido Problema da Mochila 0 − 1: item 3 item 2 item 1 20 10 R$60 20 R$100 30 + 10 R$60 R$100 R$120 Mochila=R$160 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Algoritmo Guloso Mal-sucedido Problema da Mochila 0 − 1: item 3 30 item 2 R$120 item 1 30 20 10 R$60 + 10 R$60 R$100 R$120 Mochila=R$180 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Algoritmo Guloso Bem-sucedido Problema da Mochila Fracionária: item 3 50 item 2 item 1 30 20 10 R$60 R$100 R$120 Mochila Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Algoritmo Guloso Bem-sucedido Problema da Mochila Fracionária: 20/30 item 3 item 2 item 1 20 R$60 + 20 R$100 30 10 R$80 + 10 R$60 R$100 R$120 Mochila=R$240 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Programação Dinâmica • Método de resolução de problemas complexos que os quebra em subproblemas mais simples (procura resolver cada subproblema somente uma vez, tentando reduzir o número de computações); • Problema da Mochila 0 − 1; • Multiplicação de Matrizes; Definições Exemplo de Programação Dinâmica Programação de linha de montagem: 2 7 9 3 2 2 4 8 4 3 1 5 8 1 3 2 6 2 4 4 3 7 2 4 1 5 f1 f2 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Exemplo de Programação Dinâmica Programação de linha de montagem: 2 7 9 3 2 2 4 8 4 3 1 5 8 1 3 2 6 2 4 4 3 7 2 4 1 5 f1 9 f2 12 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Exemplo de Programação Dinâmica Programação de linha de montagem: 2 7 9 3 2 2 4 8 4 3 1 5 8 1 3 2 6 2 4 4 3 7 2 4 1 5 f1 9 18 f2 12 16 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Exemplo de Programação Dinâmica Programação de linha de montagem: 2 7 9 3 2 2 4 8 4 3 1 5 8 1 3 2 6 2 4 4 3 7 2 4 1 5 f1 9 18 20 f2 12 16 22 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Exemplo de Programação Dinâmica Programação de linha de montagem: 2 7 9 3 2 2 4 8 4 3 1 5 8 1 3 2 6 2 4 4 3 7 2 4 1 5 f1 9 18 20 24 f2 12 16 22 25 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Exemplo de Programação Dinâmica Programação de linha de montagem: 2 7 9 3 2 2 4 8 4 3 1 5 8 1 3 2 6 2 4 4 3 7 2 4 1 5 f1 9 18 20 24 32 f2 12 16 22 25 30 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Exemplo de Programação Dinâmica Programação de linha de montagem: 2 7 9 3 2 2 4 8 4 3 1 5 8 1 3 2 6 2 4 4 3 7 2 4 1 5 f1 9 18 20 24 32 35 f2 12 16 22 25 30 37 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Exemplo de Programação Dinâmica Programação de linha de montagem: 2 7 9 3 2 2 4 8 4 3 1 5 8 1 3 2 6 2 4 4 3 7 2 4 1 5 f1 9 18 20 24 32 35 f2 12 16 22 25 30 37 Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press, 2009. Definições Bibliografia CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L. e STEIN, C. Introduction to Algorithms, 3a edição, MIT Press, 2009. GAREY, M. R. e JOHNSON, D. S. Computers and Intractability. A guide to the theory of NP-Completeness, W.H. Freeman and Company: New York, 1979. ZIVIANI, N. Projeto de Algoritmos: com implementações em Pascal e C, 2a edição, Cengage Learning, 2009.