Análise e Complexidade de Algoritmos Uma visão de Intratabilidade, Classes P e NP - redução polinomial - NP-completos e NP-difíceis Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com http://www.bolinhabolinha.com
Ementa Revisão: Estrutura de dados;crescimento de funções; Indução matemática e métodos matemáticos. Onde Estamos Medidas de complexidade, análise assintótica de limites de complexidades. Exemplos de análise de algoritmo iterativos e recursivos. Análise de desempenho de alguns algoritmos clássicos de busca e ordenação. Introdução aos principais paradigmas do projeto de algoritmos. Complexidade do Problema: Limites de Complexidade, Intratabilidade, Classes P, NP, problemas Np completos e NP-difíceis.
P vs NP Introdução Relativamente fácil compreender o que diz o problema É possível que seja resolvido com um boa idéia sem muito conhecimento técnico em matemática Complexidade na maioria dos problemas Polinomial ou exponencial Ex: pesquisa binária (O(log n)), pesquisa sequencial (O(n)), ordenação por inserção (O(n2)), e multiplicação de matrizes (O(n3)).
Algumas Definições
Classe dos problemas problemas - uma descrição genérica de todos os seus parâmetros; - especificação das propriedades que a resposta ou solução deve satisfazer. 3 gêneros de problemas decisão Saída simples (sim/não) Exemplo: Cobertura de vértices de um grafo G = < V, E > é um subconjunto V' V tal que toda aresta de E tenha pelo menos uma extremidade em V'. localização exige a exibição de uma solução, envolve a procura de um elemento que satisfaça a condição de solução, Exemplo: otimização problemas de localização que satisfaçam propriedades de otimização além de mostrar a solução exige que maximize ou minimize algum critério. Seja ótimo.
Um algoritmo que resolve um problema de localização ou de otimização pode ser modificado para resolver o problema de decisão associado, praticamente sem esforço extra. Por isso questões como intratabilidade são estudadas no âmbito dos problemas de decisão (que são mais simples). Assim, as mais importantes classes de problemas, P, NP e NP-completa, são definidas para problemas de decisão. Para expressar precisamente o requisito de tempo, é preciso ter o cuidado de definir o tamanho da entrada de maneira a levar em conta esses fatores. O tamanho da entrada de uma instância x de um problema Π é definido como o número de símbolos na descrição de x obtido em um esquema de codificação do problema Π. Um algoritmo é polinomial sse sua complexidade é de tempo polinomial: Ο( p( n ) ), onde p( n ) é um polinômio, e n representa o tamanho da entrada.
Determinísticos Algoritmos não determinísticos resolvem o problema com uma decisão exata a cada passo Não Determinísticos Algoritmos teóricos duas fases não determinística geração de dados aleatórios determinística algoritmo lê os dados gerados testa pode acontecer» parar com a resposta SIM» para com a resposta NÃO» não parar
Exemplo
Tipos de problemas Tratáveis podem ser resolvidos em tempo polinomial Intratáveis / Difícil nenhum algoritmo polinomial pode resolvê-lo Problema algoritmo Dados Objetivo Solução
Caixeiro-viajante Imagine que você é um vendedor sediado em Jundiaí e tem que ir de carro a outras três cidades Campinas, São Paulo e Ribeirão Preto. Começando e terminando em Jundiaí. Para economizar gasolina e tempo, você deve planejar o trajeto, de forma que a distância percorrida seja mínima. Jundiaí Campinas SP Rib Preto Jundiaí 0 54 17 79 Campinas 54 0 49 104 SP 17 49 0 91 Rib. Preto 79 109 91 0
Caixeiro-viajante J-C-S-R-J J-C-R-S-J J-S-R-C-J J-S-C-R-J J-R-C-S-J J-R-S-C-J Rota Km Totais 54+49+91+79=273 54+104+91+17=266 17+91+109+54=271 17+49+107+79=249 79+109+49+17=254 79+91+49+54=273
Caixeiro-viajante Para 3 cidades 3 x 2 x 1 = 6 três possibilidades, depois duas, depois uma E para 10 Cidades 10x9x8x7x6x5x4x3x2x1=3.628.800 =10! Levando 1 minuto para calcular cada rota trabalhando 8h/dia 5 dias 52 semanas por ano =por ano 2080*60 minutos = 124.800 3628800/124800 = 29... Mais de 20 anos
Introdução Existem problemas computacionais muito difíceis de serem resolvidos, ou resolvidos em um tempo satisfatório Estudamos as complexidades polinomiais, isto é, pior caso = O(n e ) Algoritmos que não são polinomiais são considerados exponenciais exemplo: 2 n, 5 n
Classes de Complexidade P problemas são resolvidos em tempo polinomial NP problemas não deterministicamente polinomial são verificáveis em tempo polinomial conjunto de problemas que podem ser resolvidos em tempo polinomial em um computador não determinístico são semelhantes a algoritmos que são resolvidos com algoritmos polinomiais não foi provado que não existe algoritmo polinomial que o resolva
NP Completos Os chamados problemas NP-completos são problemas que têm a questão da complexidade ou tratabilidade não resolvida, pois não se sabe se existe ou não algoritmo polinomial que o resolva. é o subconjunto dos "mais difíceis" problemas não-determinísticos polinomiais Há dois fatos a considerar: - por um lado, sabe-se que se um problema NP-completo qualquer tiver um algoritmo polinomial que o resolva então todos os problemas NPcompletos (centenas ou milhares) também possuirão algoritmos polinomiais; - por outro lado, nenhum algoritmo polinomial para esses problemas foi desenvolvido até o momento. P NP NP-completo
Stephen Cook Completude NP Se a descoberta de um procedimento em tempo polinomial para sua solução implicar que todos os outros problemas NP podem ser resolvidos por um programa em tempo polinomial. Discussão do problema aberta em computação NP contém P, mas não se sabe se NP = P Vale U$ 1.000.000,00 Oferecido pelo milionário americano Landon Clay,
Exemplo clássicos NP completo Caixeiro Viajante: existe um ciclo que percorra todos os vértices do grafo com um custo B? Coloração de Grafos: pode um grafo ser adequadamente colorido com n cores? Vértices adjacentes com cores diferentes Mochila: existe uma combinação de itens que dê um lucro L, respeitando o limite de peso?
Exemplo clássicos NP completo Cobertura de Arestas e Vértices Ciclo Hamilton Caminho que passa por todos os vértices uma única vez e retorna ao vértice inicial. Clique do Grafo Toda vértice v é adjacente a um grafo completo
Satisfabilidade (SAT) Verificar se uma expressão pode ser satisfeita consiste em se verificar se existe alguma forma de se atribuir valores V ou F para as variáveis, de tal forma que a expressão seja verdadeira. Problema da Parada Determinar, para um algoritmo determinístico qualquer A com entrada de dados E, se o algoritmo A termina (ou entra em um loop infinito).
A R B Redução Polinomial A reduz polinomialmente ao problema B se existir um algoritmo para resolver A que utiliza um número polinomial de vezes um algoritmo para resolver B R A B alg. pol. B R A B alg. pol. A R A B alg. pol. B algoritmo polinomial para A algoritmo polinomial para B???
Caixeiro viajante Animações na web http://web.telia.com/~u85905224/tsp/tsp.htm Game http://www.tsp.gatech.edu/games/tsponeplayer.ht ml http://www-m9.ma.tum.de/dm/java-applets/tspusa-spiel/tsp.html