21
Análise e Complexidade de Algoritmos Uma visão de Intratabilidade, Classes P e NP - redução polinomial - NP-completos e NP-difíceis http://www.bolinhabolinha.com Prof. Rodrigo Rocha [email protected]

Análise e Complexidade de Algoritmos

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Análise e Complexidade de Algoritmos

Análise e Complexidade de AlgoritmosUma visão de Intratabilidade, Classes P e NP- redução polinomial- NP-completos e NP-difíceis

http://www.bolinhabolinha.comProf. Rodrigo [email protected]

Page 2: Análise e Complexidade de Algoritmos

Onde Estamos Ementa

• Revisão:Estrutura de dados;Crescimento de funções; Indução matemática e métodos matemáticos.

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.

Page 3: Análise e Complexidade de Algoritmos

Introdução

P vs NP 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 exponencialEx: pesquisa binária (O(log n)), pesquisa sequencial

(O(n)), ordenação por inserção (O(n2)), e multiplicação de matrizes (O(n3)).

Page 4: Análise e Complexidade de Algoritmos

Algumas Definições

Page 5: Análise e Complexidade de Algoritmos

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

.

Page 6: Análise e Complexidade de Algoritmos

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.

Page 7: Análise e Complexidade de Algoritmos

Algoritmos não determinísticos 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

Page 8: Análise e Complexidade de Algoritmos

Exemplo

Page 9: Análise e Complexidade de Algoritmos

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

Page 10: Análise e Complexidade de Algoritmos

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 PretoJundiaí 0 54 17 79

Campinas 54 0 49 104SP 17 49 0 91

Rib. Preto 79 109 91 0

Page 11: Análise e Complexidade de Algoritmos

Caixeiro-viajante

Rota Km TotaisJ-C-S-R-JJ-C-R-S-JJ-S-R-C-JJ-S-C-R-JJ-R-C-S-JJ-R-S-C-J

54+49+91+79=27354+104+91+17=26617+91+109+54=27117+49+107+79=24979+109+49+17=25479+91+49+54=273

Page 12: Análise e Complexidade de Algoritmos

Caixeiro-viajante

Para 3 cidades• 3 x 2 x 1 = 6três possibilidades, depois duas, depois uma

• E para 10 Cidades10x9x8x7x6x5x4x3x2x1=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.8003628800/124800 = 29 ... Mais de 20 anos

Page 13: Análise e Complexidade de Algoritmos

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(ne) Algoritmos que não são polinomiais são considerados

exponenciais• exemplo: 2n, 5n

Page 14: Análise e Complexidade de Algoritmos

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

Page 15: Análise e Complexidade de Algoritmos

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 NP-completos (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-completo

NP

Page 16: Análise e Complexidade de Algoritmos

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,00Oferecido pelo milionário americano Landon Clay,

Page 17: Análise e Complexidade de Algoritmos

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?

Page 18: Análise e Complexidade de Algoritmos

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

Page 19: Análise e Complexidade de Algoritmos

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).

Page 20: Análise e Complexidade de Algoritmos

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

BA R→

⇒→

⇒→

⇒→

BA

BA

BA

R

R

R

∃ alg. pol. B∃ algoritmo polinomial para A

∃ algoritmo polinomial para B∃ alg. pol. A

∃ alg. pol. B???

Page 21: Análise e Complexidade de Algoritmos

Animações na web

Caixeiro viajante• 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/tsp-

usa-spiel/tsp.html