INTRATABILIDADE e NP-COMPLETUDE

Documentos relacionados
PCC104 - Projeto e Análise de Algoritmos

5COP096 TeoriadaComputação

Complexidade de Algoritmos. Edson Prestes

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

Teoria da Complexidade Computacional

Complexidade computacional

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

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

Teoria da Computação. Computabilidade e complexidade computacional

Complexidade de Algoritmos. Edson Prestes

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

Teoria da Complexidade Computacional

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

Complexidade computacional

Teoria da Computação. Computabilidade

Aula 10: Tratabilidade

Máquinas de Turing 3

Uma introdução à complexidade parametrizada

Melhores momentos AULA 24. Algoritmos p.906/953

Apostila 06. Objetivos: Estudar a Computabilidade Estudar a Decidibilidade Estudar a Redutibilidade

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

Linguagens recursivamente enumeráveis

TEORIA DE COMPLEXIDADE

Análise e Projeto de Algoritmos

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

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

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

Computabilidade e Complexidade (ENG10014)

Aula 9: Máquinas de Turing

Análise de Algoritmos. Slides de Paulo Feofiloff

Problemas de otimização

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

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

Teoria da Computação. Computabilidade e complexidade computacional

Algoritmos Combinatórios: Introdução

Introdução Maquinas de Turing universais O problema da parada. Indecidibilidade. Rodrigo Gabriel Ferreira Soares DEINFO - UFRPE.

Paulo Guilherme Inça. 7 de dezembro de 2016

I.2 Introdução a Teoria da Computação

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

Coloração. Carolina Moraes e Lucas Glir

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 25

PCC104 - Projeto e Análise de Algoritmos

Análise e Projeto de Algoritmos

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

Linguagens Formais e Autômatos Decidibilidade

Modelos de Computação Folha de trabalho n. 10

Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel Introdução.

Medida do Tempo de Execução de um Programa

Análise de Algoritmos

Algoritmos de aproximação - Problema de cobertura por conjuntos

Projeto e Análise de Algoritmos. Problemas N P-Completo e Algoritmos Aproximados

Aula 10: Decidibilidade

Aula 10: Decidibilidade

Linguagens Formais e Autômatos P. Blauth Menezes

Introdução à classe de problemas NP- Completos

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)

ANÁLISE DE ALGORITMOS (INF 1721)

Máquinas de Turing 3

Faculdade de Computação

Algoritmos de aproximação - Problema do caixeiro viajante

Problemas NP-completos

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 18. Cap O Problema da Parada

Teoria da Computação. Máquinas Universais Máquina com Pilhas

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

Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente

Aula 12: Programação Inteira

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação

Transcrição:

INTRATABILIDADE e NP-COMPLETUDE Sandro Santos Andrade Doutorado Multiinstitucional em Ciência da Computação UFBA/UNIFACS/UEFS Junho/2008 Grafos e Análise de Algoritmos

Introdução Para alguns problemas não existem algoritmos substancialmente melhores que a execução de uma busca exaustiva Estes problemas são inerentemente intratáveis Provar essa intratabilidade inerente pode ser tão difícil quanto encontrar um algoritmo eficiente para resolver o problema Pode-se, entretanto, provar que o problema em questão é tão difícil quanto um grande conjunto de outros problemas reconhecidamente difíceis (problemas NP-Completo) Saber que um problema é NP-Completo antecipa a preferência por abordagens menos ambiciosas: Soluções para casos especiais do problema geral, soluções eficientes somente na maioria dos casos, soluções aproximadas etc

Conceitos Iniciais Def: um PROBLEMA é uma questão genérica a ser respondida e que possui parâmetros, cujos valores não são especificados Um problema é definido pela i) descrição geral dos seus parâmetros e pelas ii) propriedades que a resposta (SOLUÇÃO) deve satisfazer Def: uma INSTÂNCIA de um problema é obtida através da especificação de valores particulares para os parâmetros Exemplo: Problema do Caixeiro Viajante (Travelling Salesman Problem) Parâmetros: conjunto C={c 1, c 2,, c m } de cidades e, para cada par de cidades c i, c j em C, a distância d(c i, c j ) entre elas Solução: sequência <c Π (1), c Π (2),, c Π (m) > de cidades que minimiza: m 1 i=1 d c i, c i 1 d c m, c 1

Conceitos Iniciais Instância do Problema do Caixeiro Viajante: C={c 1, c 2, c 3, c 4 } d(c 1, c 2 ) = 10, d(c 1, c 3 ) = 5, d(c 1, c 4 ) = 9, d(c 2, c 3 ) = 6, d(c 3, c 4 ) = 3 Solução: <c 1, c 2, c 4, c 3 >

Conceitos Iniciais Um ALGORITMO é um procedimento, passo a passo, para resolver um determinado problema Um algoritmo RESOLVE um problema Π se ele puder ser aplicado a qualquer instância Ι de Π e sempre produzir uma solução para esta instância Em geral, procura-se algoritmos eficientes (rápidos) Os requisitos de tempo são indicados em função do tamanho da instância (quantidade de dados de entrada) A descrição da instância pode ser vista como uma string única e finita de símbolos escolhidos em um alfabeto finito de entrada

Conceitos Iniciais Def: a forma particular e fixa escolhida para representar instâncias de um problema é denominada ESQUEMA DE CODIFICAÇÃO (encoding schema) Ex: um esquema de codificação para o Problema do Caixeiro Viajante: c[1]c[2]c[3]c[4]//10/5/9//6/9//3. Tamanho da entrada = 32 Def: a FUNÇÃO DE COMPLEXIDADE DE TEMPO de um algoritmo informa, para cada tamanho de entrada possível, a maior quantidade de tempo necessário para resolver uma instância deste tamanho Depende do esquema de codificação e do modelo de computação utilizados, porém estes produzem pouco impacto nas distinções feitas pela teoria da NP-completude

Conceitos Iniciais A distinção entre algoritmos de tempo polinomial e algoritmos de tempo exponencial define um critério para análise de eficiência Def: um algoritmo é de TEMPO POLINOMIAL se a sua função de complexidade de tempo é Ο (p(n)), para alguma função polinomial p, onde n é o tamanho da entrada. Os algoritmos cuja função de complexidade de tempo não são limitadas dessa forma são ditos de TEMPO EXPONENCIAL (mesmo aqueles com função de complexidade de tempo limitadas por funções nãopolinomiais e não-exponenciais) A maioria dos algoritmos de tempo exponencial são meramente variações de busca exaustiva, enquanto os de tempo polinomial são projetados a partir do entendimento mais aprofundado da estrutura do problema

Conceitos Iniciais Def: um problema é dito INTRATÁVEL se não existir um algoritmo de tempo polinomial que o resolva Exceções para as associações polinomial eficiente, exponencial ineficiente: Entradas pequenas. Ex: 2 n é mais rápido que n 5, para n 20 Aplicabilidade prática. 2 n significa que existe pelo menos uma (e porque não somente uma?) instância de tamanho n que requer tal tempo (análise do pior caso). A aplicabilidade prática de alguns algoritmos de tempo exponencial indicam a existência de alguma propriedade do problema que, se refinada, pode conduzir a melhores algoritmos Algoritmos com complexidade n 100 ou 10 99 n 2 não executarão de forma eficiente, mas na prática os polinômios são de baixa ordem

Conceitos Iniciais Qualquer esquema de codificação razoável irá diferir de um outro de forma polinomial, portanto não interferem na intratabilidade Todos os modelos de computação já estudados (Máquinas de Turing de uma e múltiplas fitas, random-access-machines RAM, etc) são equivalentes em relação à complexidade polinomial de tempo e não interferem na intratabilidade Duas causas distintas para a intratabilidade: A dificuldade do problema requer uma quantidade exponencial de tempo para se chegar na solução A solução é tão extensa que não pode ser descrita por uma expressão cujo comprimento é limitado por uma função polinomial do tamanho da entrada (causa menos comum). Ex: variação do Problema do Caixeiro Viajante: quais são todos os ciclos com comprimento menor ou igual a um valor B?

Conceitos Iniciais Def: um problema é dito INDECIDÍVEL se não existir um algoritmo (mesmo exponencial) que o resolva. É um sentido mais forte para a intratabilidade. Ex: problema da parada Histórico: 1936 (Turing): problema da parada (indecidível) 1965 (Hartmanis e Stearns): problemas decidíveis e intratáveis artificiais 1972 (Meyer e Stockmeyer): problemas decidíveis e intratáveis reais Os problemas apontados em 1972 não podem ser resolvidos em tempo polinomial nem mesmo por um modelo computacional não-determinístico Alguns problemas aparentemente intratáveis encontrados na prática são decidíveis e podem ser resolvidos por um computador não-determinístico

Conceitos Iniciais Estudar como os problemas se relacionam em relação à sua dificuldade pode trazer informações valiosas para os projetistas de algoritmos A principal técnica para demonstrar que dois problemas se relacionam é a REDUÇÃO A redução define uma transformação que mapeia qualquer instância de um problema em uma instância equivalente de um outro problema Contribuições de Cook (1971): Noção de redutibilidade em tempo polinomial Ressaltou a classe NP (problemas de decisão que podem ser resolvidos em tempo polinomial por um computador não-determinístico) Provou que todo problema em NP pode ser polinomialmente reduzido a um problema particular em NP (o Problema da Satisfatibilidade)

Conceitos Iniciais Consequências: Se o Problema da Satisfatibilidade puder ser resolvido com um algoritmo de tempo polinomial, então todo problema em NP também poderá Se algum problema em NP for intratável, então o Problema da Satisfatibilidade também é O Problema da Satisfatibilidade é o problema mais difícil em NP Outros problemas compartilham com o Problema da Satisfatibilidade o título de Problema mais difícil em NP Def: a classe de equivalência que contém os problemas mais difíceis em NP é denominada classe dos problemas NP- COMPLETO A intratabilidade de todos os problemas em NP depende da intratabilidade dos problemas NP-Completo (o que é desconhecido)

A Teoria da NP-Completude Por convenciência, a Teoria da NP-Completude é aplicada somente a Problemas de Decisão Def: um PROBLEMA DE DECISÃO Π consiste de um conjunto D Π de instâncias e um sub-conjunto Y Π D Π de instâncias-sim Exemplo de Problema de Decisão: Instância genérica: dois grafos G 1 = (V 1, E 1 ) e G 2 = (V 2, E 2 ) Questão: G1 contém um sub-grafo que é isomorfo a G2? Problema de decisão relacionado ao Problema do Caixeiro Viajante: Instância genérica: o conjunto C de cidades, a distância entre cada par de cidades e um valor limite B Questão: Existe um ciclo que passa por todas as cidades de C com comprimento menor ou igual a B?

A Teoria da NP-Completude Problemas de otimização podem ser facilmente transformados em Problemas de Decisão: mínimo (máximo) custo existe X com custo menor (maior) ou igual a Y? Porque trabalhar com Problemas de Decisão? Pelo suporte formal dado pela Teoria da Computação (linguagens e modelos computacionais) Def: para qualquer conjunto finito Σ de símbolos, Σ * denota o conjunto de todas as strings finitas formadas por símbolos de Σ. Ex: Σ = {0, 1}, Σ * = { ɛ, 0, 1, 00, 01, 10, 11, 000, 001, } Def: se Ⅼ é um sub-conjunto de Σ * então Ⅼ é uma LINGUAGEM sobre o conjunto Σ. Exs: {01, 001, 111, 1101010} é uma linguagem sobre {0, 1}, Σ * é uma linguagem sobre Σ

A Teoria da NP-Completude Cada instância de um problema é descrita por uma string formada por símbolos de um alfabeto fixo Σ Um problema Π e um esquema de codificação e particionam Σ * em três classes de strings: i) as que não codificam instâncias de Π, ii) as que codificam instâncias-não de Π e iii) as que codificam instâncias-sim de Π Def: a LINGUAGEM ASSOCIADA A Π e e é definida por: L[,e] = x * : é o alfabetousado por e ; x éa codificação em e deuma instância I em Se um resultado é válido para a linguagem Ⅼ[Π, e] então ele é válido para o problema Π sobre o esquema de codificação e

A Classe P Para formalizar a noção de algoritmo é necessário padronizar um modelo particular de computação MÁQUINA DE TURING DETERMINÍSTICA DE UMA FITA (MTD): Um programa para uma MTD especifica: Um conjunto finito Τ de símbolos de fita, incluindo o sub-conjunto Σ Τ de símbolos de entrada e o símbolo branco b Τ-Σ Um conjunto finito Q de estados, incluindo um estado-inicial q 0 e dois estados-final q Y e q N Uma função de transição δ: (Q {q Y, q N }) x Τ Q x Τ x { 1, +1}

A Classe P Um programa M com alfabeto de entrada Σ ACEITA x Σ * se e somente se M termina no estado q Y quando aplicado a x A linguagem Ⅼ M reconhecida pelo programa M é dada por: L M = x * : M aceitax Esta definição de reconhecimento de linguagem não requer que M pare para todas as strings de entrada em Σ *, somente aquelas em Ⅼ M Se x pertence a Σ * - Ⅼ M, M pode parar em q N ou pode nunca parar Entretanto, para que um programa de uma MTD correspoda ao conceito de algoritmo ela deve parar para todas as possíveis strings formadas com base no alfabeto de entrada

A Classe P Um programa MTD M resolve um problema de decisão Π sobre esquema de codificação e se M pára para toda string formada com base no alfabeto de entrada e Ⅼ M = Ⅼ[Π, e] Def: para um programa MTD M que pára para todas as entradas x Σ *, sua FUNÇÃO DE COMPLEXIDADE DE TEMPO T M : Z+ Z+ é dada por: T M n = max m: existe um x *,com x =n,talque acomputação de M na entrada x durao tempom Def: um programa MTD M é dito um PROGRAMA DE TEMPO POLINOMIAL se existe um polinômio p tal que, para todo n Z +, T M (n) p(n)

A Classe P Def: classe P = {L: existe um programa MTD de tempo polinomial M para o qual L = L M } Esta definição omite a especificação de um esquema de representação e modelo de computação particulares, visto que existe uma equivalências entre as alternativas

A Classe NP Não existe um algoritmo de tempo polinomial que resolva o Problema do Caixeiro Viajante (versão enunciada como um Problema de Decisão) Se a solução para o problema (existe rota com comprimento menor que B) puder ser adivinhada, pode-se executar um procedimento de verificação que calcula o comprimento e verifica se ele é menor que B Este procedimento de verificação pode ser realizado em tempo polinomial (o qual não considera o tempo para encontrar a solução) Def: um ALGORITMO NÃO-DETERMINÍSTICO adivinha uma solução S de um instância I e envia S e I ao procedimento de verificação, o qual pode parar com resposta sim, com resposta não ou nunca parar

A Classe NP Um algoritmo não-determinístico resolve um problema de decisão Π se as seguintes propriedades valem para todas as instâncias I D Π : Se I Y Π então existe alguma solução S que, quando adivinhada para a entrada I, irá fazer o procedimento de verificação terminar com SIM para S e I Se I Y Π então não existe solução S que, quando adivinhada para a entrada I, irá fazer o procedimento de verificação terminar com SIM para S e I

A Classe NP Um algoritmo não-determinístico opera em tempo polinomial se existe um polinômio p que, para cada instância I Y Π, existe uma solução adivinhada S que faz com que o procedimento de verificação termine com resposta SIM dentro do tempo p(length[i]) A classe NP é formada por todos os problemas de decisão Π que podem ser resolvidos por algoritmos não-determinísticos de tempo polinomial

A Classe NP As soluções de Problemas de Decisão obtidos por algoritmos não-determinísticos não têm simetria entre respostas SIM e NÃO. Ex: é verdade que não existe um ciclo com comprimento menor ou igual a B? MÁQUINA DE TURING NÃO-DETERMINÍSTICA DE UMA FITA (MTND): O módulo de adivinhação tem o papel de escrever uma solução adivinhada na fita para que seja feita a verificação

A Classe NP O tempo requerido por um programa MTND M para aceitar a string x L M é o mínimo, entre todas as computações de M que aceitam x, de passos ocorridos nas fases de adivinhação e verificação até que o estado q Y seja encontrado Def: a FUNÇÃO DE COMPLEXIDADE DE TEMPO T M : Z+ Z+ para M é: Def: um programa MDNT M é dito um PROGRAMA DE TEMPO POLINOMIAL se existe um polinômio p tal que T M (n) p(n), para todo n 1 T M n = max {1} m: existeum x L M,com x =n,tal m queo tempo param aceitar xé

A Classe NP Def: classe NP = {L: existe um programa MTND de tempo polinomial M para o qual L = L M } Qual o relacionamento entre P e NP? P NP. Se um problema Π P e A é um algoritmo determinístico de tempo polinomial para Π, pode-se obter um algoritmo não-determinístico de tempo polinomial para Π usando A como o procedimento de verificação e ignorando a adivinhação P = NP? Não se sabe, provavelmente não!!! A falha em encontrar uma prova de que P NP é um argumento a favor de que P = NP tão forte quanto a falha em encontrar algoritmos de tempo polinomial é um argumento a favor de que P NP

A Classe NP Se P difere de NP, a distinção entre P e NP - P é significativa. Todos os problemas em P podem ser resolvidos por algoritmos de tempo polinomial enquanto todos os problemas em NP - P são intratáveis (quando considerado apenas modelos determinísticos reais) Para provar que um problema pertence a NP - P deve-se provar que P NP Enquanto isso não acontece, prova-se que: se P NP, então Π NP P A idéia chave para essa abordagem condicional é o conceito de transformação polinomial (redução)

A Classe NP Def: uma TRANSFORMAÇÃO POLINOMIAL (REDUÇÃO) de uma linguagem L 1 Σ 1* para uma linguagem L 2 Σ 2* é uma função f : Σ 1 * Σ 2 * que satisfaz as seguintes condições: Existe um programa DTM de tempo polinomial que computa f Para todo x Σ * * 1, x L 1 se e somente se f(x) Σ 2 Se existe uma redução de L 1 para L 2 diz-se que L 1 L 2 redutível a L 2 ) A importância da redução vem do seguinte lema: (L 1 é Se L 1 L 2 então L 2 P implica L 1 P (e, de forma equivalente L 2 P implica L 1 P)

A Classe NP Ex: pode-se provar que o Problema do Circuito Hamiltoniano é redutível ao Problema do Caixeiro Viajante Π 1 Π 2 = Π 1 não é mais difícil que Π 2 A relação define uma ordem parcial onde a classe P é a menor nesta ordem. A classe NP-Completo contém os problemas de decisão (linguagens) mais difíceis de NP Def: uma linguagem L é NP-Completo se L NP e, para quaisquer outras linguagens L' NP, L' L Se um único problema NP-Completo puder ser resolvido em tempo polinomial, todos os outros também poderão. Se algum problema em NP for intratável, todos os NP-Completo serão

A Classe NP Teorema de Cook: Define o primeiro problema NP-Completo conhecido: o Problema da Satisfatibilidade (SAT) A prova não é tão trivial! Processo de prova da NP-Completude: 1. Mostrar que Π está em NP 2. Selecionar um problema NP-Completo Π' conhecido 3. Construir uma redução f de Π' para Π 4. Provar que f é uma redução polinomial

Estudo de Caso Cobertura de Vértices: Seja G = (V, E) um grafo não-direcionado. Uma Cobertura de Vértices de G é um conjunto de vértices tal que toda aresta de G é incidente em pelo menos um desses vértices

Estudo de Caso O problema: Dado um grafo não-direcionado G = (V, E) e um inteiro k, determine se G tem uma Cobertura de Vértices com no máximo k vértices Teorema: O Problema da Cobertura de Vértices é NP-Completo PROVA: 1. O Problema da Cobertura de Vértices pertence a NP, visto que pode-se adivinhar uma cobertura de tamanho k e executar o procedimento de verificação em tempo polinomial (verificar se esta cobertura contém ao menos um vértice de cada aresta e tem o tamanho apropriado) 2. Seleciona-se o problema 3SAT Versão restrita do problema SAT no qual todas as instâncias têm exatamente três literais por cláusula

Estudo de Caso PROVA: 3. Redução de 3SAT para o Problema da Cobertura de Vértices Seja U = {u 1, u 2,..., u n } o conjunto de variáveis e C = {c 1, c 2,..., c m } o conjunto de cláusulas que compõem uma instância arbitrária de 3SAT Deve-se construir um grafo G = (V, E) e um inteiro positivo k V de modo que G tenha uma cobertura de vértice de tamanho k ou menos se e somente se C é satisfatível Processo de transformação: Para cada variável u i U, criar um componente do grafo G denominado T i = (V i, E i ), com V i = (u i, u i ') e E i = {{u i, u i '}}. Qualquer cobertura de vértice terá de conter u i ou u i '. Para cada cláusula c i C, criar um componente do grafo G denominado S j = (V' j, E' j ), tal que V' j = {a 1 [j], a 2 [j], a 3 [j]} e E'j = {{a 1 [j], a 2 [j]}, {a 1 [j], a 3 [j]}, {a 2 [j], a 3 [j]}}. Qualquer cobertura de vértice terá de conter dois vértices de V' j.

Estudo de Caso PROVA: 3. Redução de 3SAT para o Problema da Cobertura de Vértices Processo de transformação: Para cada cláusula c j C, seja os três literais presentes em c j denotados por x j, y j, z j. Criar as arestas de comunicação E'' = {{a 1 [j], xj}, {a 2 [j], y j }, {a 3 [j], z j }}. O grafo final G = (V, E) terá: e e k = n + 2m 4. Esta redução pode ser realizada em tempo polinomial

Exemplo: Estudo de Caso

Estudo de Caso Algoritmo de aproximação: Produz uma cobertura de tamanho no máximo duas vezes o tamanho da menor cobertura

Intratabilidade e NP-Completude FIM