Your SlideShare is downloading. ×
0
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Teoria da complexidade
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Teoria da complexidade

1,832

Published on

Published in: Education
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,832
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
80
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Heurísticas e Metaheurísticas Thiago Ferreira de Noronha 1/93
  • 2. Sumário Introdução Tipos e classes de problemas Revisão de teoria da complexidade 2/93
  • 3. Introdução Thiago Ferreira de Noronha Professor do departamento de Ciência da computação da UFMG Áreas de pesquisa  Projeto de algoritmos para problemas de otimização combinatória ICEx, sala 4049, email: tfn@dcc.ufmg.br Adoro tomar café com algoritmos Detesto dar aula com slides 3/93
  • 4. Introdução Um algoritmo é uma sequência finita de instruções não ambíguas que podem ser executadas em um computador para se resolver algum problema. Heurísticas são algoritmos que nem sempre retornam a resposta (solução) correta (exata) para o problema que elas tratam. 4/93
  • 5. Introdução Um algoritmo é uma sequência finita de instruções não ambíguas que podem ser executadas em um computador para se resolver algum problema. Heurísticas são algoritmos que nem sempre retornam a resposta (solução) correta (exata) para o problema que elas tratam. Entretanto, espera-se que a resposta seja próxima da solução exata do problema. 5/93
  • 6. Introdução Um algoritmo é uma sequência finita de instruções não ambíguas que podem ser executadas em um computador para se resolver algum problema. Heurísticas são algoritmos que nem sempre retornam a resposta (solução) correta (exata) para o problema que elas tratam. Entretanto, espera-se que a resposta seja próxima da solução exata do problema. Utilizamos heurísticas em vários casos Quando o tempo gasto pelo melhor algoritmo que existe para o problema é maior que o disponível. Quando a quantidade de memória necessária para se resolver o problema é maior que a quantidade de memória disponível. Quando não se sabe como resolver o problema de forma exata. 6/93
  • 7. Teoria da Complexidade Estuda a complexidade inerente aos problemas computacionais e aos algoritmos que resolvem estes problemas. Complexidade de Algoritmos: Quais são os requisitos de tempo e de memória de um determinado algoritmo em função do tamanho da entrada? Complexidade de problemas: Qual é a complexidade do algoritmo de menor complexidade que resolve o problema? A complexidade de um algoritmo ou de um problema é dita polinomial se ela é limitada por um polinômio. Exemplo: O(n), O(n.logn), O(n3), O(n100) A complexidade de um algoritmo ou de um problema é dita exponencial, se ela cresce de acordo com uma função exponencial. Exemplo: O(2n) , O(n!), O(nn) 7/93
  • 8. Teoria da Complexidade Como saber (provar) a complexidade de um problema? A complexidade de um algoritmo que resolve o problema nos dá um limite superior para a complexidade do problema.  Problema da envoltória convexa  Resolvido em O(n2) pelo algoritmo incremental  Resolvido em O(n.logn) pelo algoritmo de Graham.  Dá para fazer melhor? 8/93
  • 9. Teoria da Complexidade Como saber (provar) a complexidade de um problema? (continuação) Limites inferiores para a complexidade de um problema P são geralmente calculados  analisando-se características estruturais de P, ou  por redução (transformação) de um outro problema para P. O problema de se calcular a envoltória convexa é (n),  já que todos os n pontos tem que ser carregados na memória. Ou seja, a complexidade do problema é maior ou igual a n e menor ou igual a n.log.n. 9/93
  • 10. Teoria da Complexidade Como saber (provar) a complexidade de um problema? (continuação) Vamos provar que a complexidade de se calcular a envoltória convexa de um conjunto de pontos é maior ou igual a complexidade de se ordenar um conjunto de pontos. Pode-se ordenar qualquer conjunto de números usando o seguinte algoritmo:  Transforme o problema de ordenação em um problema de envoltória convexa. O(n) • P = {(a, a2), (b, b2), (c, c2), ..., (z, z2)}  Resolva o problema resultante com o algoritmo de Graham. O(n.log n)  Percorra todos os pontos no polígono resultante e identifique o ponto com menor coordena no eixo das Abscissas (eixo X). O(n)  A partir deste ponto, percorra novamente todos os pontos no polígono e imprima sua coordenada X. O(n)  A complexidade deste algoritmo é T(n) = O(n) + O(n.log n) + O(n) + O(n) = O(n.log n) Está provado que a complexidade do problema de ordenação é (n.log n). Se a complexidade de se calcular envoltória convexa de um conjunto de pontos fosse O(n), poderíamos ordenar um conjunto de pontos em O(n). Como já está provado que isto é impossível, a complexidade se calcular a envoltória convexo de um conjunto de pontos é pelo menos (n.log n). 10/93
  • 11. Tipos de problemas Tipos de problemas computacionais Problemas de Decisão Problemas de Localização (ou de Busca) Problemas de Otimização Classe de problemas computacionais Classe NP de problemas Classe P de problemas Classe NPC (ou NP-Completo) de problemas 11/93
  • 12. Problemas de Decisão • Dado um conjunto P de pontos turísticos no Rio de Janeiro, existe um percurso turístico que passa por todos os pontos em P em um único dia? • Resposta: Sim ou Não. 12/93
  • 13. Problemas de Decisão Problema da Satisfabilidade (SAT) Dada uma expressão booleana E, existe uma atribuição de valores (verdadeiro ou falso) para as variáveis desta expressão tal que ela seja avaliada como verdadeira? x1 = V, x2 = F, x3 = F, x4 = V Muito importante na verificação de circuitos digitais 13/93
  • 14. Problemas de Localização • Dado um conjunto P de pontos turísticos no Rio de Janeiro, encontre um percurso turístico de um único dia que passa por todos os pontos em P. • Resposta: Percurso turístico. 14/93
  • 15. Problemas de Localização Problema de confecção de tabelas para campeonatos esportivos 15/93
  • 16. Problemas de Otimização • Dado um conjunto P de pontos turísticos no Rio de Janeiro, qual é percurso que passa por todos os pontos em P na menor quantidade de tempo possível. • Resposta: Percurso turístico (o mais rápido/melhor). 16/93
  • 17. Problemas de OtimizaçãoÁrvore geradora mínima (AGM):Teorema de Caley:Entrada: 1 2 1 2 3 1 17/93
  • 18. Problemas de OtimizaçãoProblema do Caixeiro viajante (PCV):Dado um grafo com custosassociados às arestas:encontrar um ciclo hamiltonianode comprimento mínimo. (5  1)! 2 18/93
  • 19. Tipos de Problemas (Resumo) Problemas de decisão: Pergunta: “existe uma determinada estrutura satisfazendo certa propriedade?” Resposta: “sim” ou “não”. Problemas de localização: Pergunta: “existe uma determinada estrutura satisfazendo certa propriedade?” Resposta: “a estrutura” (se houver). Problemas de otimização: Pergunta: “dentre todas as estruturas satisfazendo determinada propriedade, qual é aquela que otimiza (minimiza ou maximiza) certa função de custo?” Resposta: uma estrutura “ótima”. 19/93
  • 20. Classes de problemas A teoria da complexidade concentra-se nos problemas de decisão. As propriedades que são válidas para os problemas de decisão também são válidas para as versões de otimização do mesmo problema. Classe de problemas mais importantes para nós são: Classe NP de problemas Classe P de problemas Classe NPC (ou NP-Completo) de problemas 20/93
  • 21. Classe NP (Nondeterministic Polynomial-time) Problemas que podem ser resolvidos em tempo polinomial em máquinas de Turing não determinísticas. A máquina de Turing é um modelo teórico de um computador que pode simular a lógica de qualquer algoritmo. Quando a resposta do problema é sim, pode-se apresentar um certificado para esta resposta, que por sua vez pode ser verificado em tempo polinomial. Nenhuma condição é estabelecida para o caso da resposta ser não. Classe dos problemas cuja viabilidade de uma solução pode ser verificada em tempo polinomial. 21/93
  • 22. Classe P (Deterministic Polynomial-time) Problema que podem ser resolvidos em tempo polinomial em máquinas de Turing determinísticas. P é um subconjunto da classe NP. Exemplos de problemas da classe P: Ordenação; Caminhos mais curtos em um grafo; Árvore geradora de peso mínimo; Fluxo máximo (corte mínimo); Programação linear. Existem problemas em NP que não podem ser resolvidos em tempo polinomial? P = NP? 22/93
  • 23. Classes NPC (NP-Complete) e NPH (NP-Hard) Em 1971, Stephen Cook provou que todos os problemas em NP podem ser reduzidos (transformados) no Problema da Satisfabilidade (SAT) em tempo polinomial. Transformação polinomial: um problema de decisão A transforma-se polinomialmente em outro problema de decisão B se: dada qualquer entrada IA para o problema A, pode-se construir uma entrada IB para o problema B em tempo polinomial. de tal forma que IA é uma instância “sim” para A se e somente se IB é uma instância “sim” para B. 23/93
  • 24. Classes NPC (NP-Complete) e NPH (NP-Hard) A consequência do teorema de Cook é que se existir uma algoritmo polinomial (O(nk)) ALG para SAT, existe um algoritmo polinomial para qualquer problema de decisão D  NP. Transforme D em SAT. O(nk). Resolva o problema resultante com o algoritmo ALG. O(nl) Se a resposta do respectivos problema de SAT for sim, a resposta para D também é sim. A complexidade deste algoritmo é T(n) = O(nk) + O(nl) = O(nmax(k,l)). Até hoje, ninguém conseguiu projetar um algoritmo polinomial para SAT. 24/93
  • 25. Classe NPC (NP-Complete) Na busca de algoritmos polinomiais para SAT, diversos autores propuseram a transformações polinomiais de SAT para outros problemas. 3-SAT, Clique, ect. Classe NPC (NP-Complete): um problema de decisão D  NP é dito NP ̶ Completo quando qualquer outro problema de NP pode ser transformado polinomialmente em D. Conseqüência forte: se existir um algoritmo polinomial para a resolução de algum problema NP ̶ completo, então todos os problemas da classe NP também poderão ser resolvidos em tempo polinomial; Até hoje, ninguém conseguiu projetar um algoritmo polinomial para nenhum problema em NPC. 25/93
  • 26. Classe NPH (NP-Hard) Classe NP-H (NP-Hard): classe dos problemas NP ̶ árduos ou NP ̶ difíceis: Problemas nos quais qualquer problema em NP pode ser transformado, mas estes por sua vez não estão em NP. Problemas de otimização cujo problema de decisão associado é NP ̶ completo. Diversos problemas com grande importância prática e teórica enquadram-se nesta classe de problemas. 26/93
  • 27. Classe NPH (NP-Hard) Como tratar na prática os problemas NP ̶ difíceis? Métodos exatos de complexidade super ̶ polinomial  B&B, B&C, B&P, etc. Algoritmos pseudo-polinomiais  Problema da Mochila Identificação de casos particulares polinomiais.  Coloração de Grafos Algoritmos aproximativos  Algoritmos polinomiais que não garantem a solução ótima do problema, mas garantem um desvio máximo entre o custo solução retornada e o custo da solução ótima.  Algoritmo de Christofides para TSP: 1.5-aproximativo. Heurísticas/Metaheurísticas  Realizam uma busca no espaço de soluções e armazenam a melhor solução encontrada.  Não dão garantia de custo da solução retornada, mas  através de experimentos computacionais pode-se mostrar que o custo da solução retornada é próximo do custo da solução ótimo (e.g. até 10%). 27/93
  • 28. Heurísticas Classificação Heurísticas construtivas Heurísticas de busca  Metaheurísticas 28/93

×