Problemas NP-Completos

Slides:



Advertisements
Apresentações semelhantes
Decidibilidade e Indecidibilidade
Advertisements

Projeto de Programação PD-I
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
AULA 02 PROGRAMAÇÃO LINEAR INTEIRA
Fluxo em Redes Prof. Ricardo R. Santos.
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
Métodos para representação de estruturas hierárquicas
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Máquina de.
A Classe de Problemas NP
Prof. M.Sc. Fábio Francisco da Costa Fontes Abril
Metaheurísticas Prof. Aurora Pozo Departamento de Informática Universidade Federal do Paraná
Algoritmos e Estruturas de Dados
Dárlinton B. Feres Carvalho
Medida do Tempo de Execução de um Programa
NÃO DETERMINISMO Marcus Eduardo Cabral Seabra
EQUAÇÕES POLINOMIAIS Prof. Marlon.
SISTEMAS LINEARES II Prof. Marlon.
Daniel Felipe Neves Martins
Introdução à NP-completude
Problemas NP-completo
3 - Equações Lineares de Segunda Ordem
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Informática Teórica Engenharia da Computação
Formas de representação e manipulação básica
Heurísticas, algoritmos gulosos e aproximações
Algoritmos em Grafos Conceitos principais Prof. André Renato
T ÓPICOS DE I.A. Métodos de Busca Busca em Espaços de Estado Prof. Mário Dantas.
Grafos Árvores Geradoras.
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
Otimização Inteira 5a. Aula Franklina.
Histórico, exemplos e problemas
O problema do emparelhamento máximo
Busca com informação e exploração
Aula T06 – BCC202 Análise de Algoritmos (Parte 4) Túlio Toffolo
Introdução e Busca Cega
Introdução à NP-completude Katia S. Guimarães
AULA COMPUTACIONAL - Síntese de Sistemas de Separação (Cap. 7) 20 DE OUTUBRO DE 2008.
Liliane Salgado NP-Completude Liliane Salgado
NP-Completude Algoritmos e Estruturas de Dados – IF672
Algoritmos de Busca Local
Aulão de Linguagens Formais e Compiladores
Tópicos Avançados em Inteligência Artificial
Complexidade computacional
Complexidade de Algoritmos
Técnicas de Busca Heurística Problemas da IA complexos demais para serem solucionados por técnicas diretas: criam-se técnicas de busca aprorpiados; chamados.
Uma Análise das plataformas CUDA e OpenCL usando MetaHeurísticas aplicadas no Problema do Caixeiro Viajante Aluno: Hedley Luna Gois Oriá Disciplina: Introdução.
Construção e Análise de Algoritmos
Busca Combinatorial e Métodos de Heurística
Análise e Síntese de Algoritmos
Redução.
A Classe NP Teoria da Computação Profa. Sandra de Amo.
Resolução de Problemas de Busca
Programação Dinâmica.
Problemas NP-completos e Programação Dinâmica
Fundamentos de linguagens de programação

Algoritmos FPT para o Problema da k-Cobertura por Vértices
Introdução à NP-completude
Mailson Felipe da Silva Marques Johnson Cordeiro Sarmento
Computação Evolutiva Nome dado ao estudo de algoritmos cuja inspiração é o processo de evolução natural das espécies. Origem: trabalho de um pesquisador.
Informática Teórica Engenharia da Computação
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.
Comportamento Assintótico
Transcrição da apresentação:

Problemas NP-Completos André Aziz e Natália Flora {aaca,nfl@cin.ufpe.br} André Aziz, Natália Flora

André Aziz, Natália Flora Para pensar... O problema do caixeiro viajante -“travelling-salesman problem”... “Suponha que um caixeiro viajante tenha de visitar n cidades diferentes, iniciando e encerrando sua viagem na primeira cidade. Suponha, também, que não importa a ordem com que as cidades são visitadas e que de cada uma delas pode-se ir diretamente a qualquer outra. O problema do caixeiro viajante consiste em descobrir a rota que torna mínima a viagem total”. Fonte: http://www.mat.ufrgs.br/~portosil/caixeiro.html André Aziz, Natália Flora

André Aziz, Natália Flora Para pensar... André Aziz, Natália Flora

André Aziz, Natália Flora Para pensar... Para o exemplo 6 pontos (cidades): Partindo de A e retornado para A, temos: André Aziz, Natália Flora

André Aziz, Natália Flora Para pensar... Problema de otimização combinatória. Pode ser reduzido ao problema de enumeração: Suponha 1 computador capaz de realizar 1 bilhão de operações por segundo: Fonte: http://www.mat.ufrgs.br/~portosil/caixeiro.html n Rotas por seg. (109/n-1) (n-1)! Tempo Total 5 250 milhões 24 Insignificante 10 110 milhões 362.880 0,003 seg 15 71 milhões 87 bilhões 20 min 20 53 milhões 1,2x1017 73 anos 25 42 milhões 6,2x1023 470 milhões de anos André Aziz, Natália Flora

André Aziz, Natália Flora Para pensar... E se existisse uma redução a um problema de ordem polinomial? n Rotas por seg. (109/n-1) n5 Tempo Total 5 250 milhões 3.125 Insignificante 10 110 milhões 100.000 15 71 milhões 759.375 0,01 seg 20 53 milhões 3.200.000 0,06 seg 25 42 milhões 9.765.625 0,23 seg Fonte: http://www.mat.ufrgs.br/~portosil/caixeiro.html André Aziz, Natália Flora

André Aziz, Natália Flora Agenda Conceitos básicos; Redução de problemas; Classes de problemas; Algoritmos não-determinísticos; NP, NP-difícil e NP-completo; Técnicas. André Aziz, Natália Flora

André Aziz, Natália Flora Alguns conceitos... O que são algoritmos eficientes? São os algoritmos que apresentam solução em tempo polinomial, ou seja, O(P(n)), onde P(n) é um polinômio no tamanho da entrada n. O que são problemas tratáveis? Problemas tratáveis são aqueles cuja solução é dada por algoritmos eficientes. Na teoria O(n10) é eficiente, porém na prática apenas nos interessam os polinômios de menor grau! Tempo polinomial: na prática apenas nos importa aqueles com pequeno grau, algoritmos cuja ordem seja polinômios com alto grau podem ser considerados ineficientes. Tamanho: lembrar de representatividade numérica. André Aziz, Natália Flora

Redução entre Problemas Redução de Turing (Básico): Uma redução do problema A para o problema B é um par de transformações τI e τS tal que, dada uma instância qualquer IA da entrada de A: τI transforma IA em uma instância IB de B e; τS transforma a solução SB de IB em uma solução SA de IA. André Aziz, Natália Flora

André Aziz, Natália Flora Redução de Turing Par de transformações (I e S). Quando usar: Determinar limite superior ou inferior de um algoritmo. Redução de Turing Otimização Problema A Problema B IA Transforma IA em IB πB SB SA IB Transforma SB em SA I S André Aziz, Natália Flora

Casamento cíclico de cadeias (CSM) Entrada: Alfabeto Σ e duas cadeias de caracteres de tamanho n: Problema: B é um deslocamento cíclico de A? Como resolver esse problema? André Aziz, Natália Flora

Casamento de cadeias (SM) Entrada: Alfabeto Σ e duas cadeias de caracteres: Problema: B é uma subcadeia de A? Pode ser resolvido através do algoritmos KMP com O(m+n). André Aziz, Natália Flora

André Aziz, Natália Flora Redução; CSM  SM Instância de CSM: τI constrói instância de SM: τI é O(n). Se k é a solução de SM para ISM, então k também é solução de ICSM. Logo, τs é O(1) e a redução é O(n). Exemplo: André Aziz, Natália Flora

Erros comuns ao usar redução Usar a redução na ordem inversa; Usar o algoritmo de uma redução sem se preocupar com um outro mais eficiente. Após a redução AB descobrir que, pelo menos, A é tão difícil quanto B “Perde tempo tentando entender o B não.. o A já resolve.. e daí que ele demora mais!” Ordem da redução “mais dfícil” -> “mais fácil”. redução só é feita em um sentido André Aziz, Natália Flora

André Aziz, Natália Flora Redução Polinomial Definição: Tome L1 e L2 duas linguagens de uma entrada nos espaços U1 e U2, respectivamente. Dizemos que L1 é polinomialmente reduzível a L2 se existe um algoritmo de tempo polinomial que converte cada entrada u1U1 a outra entrada u2U2 tal que u1L1 se e somente se u2L2 * O algoritmo é polinomial no tamanho da entrada u1. André Aziz, Natália Flora

André Aziz, Natália Flora Redução Polinomial Em outras palavras ... Se Af(n) B e f(n)  O(n k), para algum valor k real, então a redução de A para B é polinomial. Daí deduzimos o seguinte teorema ... André Aziz, Natália Flora

Polinomialmente Reduzível Teorema 11.1: Se L1 é polinomialmente reduzível a L2 e existe um algoritmo de tempo polinomial para L2, então existe um algoritmo de tempo polinomial para L1. Eu quero ver é provar! André Aziz, Natália Flora

André Aziz, Natália Flora Transitividade Teorema 11.2: Se L1 é polinomialmente reduzível a L2 e L2 é polinomialmente reduzível a L3, então L1 é polinomialmente reduzível a L3. Eu quero ver é provar! André Aziz, Natália Flora

Problema da Satisfatibilidade (SAT) Problema de satisfazer uma fórmula lógica F na formal normal conjuntiva: Foi o primeiro problema identificado como pertencente a classe a NP-completo (Teorema de Cook). Existe algum valor para as variáveis x1,x2,...,xn tal que F seja verdadeira? André Aziz, Natália Flora

Problema da Satisfatibilidade (SAT) Exemplo: Solução: Para pensar... Encontrar um algoritmo para SAT. Qual a complexidade dele? André Aziz, Natália Flora

Problema da Satisfatibilidade (SAT) Não (existe) se conhece algoritmo eficiente para SAT. Achar um algoritmo que o resolve é difícil (resolução), mas verificar se uma solução é válida normalmente é fácil (verificação). “... chegar lá em cima é possível, difícil é achar o caminho...” André Aziz, Natália Flora

Tipos de Redução e Classes de Problemas Redução de Turing (ou Cook): O algoritmo πB pode ser executado múltiplas vezes, se a redução é polinomial e o número de chamadas a πB é limitado a um polinômio no tamanho da entrada, pode-se afirmar que o problema reduzido (A) é resolvido em tempo polinomial. Problema A Problema B IA Transforma IA em IB πB SB SA IB Transforma SB em SA I S André Aziz, Natália Flora

Tipos de Redução e Classes de Problemas Redução de Karp: O algoritmo πB só pode ser usado uma única vez, além disso πB deve responder SIM para IB sss IA é uma instância SIM para o problema A. Problema A Problema B IA Transforma IA em IB πB SB SA IB Transforma SB em SA I S André Aziz, Natália Flora

André Aziz, Natália Flora Redução de Karp Par de transformações (I e S). É um caso particular da Redução de Turing. Quando usar: Usada para provas de pertinência de problemas de decisão. Redução de Karp  problema de decisão. Problema A Problema B IA Transforma IA em IB πB SB SA IB Transforma SB em SA I S André Aziz, Natália Flora

André Aziz, Natália Flora Algoritmos Determinísticos: O resultado de cada operação é definido de maneira única. Não-Determinísticos: São divididos em 2 fases: Construção: nesta fase pode ser usado o comando não-determinístico, nd-choice, para a construção da proposta de solução (certificado). Verificação: nesta fase são usados apenas comandos determinísticos e a proposta de solução é verificada. Ao final desta fase o algoritmo retornará aceita ou rejeita. André Aziz, Natália Flora

Comando ND-Choice (Escolha) Usado para a manipulação de escolhas! A complexidade de execução do comando nd-choice é O(1), oráculo! Dizemos que uma linguagem L é reconhecida por um algoritmo não determinístico se: Dada uma entrada x , é possível converter cada nd-choice encontrada durante a execução do algoritmo em uma escolha real tal que a saída do algoritmo será aceitar x se e somente se xL. Além das operações regulares dos algoritmos determinísticos possuem o que chamamos de ND-choice, usado para manipulação de escolhas. Ao longo da execução do algoritmo são associadas escolhas, para cada uma delas o algoritmo segue uma computação diferente. (pensar em árvore de decisão). André Aziz, Natália Flora

André Aziz, Natália Flora Complexidade ND Algoritmos não-determinísticos Corresponde ao número mínimo de passos (escolhas) necessários para que o algoritmo retorne aceitar. Se o algoritmo retornar rejeita seu tempo de execução é O(1)! Uma máquina não-determinística é aquela capaz de executar uma algoritmo não-determinístico. André Aziz, Natália Flora

Simulando Máquinas Não-Determinísticas Imagine: Máquinas com quantidade INFINITA de processadores; Processadores se comunicam entre si de modo INSTANTÂNEO. A execução de um algoritmo não-determinístico pode ser esquematizado em uma árvore: Cada caminho começando da raiz corresponde uma sequência de escolhas. !@#$ André Aziz, Natália Flora

Simulando Máquinas Não-Determinísticas ... árvores: Em um dado vértice, filhos serão criados ao se executar o comando ND-choice (Escolha). Para cada novo filho é alocado um novo processador para continuar a execução do algoritmo. Imagine que essa árvore de execução é percorrida em largura e que se algum processador retorna Aceitar, ele consegue parar a execução em todos os demais instantaneamente... ......!! André Aziz, Natália Flora

Simulando Máquinas Não-Determinísticas Exemplo problema CLIQUE: Dado um grafo conexo não-orientado E um inteiro G possui um subgrafo completo com k vértices? Hum! André Aziz, Natália Flora

Simulando Máquinas Não-Determinísticas Algoritmo não-determinístico para CLIQUE: Não (existe) se conhece um algoritmo determinístico para CLIQUE. Complexidade: zzZZzzZzzZ... André Aziz, Natália Flora

André Aziz, Natália Flora Classes P e NP Definição de P Conjunto de problemas que podem ser resolvidos por um algoritmo determinístico polinomial. Definição de NP 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 não-determinístico, temos que PNP. André Aziz, Natália Flora

André Aziz, Natália Flora P = NP? Questão fundamental da teoria da computação! Acredita-se que essa proposição seja falsa! Como mostrar que é falsa? Encontrar um problema ANP e mostrar que nenhum algoritmo determinístico polinomial pode resolver A. Como mostrar que é verdadeira? Para todo problema BNP existe um algoritmo determinístico polinomial que o resolve. André Aziz, Natália Flora

Classes NP-difícil e NP-completo Classificamos um problema A como NP-Difícil se todo problema de NP se reduz polinomialmente a A. O problema A é pelo menos tão difícil quanto o L; O problema A não precisa estar NP, pois não precisa ser um problema de decisão, e se for um problema de decisão ainda sim não precisa estar em NP. Se P≠NP então o NP-difícil não tem solução em tempo polinomial. André Aziz, Natália Flora

Classes NP-difícil e NP-completo A é um problema NP-Completo se: A  NP e A  NP-Difícil Pela definição NP-Completo  NP-Difícil, se for encontrado qualquer algoritmo polinomial para um problema em NP-Difícil então ficará provado que P = NP. André Aziz, Natália Flora

André Aziz, Natália Flora Arrumando tudo... André Aziz, Natália Flora

André Aziz, Natália Flora Próximos Passos... Teorema de Cook: “SAT é NP-completo”; Problema da Parada; Tratamento de Problemas NP-difíceis. André Aziz, Natália Flora

André Aziz, Natália Flora Teorema de Cook O problema SAT é NP-Completo. Para provar usou Máquinas de Turing. Abriu portas para novos problemas: No ano seguinte 24 novos problemas foram identificados como sendo NP-completos! André Aziz, Natália Flora

André Aziz, Natália Flora Meu problema é NPC? Fácil!?... ... simples. Achar um problema NPC que possui uma redução polinomial para o meu problema! André Aziz, Natália Flora

André Aziz, Natália Flora SAT -> Clique Tomar E uma expressão booleana qualquer na forma normal conjutiva (CNF); Cada cláusula contém n variáveis; Qual a resposta para a seguinte expressão SIM ou NÃO? André Aziz, Natália Flora

André Aziz, Natália Flora SAT -> clique Transformamos cada cláusula (com suas n variáveis) em uma “coluna”; As variáveis vão representar os vértices; Estabelecemos as conexões entre os vértices: não conectamos variáveis da mesma cláusula; Não conectamos variáveis complementares; Objetivo: Encontrar um clique com pelo menos o número de Cláusulas. André Aziz, Natália Flora

André Aziz, Natália Flora SAT -> Clique Vamos para o quadro fazer as seguintes atividades: Montar o grafo; Estabelecer as conexões (arestas)! André Aziz, Natália Flora

Indecidibilidade: O Problema da Parada Suponha que você recebeu uma subrotina H muito especial que realiza a seguinte tarefa. Dado um programa P implementado por uma codificação <P> e uma entrada x, H retorna SIM se <P> pára com a entrada x e retorna N caso contrário. Usando H, posso escrever o programa D representado a seguir cujo objetivo é decidir se um programa P pára quando a sua própria codificação for passada na entrada. André Aziz, Natália Flora

Indecidibilidade: O Problema da Parada O que acontece se passarmos D como entrada para ele mesmo? Analisando: Programa D(<P>); a: Se H(<P>, <P>) = SIM, então repita a; se não PARE. André Aziz, Natália Flora

Tratamento de Problemas NP-difíceis Backtracking Programação Linear Heurísticas Aproximações André Aziz, Natália Flora

André Aziz, Natália Flora Backtracking Representa um refinamento do algoritmo de força bruta, consiste em eliminar múltiplas soluções antes que estas sejam examinadas. Encontrar uma solução usando este algoritmo consiste em fazer uma busca em profundidade na EE (árvore de espaço de estados); Soluções podem ser representadas por vetores de tamanho fixo ou variável na forma (x1 , ..., xn); Solucionar significa encontrar uma tupla que optimiza a função critério P(x1 , ..., xn) ou encontrar todas as tuplas que satisfaçam P(x1 , ..., xn). André Aziz, Natália Flora

André Aziz, Natália Flora Backtracking Aplicações: Pode ser aplicado para problemas que admitem o conceito de “soluções parciais candidatas”: Satisfação de restrições. Exemplo: Jogo das oito rainhas; Palavras cruzadas. André Aziz, Natália Flora

Tratamento de NP-Difícil Branch & Bound Utilizado para otimizar a função objetivo. Em cada nó da árvore, a função classificadora estima o melhor valor da função objetivo no subespaço do EE representados por aquele nó. Os nós são amadurecidos por: Inviabilidade; Limitante; Otimalidade . Exemplo de problema: mochila binária (BKP). André Aziz, Natália Flora

Tratamento de NP-Difícil Programação Linear É um método para otimizar a função objetivo sujeita a restrições lineares. São expressos como: Ou na forma matricial por: onde A é uma matriz mxn e b e c são vetores de m e n posições respectivamente. min Sujeito a min Sujeito a André Aziz, Natália Flora

Tratamento de NP-Difícil Programação Linear Exemplo da Fazenda: A hectares de terra; P quantidade de inseticida; F quantidade de fertilizante; S preço de venda; x área plantada de uma cultura. Função Objetivo Restrições André Aziz, Natália Flora

Tratamento de NP-Difícil Outras Técnicas Heurísticas: Algoritmos que geram soluções viáveis para as quais não se pode dar garantias de qualidade. Não se sabe quão distante sua solução está da solução ótima. Aproximações: Algoritmos aproximados encontram uma solução com garantia de qualidade em tempo polinomial. André Aziz, Natália Flora

Problemas NP-Completos Obrigado. André Aziz e Natália Flora {aaca,nfl@cin.ufpe.br} André Aziz, Natália Flora