P, NP e NP-Completo. André Vignatti DINF- UFPR

Documentos relacionados
Reduções de Problemas Difíceis

Redução de Cook-Levin e Considerações Finais

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

Complexidade computacional

Busca e Decisão. Problemas de Otimização. Kakuro. P e NP. Pode-se resolver o Kakuro somente resolvendo problemas de decisão?

Teoria da Computação. Computabilidade

Como saber se um problema está em NP e não está em P?

Complexidade de Algoritmos. Edson Prestes

5COP096 TeoriadaComputação

Teoria da Computação. Complexidade computacional classes de problemas

Agenda. Complexidade Não Determinista A classe NP. A classe Co-NP Reduções de tempo polinomial. Definida por. Exemplos em:

Projeto e Análise de Algoritmos NP Completude Parte 2. Prof. Humberto Brandão

Complexidade de Algoritmos. Edson Prestes

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

PCC104 - Projeto e Análise de Algoritmos

Introdução à classe de problemas NP- Completos

Teoria da Complexidade Computacional

INTRATABILIDADE e NP-COMPLETUDE

TEMA 2 PROPRIEDADES DE ORDEM NO CONJUNTO DOS NÚMEROS REAIS

Departamento de Engenharia de Produção UFPR 22

Análise e Projeto de Algoritmos

PCC104 - Projeto e Análise de Algoritmos

Volmir Eugênio Wilhelm Departamento de Engenharia de Produção UFPR 21

Melhores momentos AULA 24. Algoritmos p.906/953

Uma introdução à complexidade parametrizada

Problemas NP-completos

Algoritmos de aproximação

ANÁLISE DE ALGORITMOS (INF 1721)

Análise e Projeto de Algoritmos

Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos.

Aula 10: Tratabilidade

TEORIA DE COMPLEXIDADE

NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016

Aula 01. Murilo V. G. da Silva DINF/UFPR

Aula 13: Branch-and-bound

Redutibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)

Algoritmos de Aproximação para o Problema do Caixeiro Viajante

Análise e Síntese de Algoritmos

ANÁLISE DE ALGORITMOS (INF 1721)

Redução polinomial. Permite comparar o grau de complexidade de problemas diferentes.

Para muitos problemas computacionais, algoritmos razoáveis não existem!

Lógica Proposicional Parte 3

Algoritmos para Automação e Sistemas

Algoritmos de aproximação - Problema do caixeiro viajante

Teoria da Complexidade Computacional

Equações exponenciais

Análise de Algoritmos. Slides de Paulo Feofiloff

Material Teórico - Módulo Equações do Segundo Grau. Equações de Segundo Grau: outros resultados importantes. Nono Ano do Ensino Funcamental

Números Inteiros Axiomas e Resultados Simples

LIMITES COMPUTACIONAIS E O FUTURO. Prof. André Vignatti DINF - UFPR

3. Resolução de problemas por meio de busca

Lógica Proposicional Parte 2

Análise e Complexidade de Algoritmos

PERCURSOS. André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré

Aula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Capítulo 16: Grafos Planares. Departamento de Matemática Aplicada

Otimização Combinatória - Parte 4

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE I. Prof. Dr. Daniel Caetano

TESTES DE PRIMALIDADE

LÓGICA DE PROGRAMAÇÃO INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE I PARA ENGENHARIA. Prof. Dr. Daniel Caetano

Marcos Castilho. DInf/UFPR. 16 de maio de 2019

EQUAÇÕES POLINOMIAIS

Resolução de sistemas de equações lineares: Fatorações de matrizes

ANÁLISE DE ALGORITMOS

INE0003 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Transcrição:

P, NP e NP-Completo André Vignatti DINF- UFPR

Problemas Difíceis, Problemas Fáceis O mundo está cheio de problemas de busca. Alguns podem ser resolvidos eficientemente, outros parecem ser muito difíceis. Isto é descrito na tabela a seguir: Problemas difíceis 3SAT CAIXEIRO VIAJANTE LONGEST PATH 3D MATCHING MOCHILA INDEPENDENT SET ZERO-ONE EQUATIONS RUDRATA PATH MAXIMUM CUT Problemas fáceis 2SAT, HORN SAT ÁRVORE GERADORA MÍNIMA SHORTEST PATH BIPARTITE MATCHING MOCHILA fracionária INDEPENDENT SET em árvores ZOE fracionário EULER PATH MINIMUM CUT

Problemas Difíceis, Problemas Fáceis Na direita temos problemas que são resolvidos eficientemente. À esquerda, temos nozes duras que escaparam da solução eficiente durante décadas ou séculos. Os problemas à direita são resolvidos por algoritmos especializados e diversos: programação dinâmica, fluxo de rede, busca em grafo, gulosos. Estes problemas são fáceis por várias razões diferentes.

Problemas Difíceis, Problemas Fáceis Em contraste, os problemas da esquerda são todos difíceis pela mesma e única razão: No fundo, eles são todos o mesmo problema, apenas com diferentes disfarces! Em outras palavras... Todos são equivalentes: cada um pode ser reduzido a qualquer outro e vice-versa.

NP (a.k.a Problemas de Busca) É hora de introduzir alguns conceitos importantes. Lembrando: um problema de busca é aquele onde uma solução proposta pode ser rapidamente verificado quanto à correção. Denotamos a classe de todos os problemas de busca como NP. Definição: Classe NP A classe NP é a classe de TODOS os problemas de busca.

P Muitos problemas NP (i.e, de busca) podem ser resolvidos em tempo polinomial. Nesses casos, existe algoritmo que recebe uma instância I e tem tempo de execução polinomial em função de I. Se I tem solução, o algoritmo a retorna, caso contrário o algoritmo diz que não há solução. Definição: Classe P A classe P é a classe de TODOS os problemas de busca que são resolvidos em tempo polinomial. Os problemas de busca no lado direito da tabela estão em P.

P NP P NP A definição de P é igual a NP, mas P tem uma restrição a mais (deve ser de tempo polinomial) Isso faz com que P seja uma sub-classe (talvez igual) de NP. Ou seja, P NP.

Por que P e NP? P vem de polynomial time NP significa nondeterministic polynomial time, um termo que remonta às raízes da teoria da complexidade Abre-parênteses: Algoritmo Não Determinístico Um algoritmo não determinístico é um tipo especial (e bastante irreal) de algoritmo que adivinha corretamente em todos os passos. Assim, NP são os problemas cuja solução pode ser encontrada e verificada em tempo polinomial por um algoritmo não determinístico.

Por que P e NP? Aliás, a definição original de NP (e seu uso mais comum até hoje) não foi para problemas de busca, mas para problemas de decisão: Problemas de Decisão: São perguntas algorítmicas que podem ser respondidas por SIM ou NÃO. Exemplo: Existe atribuição que satisfaz esta fórmula booleana? Isso reflete uma realidade histórica: na época, a teoria da NP-completude era desenvolvida por pesquisadores interessados em linguagens formais e lógica, onde problemas de decisão são de importância central.

P NP? Existem problemas de busca que NÃO podem ser resolvido em tempo polinomial? Em outras palavras... P NP? A maioria dos pesquisadores de algoritmos acha que sim: É difícil acreditar que uma busca de tempo exponencial sempre possa ser evitada, ou que um simples truque vai desfazer a dificuldade de todos estes problemas difíceis

P NP? Os matemáticos também acreditam que P NP: Encontrar uma prova para uma proposição matemática é um problema de busca e, portanto, está em NP. Quando uma prova é escrita em detalhes, ela pode ser verificada de forma mecânica, linha por linha, por um algoritmo eficiente. Então, se P = NP, haveria um método eficiente para provar qualquer teorema, portanto, eliminando a necessidade de matemáticos!

P NP? Somando tudo, há várias razões pelas quais acredita-se a P NP. No entanto, provar isso se mostrou extremamente difícil Ninguém conseguiu até hoje, a cada 6 meses sai uma prova (errada) disso. É um dos enigmas mais profundos e importantes não resolvidos da matemática.

Reduções, novamente A maioria das pessoas acredita que P NP Em quais evidências elas se baseiam? (Além da discussão informal de antes) Tal evidência é fornecida por reduções. As reduções demonstram que os problemas no lado esquerdo da tabela anterior são exatamente o mesmo problema. Obviamente, eles são apresentados em diferentes formas, mas no fundo são todos iguais.

Reduções, novamente Então, se resolvermos um deles em tempo polinomial, resolvemos todos os outros da tabela. Mas não se trata somente dos problemas da tabela... Além disso, usaremos reduções que mostram que tais problemas são os problemas de busca mais difíceis em NP Pare para pensar: eles são os problemas MAIS DIFÍCEIS, englobam todos os outros. E são equivalentes entre si. Os problemas mais difíceis de ser resolver: Se eles são os mais difíceis de NP e resolvermos eficientemente somente um deles, então resolvemos eficientemente todos os problemas em NP.

Reduções, novamente Para tentar entender essas coisas esquisitas, vamos especializar a definição de redução para problemas de busca. Reduções (para problemas NP) Uma redução de um problema de busca A para um problema de busca B são dois algoritmos de tempo polinomial f e h que: f transforma qualquer instância I de A em uma instância f (I) de B, h transforma qualquer solução S de f (I) de volta em uma solução h(s) de I, Se f (I) não tem solução, então I também não tem.

Reduções, novamente Algoritmo para A Instância I f Instância f(i) Algoritmo para B Solução S de f(i) h Solução h(s) de I Sem solução para f(i) Sem solução para I

NP-Completo Agora podemos finalmente definir a classe dos problemas mais difíceis da busca: Classe NP-Completo Um problema de busca é NP-completo se todos os problemas de busca se reduzem a ele. Esta é uma exigência muito forte! Para um problema ser NP-completo, ele deve poder resolver todos os problemas de busca do mundo!

NP-Completo Seria muito notável e muito impressionante se tais problemas existissem! DE FATO ELES EXISTEM: os problemas da coluna esquerda da tabela que vimos anteriormente são os exemplos mais famosos. Objetivos da disciplina a partir de agora Nas próximas aulas, nosso objetivo será: 1 Ver as reduções entre esses problemas difíceis. 2 Entender como todos os problemas de busca se reduzem a eles.

As Duas Maneiras de Usar Reduções Até agora o propósito de uma redução de um problema A para B foi simples e honrosa: Sabemos como resolver B de forma eficiente, e queremos usar esse conhecimento para resolver A. De certa forma, B é mais genérico (mais difícil) que A. No entanto, as reduções de A para B servem também para um objetivo mais perverso: Sabemos que A é difícil, e nós usamos a redução para provar que B é difícil também!

Algumas Exceções FATORAÇÃO: Encontre todos os fatores primos de um número inteiro dado. A dificuldade de FATORAÇÃO é de uma natureza diferente dos outros problemas de busca difíceis. Por exemplo, ninguém acredita que FATORAÇÃO seja NP-Completo. Uma diferença importante é que neste problema não temos a frase (agora já familiar) ou diga que não existe. Um número SEMPRE pode ser fatorado em números primos.

Algumas Exceções Outra diferença (possivelmente relacionada): FATORAÇÃO sucumbe ao poder da computação quântica, enquanto SAT, TSP e as outros problemas NP-Completos até agora não... Na Prática: A grande maioria dos problema em NP que se conhece estão em P ou NP-Completo. Notáveis exceções (além da fatoração): Isomorfismo de Grafos, Equilíbrio de Nash.