540 likes | 649 Views
Problemas NP-Completos. André Aziz e Natália Flora { aaca ,nfl@cin.ufpe.br}. Para pensar. O problema do caixeiro viajante - “ travelling-salesman problem ”.
E N D
Problemas NP-Completos André Aziz e Natália Flora {aaca,nfl@cin.ufpe.br} André Aziz, Natália Flora
Para pensar... • O problema do caixeiro viajante -“travelling-salesmanproblem”... “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
Para pensar... 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
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 André Aziz, Natália Flora
Para pensar... • E se existisse uma redução a um problema de ordem polinomial? Fonte: http://www.mat.ufrgs.br/~portosil/caixeiro.html 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
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! André Aziz, Natália Flora
Redução entre Problemas • Redução de Turing (Básico): Uma redução do problema Apara o problema B é um par de transformações τI e τS tal que, dada uma instância qualquer IAda entrada de A: τItransforma IAem uma instância IB de Be; τS transforma a solução SB de IB em uma solução SA de IA. 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 I IA IB Transforma IA em IB πB S Transforma SB em SA SA SB 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
Redução; CSM SM • Instância de CSM: • τIconstró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 AB 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!” 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 u1U1 a outraentrada u2U2talque u1L1 se e somente se u2L2 • * O algoritmo é polinomial no tamanho da entrada u1. André Aziz, Natália Flora
Redução Polinomial Em outras palavras ... • Se Af(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
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 I IA IB Transforma IA em IB S πB Transforma SB em SA SA SB 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 IBsss IA é uma instância SIM para o problema A. Problema A Problema B I IA IB Transforma IA em IB S πB Transforma SB em SA SA SB 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 I IA IB Transforma IA em IB πB S Transforma SB em SA SA SB 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 xL. 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áquinasNã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áquinasNã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áquinasNã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áquinasNão-Determinísticas • Algoritmo não-determinístico para CLIQUE: • Não (existe) se conhece um algoritmodeterminístico para CLIQUE. Complexidade: zzZZzzZzzZ... André Aziz, Natália Flora
Classes P e NP • Definição de P • Conjunto de problemas que podem ser resolvidos por um algoritmodeterminí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 PNP. 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 ANP e mostrar que nenhum algoritmo determinístico polinomial pode resolver A. • Como mostrar que é verdadeira? • Para todo problema BNP existe um algoritmo determinístico polinomial que o resolve. André Aziz, Natália Flora
Classes NP-difícil e NP-completo • NP-Difícil: • 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≠NPentã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 • 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
Arrumando tudo... 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
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
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
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
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
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
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 umatupla que optimiza a função critérioP(x1 , ..., xn) ou encontrar todas as tuplas que satisfaçam P(x1 , ..., xn). 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ícilBranch & 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ícilProgramaçã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 min Sujeito a Sujeito a André Aziz, Natália Flora