Liliane Salgado liliane@cin.ufpe.br NP-Completude Liliane Salgado liliane@cin.ufpe.br.

Slides:



Advertisements
Apresentações semelhantes
Decidibilidade e Indecidibilidade
Advertisements

Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Python: Recursão Claudio Esperança.
Programação em Java Prof. Maurício Braga
Fluxo em Redes Prof. Ricardo R. Santos.
Complexidade de Algoritmos
A Classe de Problemas NP
Programação Linear Método Simplex
Análise Projeto de Algoritmos
Teoria dos Grafos Loana T. Nogueira Aula 5.
Algoritmos e Estruturas de Dados
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP.
Medida do Tempo de Execução de um Programa
NÃO DETERMINISMO Marcus Eduardo Cabral Seabra
Carolina Fonseca Neumar Ribeiro
Dividir-e-Conquistar
Daniel Felipe Neves Martins
Introdução à NP-completude
Problemas NP-completo
INF 1771 – Inteligência Artificial
Aula T04 – BCC202 Análise de Algoritmos (Parte 2) Túlio Toffolo www
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Informática Teórica Engenharia da Computação
Prof. Roberto Cristóvão
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Teoria dos Grafos Caminhos e Noção de Grafos com pesos
Informática Teórica Engenharia da Computação
Problemas NP-Completos
Otimização Inteira 5a. Aula Franklina.
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
O problema do emparelhamento máximo
Aulas 9,10 Fábio Nakano.
LINGUAGENS DE PROGRAMAÇÃO PROF. DANIELA PIRES
Aula T06 – BCC202 Análise de Algoritmos (Parte 4) Túlio Toffolo
GEOMETRIA AXIOMÁTICA, SEGMENTOS DE RETA
Algoritmos 1º Semestre Materia: Informática Profº: Cristiano.
Subset Sum Algoritmos e Estruturas de Dados – IF672
SAT e Custo Computacional
Introdução à NP-completude Katia S. Guimarães
Abordagens para problemas NP-completos
Indução Matemática Recursão
Algoritmos Crescimento de Funções
NP-Completude Algoritmos e Estruturas de Dados – IF672
Algoritmos de Busca Local
Aulão de Linguagens Formais e Compiladores
Complexidade computacional
Complexidade de Algoritmos
Análise e Síntese de Algoritmos
Conexidade 1.
Redução.
A Classe NP Teoria da Computação Profa. Sandra de Amo.
Programação Dinâmica.
Problemas NP-completos e Programação Dinâmica
Algoritmos FPT para o Problema da k-Cobertura por Vértices
Introdução à NP-completude
Complexidade de Computação Katia Guimarães. Avaliando a Qualidade de um Algoritmo É preciso ter bem definido –O que é dado de entrada e –O que é esperado.
Exercícios de Fluxo em Redes
Teoria da complexidade
On The Complexity of Determining Autonomic Policy Constrained Behaviour Sobre a Complexidade de Determinação de Política Autônoma de Comportamento Restrito.
Algoritmos e Programação I
Busca Heurística Prof. Valmir Macário Filho. 2 Busca com informação e exploração Capítulo 4 – Russell & Norvig Seção 4.1 Estratégias de Busca Exaustiva.
Informática Teórica Engenharia da Computação. REDUTIBILIDADE POR MAPEAMENTO Formalizaremos a noção de redutibilidade de uma dentre várias maneiras. Formalizaremos.
Informática Teórica Engenharia da Computação. REDUTIBILIDADE Uma redução é uma maneira de converter um problema em outro Uma redução é uma maneira de.
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
Comportamento Assintótico
Transcrição da apresentação:

Liliane Salgado liliane@cin.ufpe.br NP-Completude Liliane Salgado liliane@cin.ufpe.br

Motivação: existem muitos problemas que não parecem solúveis pelas técnicas que nós temos tratado até agora.... Pergunta : será que tentamos o suficiente ?? Conjectura: não existem soluções eficientes para tais problemas. Objetivo: descrever técnicas para identificar alguns destes problemas. Definição (algoritmo eficiente): o tempo de execução do algoritmo é limitado por algum polinômio no tamanho da entrada. Definição (problema tratável): problema solúvel por um algoritmo eficiente.

P – classe dos problemas tratáveis. Como tratar com problemas que não sabemos se pertencem a P ?? Intitulados: Problemas NP-completos ou intratáveis. Boa notícia: podemos agrupar estes problemas em uma única classe Porque eles são equivalentes em um forte sentido: Existe um algoritmos eficiente para algum problema NP-completo se e somente se exsitem algoritmos eficientes para todos os problemas NP-completos. Nosso objetivo: (1) definir a classe de problemas NP-completos e Mostrar como um problema pertence a esta classe; (2) apresentar técnicas para lidar com problemas intratáveis.

Reduções de tempo polinomial Definição (problema de decisão): problemas cujas respostas são SIM ou NÃO. Exemplo: Ao invés de buscar o tamanho máximo de um clique em um dado grafo, podemos perguntar se existe um clique de tamanho >= k. Obs: mesma dificuldade, não facilitamos nossa tarefa, além disto... Se soubermos resolver o problema de decisão, então solucionamos o problema de otimização Max Clique por busca binária.

Reducões entre problemas (Idéia básica da redução) Problema A: Problema B : • Instancia de entrada: IA • Instancia de entrada: IB • Solucao: SA • Solucao: SB Definicão: uma reducão do problema A para o problema B é um par de transformacoes f e g tal que, dada uma instância qualquer IA de A: • f transforma IA em uma instância IB de B e • g transforma a solução SB de IB em uma solução SA de IA .

Esquema: A B f IA IB SA SB g Quando usar reduções ? • Situacão 1: quero encontrar um algoritmo para A e conheço um ¸ algoritmo para B . Ou seja, vou determinar uma cota superior para o problema A. • Situação 2: quero encontrar uma cota inferior para o problema B e conheco uma cota inferior para o problema A.

Formalizando ... I• : conjunto de todas instancias do problema • ; S• : conjunto de todas as solucoes das instancias em I• ; Definição: Um problema A é redutível ao problema B em tempo f (n) se existe a redução esquematizada abaixo: A B f IA IB SA SB g onde: n = |IA | e f e g sao O(f (n)).

Notação: A ∝f (n) B . Definição:a redução é polinomial quando f(n) é um polinômio no tamanho da entrada de A, ou seja, |IA|. Dizemos que A é polinomialmente redu- tível para B. Conhecendo um algoritmo πB para B , temos imediatamente um algoritmo πA que resolve instancias genéricas de A πA = f ◦ π B ◦ g . A complexidade de πA sera dada pela soma das complexidades de f , πB e g . Teorema: Se A é polinomialmente redutível para B e existe um algo- ritmo polinomial para B, então existe um algoritmo polinomial para A.

Obs: a noção de redutibilidade não é simétrica, o fato de A ser polino- mialmente redutível para B, não implica o inverso. Definição (polinomialmente equivalente): dois problemas são polino- mialmente equivalentes, ou simplesmente equivalentes, se cada um é polinomialmente redutível para o outro. Definição (transitividade): se A é polinomialmente redutível para B e B é polinomialmente redutível para C, então A é polinomialmente re- dutível para C.

Algoritmos não-determinísticos Em um algoritmo determinístico o resultado de cada operacao é definido de maneira única. No modelo de computacao nao-determinístico, além dos coman- dos determinísticos usuais, um algoritmo pode usar o comando Escolha(S ) , o qual retorna um elemento do conjunto S . Não existe regra que especifique o funcionamento do comando Escolha(S) . Existem |S | resultados possíveis para esta operacao e o comando retorna aleatoriamente um deles. Os algoritmos nao-determinísticos são divididos em duas fases: 1. Na primeira fase, que pode fazer uso do comando nao-determinís- tico Escolha, constroi-se uma proposta de solução.

2. Na segunda fase, onde só são usados comandos determinísticos, verifica-se se a proposta de solucao resolve de fato o problema. Ao final da fase de verificacao, os algoritmos nao-determinísticos sempre retornarao o resultado Aceitar ou Rejeitar, dependendo se a solução proposta resolve ou nao o problema. A proposta de solução gerada ao final da fase de construção do algoritmo nao determinístico é chamada de um certificado. A complexidade de execução do comando Escolha é O(1). Uma máquina não-determinística é aquela que é capaz de executar um algoritmo nao-determinístico. É uma abstracao !

Exemplo: determinar se um valor x pertence a um vetor A de n posições. Um algoritmo nao-determinístico seria: BuscaND(A,x); (* Fase de construcao *) j ← Escolha(1, . . . , n); (* Fase de verificacao *) Se A[j ] = x entao retornar Aceitar; senão retornar Rejeitar; Qual a complexidade deste algoritmo ?

Definição: a complexidade de um algoritmo nao-determinístico executado sobre uma instância qualquer é o numero mínimo de passos necessarios para que ele retorne Aceitar caso exista uma sequência de Escolhas que leve a essa conclusão. Se o algoritmo retornar Rejeitar o seu tempo de execucao é O(1). Um algoritmo nao-determinístico tem complexidade O(f (n)) se existem constantes positivas c e n0 tais que para toda instancia de tamanho n ≥ n0 para o qual ele resulta em Aceitar, o tempo de execução é limitado a cf (n). Assim, o algoritmo BuscaND tem complexidade O(1). Note que qualquer algoritmo determinístico para este problema é Ω(n) !

◦ Enunciado : dado um grafo conexo nao-orientado G = (V , E ) Outro exemplo: CLIQUE ◦ Enunciado : dado um grafo conexo nao-orientado G = (V , E ) e um valor inteiro k ∈ {1, . . . , n}, onde n = |V | pergunta-se: G possui uma clique com k vértices ? CliqueND(G,n,k); (* Fase de construcao *) S ←V; C ← {}; (* v´rtices da clique proposta *) Para i = 1 até k faça u ← Escolha(S ); S ← S − {u}; C ← C ∪ {u}; fim-para (* Fase de verificação *) Para todo par de vértices distintos (u, v ) em C faça Se (u, v ) não pertence a E retornar Rejeitar; Retornar Aceitar;

Complexidade (nao-determinística): O(k + k2 ) ⊆ O(n2 ). Não se conhece algoritmo determinístico polinomial para CLIQUE. As classes P e N P Definição: P é o conjunto de problemas que podem ser resol- vidos por um algoritmo determinístico polinomial. ı Definição: N P é o conjunto de todos os problemas que podem ser resolvidos por um algoritmo não-determinístico polinomial. Como todo algoritmo determinístico é um caso particular de um algoritmo nao-determinístico, segue que P ⊆ N P. Assim, todos os problemas que possuem algoritmos polinomiais estão em N P . Além disso, como visto anteriormente, CLIQUE.

Questão fundamental da Teoria da Computacão: P = NP ? Em geral, os algoritmistas acreditam que a proposição é falsa ! Como mostrar que a proposicao é falsa ? Encontrar um problema A ∈ N P e mostrar que nenhum algo- ritmo determinístico polinomial pode resolver A. Como mostrar que a proposicao é verdadeira ? Mostrar que para todo problema B ∈ N P existe um algoritmo determin´stico polinomial que o resolve.

As classes NP-difícil e NP -completo Será que existe um problema A em NP tal que, se A está em P então todo problema em NP também está em P ? Que característica deveria ter este problema A para que a pro- priedade acima se verificasse facilmente ? “Basta” encontrar um problema A em NP tal que, para todo problema B em NP existe uma redução polinomial (de Karp) de B para A. Definição: A é um problema NP -difícil se todo problema de NP se reduz polinomialmente a A.

Definição: A é um problema NP -completo se 1. A ∈ N P e 2. A ∈ N P -difícil. Observações: 1. Por definição, NP-completo ⊆ N P -difícil. 2. Se for encontrado um algoritmo polinomial para um problema qualquer em NP-difícil então ficará provado que P = N P .

Provas de NP –completude Lema: Seja A um problema em NP-difícil e B um problema em NP . Se existir uma redução polinomial de A para B , ou seja A ∝poli B então B esta em NP-completo. Dificuldade: encontrar um problema que esteja em NP-completo. Será que existe ? Cook provou que SAT é N P -completo ! (Teorema de Cook)

Provas de N P –completude Depois que Cook (1971) provou que SAT estava em NP-completo Karp (1972) mostrou que outros 24 problemas famosos também estavam em NP-completo. Lembre-se: Para provar que um problema A esta NP-completo é necessário: 1. Provar que A esta em N P 2. Provar que A esta em N P -dif´cil: pode ser feito encontran- do-se uma redução polinomial de um problema B qualquer em NP-difícil para A.

Provas de NP-completude: CLIQUE Estudar: Pag.58 – 61 das Notas de aula do Prof. Cid Carvalho TÉCNICAS PARA TRATAR COM PROBLEMAS NP-COMPLETOS Nós (muito provavelmente) não poderemos resolver um problema NP- completo precisa e completamente com um algoritmo de tempo poli- nomial. Consequência: Assumir um compromisso entre: otimalidade,robustez, eficiência garantida e completude da solução.

Algoritmos de aproximação Algoritmos probabilísticos Tempo de execução do caso médio Completude do algoritmo (cobertura de vértices pode ser resolvido para grafos bipartidos) Algoritmos exponenciais que trabalham bem para pequenas entra- das e que podem ser suficientes para o que se deseja. (backtracking)