Agenda •• Conceitos Conceitos básicos básicos •• Classes Classes de de Complexidade Complexidade –– PP –– NP NP •• Redução Redução •• Problemas Problemas NPC NPC Análise e Técnicas de Algoritmos Jorge Figueiredo NP-Completude NP-Completude © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 Introdução Eficiência •Existem •Existem alguns alguns problemas problemas computacionais computacionais que que são são difíceis difíceis de de serem serem resolvidos. resolvidos. •Impossível •Impossível de de se se provar provar que que não não existe existe solução solução eficiente. eficiente. •Que •Que conclusões conclusões tirar tirar da da tabela tabela abaixo? abaixo? •• Como Como definir definir aa eficiência eficiência de de uma uma solução? solução? –– Vimos Vimos em em nosso nosso curso curso aa conveniência conveniência de de se se utilizar utilizar medidas medidas de de complexidade complexidade como como medida medida de de eficiência. eficiência. •• Um Um algoritmo algoritmo éé eficiente eficiente quando quando aa sua sua complexidade complexidade for for polinomial polinomial em em relação relação ao ao tamanho tamanho de de sua sua entrada. entrada. k –– Um Um algoritmo algoritmo éé dito dito ser ser de de tempo tempo polinomial polinomial se se for for O(n O(nk),), para alguma constante k > 0. para alguma constante k > 0. –– Qualquer Qualquer outro outro algoritmo algoritmo que que não não for for polinomial polinomial éé dito dito ser ser exponencial. exponencial. –– Classificação Classificação não não éé absoluta. absoluta. –– Algumas Algumas vezes vezes pode pode ser ser insatisfatória insatisfatória mas, mas,na na maioria maioria dos dos casos, casos,éé aceitável. aceitável. Funções de Complexidade Tamanho da Entrada (n) 10 20 30 40 50 60 n .00001s .00002s .00003s .00004s .00005s .00006s n2 .0001s .0004s .0009s .0016s .0025s .0036s n3 .001s .008s .027s .064s .125s .216s n5 .1s 3.2s 24.3s 1.7min 5.2min 13.0min 2n .001s 1.0s 17.9min 12.7dias 35.7anos 3n 0.059s 58min 6.5anos 2855sec 2x108 sec 1.3x1013sec Análise e Técnicas de Algoritmos – 2005.1 366sec © Jorge Figueiredo, DSC/UFCG © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 Intratabilidade de Problemas NP-Completude •• Um Um problema problema éé dito dito tratável tratável se se ele ele apresenta apresenta uma uma solução solução polinomial. polinomial. •• Um Um problema problema éé intratável intratável se se ele ele for for tão tão difícil difícil que que nenhum nenhum algoritmo algoritmo polinomial polinomial pode pode resolvê-lo. resolvê-lo. •• Alguns Alguns algoritmos algoritmospolinomiais polinomiais podem podem não não ser ser muito muito úteis. úteis.Por Por 100 exemplo, exemplo, se se for for O(n O(n100).). Na Na prática, prática, porém, porém, quase quase sempre sempre os os polinômios polinômios são são de de grau grau 22 ou ou 3. 3. •• Alguns Alguns problemas problemas são são tão tão difíceis difíceis que que são são indecidíveis. indecidíveis. Por Por exemplo, exemplo, oo problema problema da da parada. parada. •• Por Por outro outro lado, lado, alguns alguns problemas problemas são são decidíveis decidíveis mas, mas, intratáveis. intratáveis. •• Vamos Vamos estudar estudar certos certos problemas problemas que que são, são, de defato, fato, difíceis difíceis (computacionalmente) (computacionalmente) de de se se resolver. resolver. •• Esse Esse ééaa idéia idéia central central da da teoria teoria de de NP-Completude. NP-Completude. •• Vamos Vamos mostrar mostrar que que encontrar encontrar uma uma solução solução eficiente eficiente para para um um certo certo problema problema éé tão tão difícil difícil quanto quanto encontrar encontrar soluções soluções eficientes eficientes para para todos todos os os problemas problemas definidos definidos em em uma uma classe classe de de problemas problemas que que chamamos chamamos NP. NP. Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG 1 Problema Algorítmico Classes de Problemas •• Caracterizado Caracterizado por: por: –– Conjunto Conjunto de de dados. dados. –– Objetivo Objetivo do do problema. problema. –– Solução. Solução. •• Exemplo: Exemplo: Encontrar Encontrar um um clique clique de de tamanho tamanho kk em em um um grafo grafo G. G. –– Conjunto Conjunto de dedados: dados: um umgrafo grafoG Geeum uminteiro inteiro kk >> 0. 0. –– Objetivo Objetivo do do problema: problema: aa própria própria definição. definição. •• Problemas Problemas de de Decisão: Decisão: Problemas Problemas em em que que aa saída saída (solução) (solução) éé SIM SIMou ou NÃO. NÃO. •• Problemas Problemas de de Localização: Localização: Determinar Determinar uma uma certa certa estrutura estrutura que que satisfaça satisfaça um um conjunto conjunto de de propriedades propriedades dadas. dadas. •• Problemas Problemas de de Otimização: Otimização: Problemas Problemas de de localização localização em em que que as as propriedades propriedades satisfazem satisfazem critérios critériosde de otimização. otimização. © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 Classes de Problemas Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Classes de Complexidade P e NP •• ÉÉ possível possível relacionar relacionar problemas problemas de de otimização otimização ee localização localização com com problemas problemas de de decisão. decisão. Por Por exemplo: exemplo: Problema Problema de de Decisão: Decisão: Dados: Dados: Um Umgrafo grafoG Geeum um inteiro inteiro k>0. k>0. Objetivo: Objetivo: Verificar Verificar se se G G possui possui um um percurso percurso de de caixeiro caixeiro viajante viajante de de peso peso ≤k. ≤k. Problema Problema de de Localização: Localização: Dados: Dados: Um Umgrafo grafo G Geeum um inteiro inteiro k>0. k>0. Objetivo: Objetivo: Localizar, Localizar, em em G, G, um um percurso percurso de de caixeiro caixeiro viajante viajantede de peso peso ≤k. ≤k. Problema Problema de de Otimização: Otimização: Dados: Dados: Um Um grafo grafo G. G. Objetivo: Objetivo: Localizar, Localizar, em em G, G, um um percurso percurso de de caixeiro caixeiro viajante viajante ótimo. ótimo. © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 •• Todos Todos os os problemas problemas que que vamos vamos utilizar utilizar no no estudo estudo de de NPNPCompletude Completude são são problemas problemas de de decisão. decisão. •• AA Classe Classe de de Complexidade Complexidade PP(polynomial (polynomial time) time) éé oo conjunto conjunto de de todos todos os os problemas problemas de de decisão decisão que que são são resolvíveis resolvíveis em em tempo tempo polinomial polinomial em em um umcomputador computador determinístico. determinístico. •• AA Classe Classe de de Problemas Problemas NP NP (nondeterministic (nondeterministic polynomial polynomial time) time) éé oo conjunto conjunto de de problemas problemas resolvíveis resolvíveis em em tempo tempo polinomial polinomial em em um um computador computador não-determinístico. não-determinístico. AA Classe Classe NP NP também também pode pode ser ser definida definida como como aa classe classe de de problemas problemas em em que que éé possível possível verificar verificar em emtempo tempo polinomial, polinomial, se se um um determinada determinada solução solução proposta proposta satisfaz satisfaz oo problema problema de de decisão. decisão. Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Não Determinismo Classes de Complexidade Co-NP •• Veja Veja um um computador computador não não determinístico determinístico como comosendo sendo um um computador computador que que “magicamente “magicamente adivinha” adivinha” uma uma solução: solução: –– Se Se aa solução solução existe, existe, oo computador computador sempre sempre adivinha. adivinha. •• Outra Outra forma forma de de definir: definir: Um Um computador computador paralelo paralelo que que executa executa infinito infinito número número de de processos processos –– Um Um processador processador para para cada cada solução solução possível possível O O complemento complemento de de um um problema problema de de decisão decisão DD éé um um problema problema de de decisão decisão cujo cujo objetivo objetivo éé oo complemento complemento da da decisão decisão de de D. D. AA Classe Classe Co-NP Co-NP compreende compreende exatamente exatamente os os complementos complementos dos dos problemas problemas da da classe classe NP. NP. Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG 2 Relação entre Classes de Complexidade Relação entre Classes de Complexidade •• PP == conjunto conjunto de de problemas problemas que que podem podem ser ser resolvidos resolvidos em em tempo tempo polinomial polinomial •• NP NP ==conjunto conjunto de de problemas problemas cuja cuja solução solução pode pode ser ser verificada verificada em em tempo tempo polinomial polinomial •• PP ⊆⊆ NP NP •• Questão Questão não não resolvida: resolvida: PP== NP? NP? ou ouPP≠≠ NP? NP? •• Se Se PP≠≠ NP NP,, NP NP ––PP são são problemas problemas intratáveis. intratáveis. Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Alguns Problemas de Decisão em NP Problema Problema 1: 1: Satisfiability Satisfiability •• O O problema problema da da satisfiability satisfiability(SAT) (SAT) éé um um problema problema de de lógica lógica que que envolve envolve expressões expressões booleanas. booleanas.Pode Pode ser ser definido definido da da seguinte seguinte forma: forma: –– Dados: Dados: Uma Uma expressão expressão booleana booleana EEna na sua sua forma forma normal normal conjuntiva conjuntiva (FNC). (FNC). –– Objetivo: Objetivo: Verificar Verificar se se EE éé satisfeita, satisfeita, ou ou seja, seja, verificar verificar se se existe existe uma uma atribuição atribuição de de valores valores às às variáveis variáveis da da expressão expressão de de tal tal modo modo que que aa expressão expressão seja seja avaliada avaliada verdadeira. verdadeira. Uma Uma expressão expressão éé FNC FNC quando quando for for uma uma conjunção conjunção de de cláusulas. cláusulas. Por Por exemplo, exemplo, (x2∨¬x1)∧(x1∨¬x3∨¬x2)∧(x3)∧(x1∨x3∨x2). (x2∨¬x1)∧(x1∨¬x3∨¬x2)∧(x3)∧(x1∨x3∨x2). Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Alguns Problemas de Decisão em NP Problema Problema 2: 2: Conjunto ConjuntoIndependente Independente de de Vértices Vértices •• Dados: Dados: Um Um grafo grafo G G ee um um inteiro inteiro k>0. k>0. •• Objetivo: Objetivo: Verificar Verificar se se G G possui possui um um conjunto conjunto independente independente de de vértices vértices de de tamanho tamanho ≥k. ≥k. Dado Dado um um grafo grafo G= G= (V,E), (V,E),um umconjunto conjuntoindependente independentede devértices vértices ⊆ V tal que qualquer par de vértices de éé um um subconjunto subconjunto VVIND IND ⊆ V tal que qualquer par de vértices de não é adjacente. VVIND IND não é adjacente. Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Alguns Problemas de Decisão em NP Alguns Problemas de Decisão em NP Problema Problema 3: 3: Clique Clique •• Dados: Dados: Um Um grafo grafo G G ee um um inteiro inteiro k>0. k>0. •• Objetivo: Objetivo: Verificar Verificar se se G G possui possui um um clique clique de de tamanho tamanho ≥k. ≥k. Dado ⊆V Dado um um grafo grafo G= G= (V,E), (V,E),um umclique cliqueééum umsubconjunto subconjunto VVCLI CLI ⊆ V tal é adjacente. tal que que qualquer qualquer par par de de vértices vértices de de VVCLI é adjacente. CLI Problema Problema 4: 4: Cobertura Cobertura de de Vértices Vértices •• Dados: Dados: Um Um grafo grafo G G ee um um inteiro inteiro k>0. k>0. •• Objetivo: Objetivo: Verificar Verificar se se G G possui possui uma uma cobertura cobertura de de vértices vértices de de tamanho tamanho ≤k. ≤k. Dado Dado um um grafo grafo G= G= (V,E), (V,E),uma umacobertura coberturade de vértices vértices ééum um ⊆ V tal que qualquer aresta de G é subconjunto subconjunto VVCOB COB ⊆ V tal que qualquer aresta de G é . incidente incidente aa um um vértice vértice de de VVCOB COB. Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG 3 Alguns Problemas de Decisão em NP Problema Problema 5: 5: Coloração Coloração •• Dados: Dados: Um Um grafo grafo G G ee um um inteiro inteiro k>0. k>0. •• Objetivo: Objetivo: Verificar Verificar se se G G possui possui uma uma coloração coloração com com um umnúmero número de de cores cores ≤k. ≤k. Dado Dado um um grafo grafo G= G= (V,E), (V,E),uma umacoloração coloraçãoééatribuída atribuídaaa G Gde detal tal forma forma que que dois dois vértices vérticesadjacentes adjacentes tenham tenham cores cores distintas. distintas. Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Problemas NP-Completos •A •Aclasse classede deproblemas problemasNP NPcaptura capturaooconjunto conjuntode deproblemas problemasque que acreditamos acreditamosque quesejam sejamdifíceis difíceisde dese setratar. tratar. •Existem, •Existem,entretanto, entretanto,problemas problemasque quepodem podemser serconsiderados consideradospelo pelomenos menos tão tãodifíceis difíceiscomo comoqualquer qualqueroutro outroem emNP. NP. •Essa •Essaclasse classede deproblemas problemasmais maisdifíceis difíceisem emNP NPééchamada chamadade deNP-Completo NP-Completo ou ouNPC. NPC. © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 Redução em Tempo Polinomial Teorema de Cook •• Um Um problema problema PP pode pode ser ser reduzido reduzido aa um um outro outro problema problema Q Qse se qualquer qualquer instância instância de de PP pode pode ser ser refraseada refraseada (transformada) (transformada) para para uma uma instância instância de de Q. Q. •• Intuitivamente: Intuitivamente: se sePP éé redutível redutível em em tempo tempo polinomial polinomial aa Q, Q,PP não não éé mais mais difícil difícilde de resolver resolver do do que que Q. Q. •• SAT SATéé NP-Completo. NP-Completo. •• SAT SATtem tem aapropriedade propriedade que que todos todos os os problemas problemas em em NP NP podem podem ser ser reduzidos reduzidos aa ele, ele, em emtempo tempo polinomial. polinomial. •• Existem Existem outros outros problems problems em em NP NP que que têm têm as as mesmas mesmas características características de deSAT. SAT. •• Se Se D1 D1 ∈∈ NPC NPC ee D2 D2 ∈∈ NPC, NPC, então então D1 D1 ≤≤pp D2 D2 ee D2 D2 ≤≤pp D1. D1. •• ÉÉ possível possível concluir: concluir: –– Se Se um um problema problema NPC NPC pode pode ser ser resolvido resolvido em em tempo tempo polinomial, polinomial, então então todos todos os os problemas problemas de de NP NP podem podem sê-lo. sê-lo. –– Se Se um um problema problema de de NP NP éé intratável, intratável, todos todos os os problemas problemas de de NPC NPC são são intratáveis. intratáveis. Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Como Determinar se um Problema é NPC? •• Se Se P, P,Q Q ∈∈NP, NP,PP éé NPC NPC ee PP ≤≤ppQ, Q,então então Q Q éé NP-Completo. NP-Completo. •• Para Para provar provar se se um um problema problema de de decisão decisão DD éé NP-Completo, NP-Completo, devemos devemos seguir seguir os os seguintes seguintes passos: passos: 1. Mostra que D ∈ NP. 1. Mostra que D ∈ NP. 2. 2. Selecionar, Selecionar, D1, D1, um um problema problema NPC NPC conhecido. conhecido. 3. 3. Achar Achar uma uma redução redução de de D1 D1 ≤≤pp DDpara para .. 4. 4. Mostrar Mostrar que que aa redução redução foi foi feita feita em emtempo tempo polinomial. polinomial. Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Exemplos de Problemas NPC: 3SAT •• O O problema problema 3SAT 3SATconsiste consiste em em determinar determinar oo resultado resultado de de uma uma expressão expressão booleana booleana EE que que está está escrita escrita em em sua sua FNC FNC éé satisfeita. satisfeita. •• Cada Cada cláusula cláusula de de EEtem tem exatamente exatamente três três literais. literais.Por Por exemplo: exemplo: –– (v1 (v1 ∨∨ ¬v2 ¬v2 ∨∨ v7)∧(v3 v7)∧(v3 ∨∨ v5 v5 ∨∨ ¬v6)∧(v1 ¬v6)∧(v1 ∨∨ ¬v5 ¬v5 ∨∨ ¬v8) ¬v8) éé uma uma instância instância de de 3SAT. 3SAT. •• Aplicando Aplicando os os passos passos para para determinar determinar se se 3SAT 3SATééNPC NPC temos: temos: –– 3SAT 3SATéé claramente claramente NP. NP. –– SAT SATéé NPC. NPC. Se SeSAT SAT≤≤pp 3SAT. 3SAT. (vamos (vamos mostrar mostrar como como aa redução redução éé feita) feita) –– Se Se aa redução redução éé feita feita em em tempo tempo polinomial, polinomial, 3SAT 3SATéé NPC. NPC. Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG 4 3SAT Cobertura de Vértices é NPC Para Para fazer fazer aa redução, redução, devemos devemos substituir substituir cada cada cláusula cláusula Ci Ci em em EE por: por: –– Se Se Ci=(a) Ci=(a) ,, devemos devemos trocar trocar por por Si Si == (a∨b∨c)∧(a∨¬b∨c)∧(a∨b∨¬c)∧(a∨¬b∨¬c) (a∨b∨c)∧(a∨¬b∨c)∧(a∨b∨¬c)∧(a∨¬b∨¬c) .. –– Se Se Ci=(a∨b), Ci=(a∨b), devemos devemos trocar trocar por por Si Si== (a∨b∨c) (a∨b∨c) ∧(a∨b∨¬c) ∧(a∨b∨¬c) –– Se Se Ci= Ci= (a∨b∨c), (a∨b∨c), não não fazemos fazemos nada. nada. –– Se Se Ci= Ci= (a (a11∨a ∨a22∨...∨a ∨...∨akk),),k>3, k>3, devemos devemos trocar trocar por por Si Si == (a ∨a k-1∨a (a11∨a ∨a22∨b ∨b11)∧(¬b )∧(¬b11∨a ∨a33∨b ∨b22)∧(¬b )∧(¬b22∨a ∨a44∨b ∨b33)∧...∧(¬b )∧...∧(¬bk-3 ∨akk)) .. k-3∨ak-1 –– As As variáveis variáveis adicionadas adicionadas são são novas novas variáveis variáveis que que não não estão estão sendo sendo usadas. usadas. •• Reduzir Reduzir 3SAT 3SATpara para Cobertura Cobertura de de Vértices: Vértices: –– Para Para cada cada variável variável xxcrie crie um um nó nó para para xxee ¬x ¬xee conecte conecte os os dois dois nós. nós. –– Para Para cada cada cláusula cláusula (a∨b∨c), (a∨b∨c), crie crie um umtriângulo triângulo ee conecte conecte os os 33 nós. nós. © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 a x x y ¬y z b © Jorge Figueiredo, DSC/UFCG Cobertura de Vértices é NPC Complete Completeaaconstrução: construção: –– Conecte Conectecada cadaliteral literalem emum umtriângulo triângulopara paraooseu seu correspondente correspondente(no (nopar). par). –– Seja n o número de variáveis, m o número de Seja n o número de variáveis, m o número decláusulas cláusulas –– Fazer Fazerkk==nn++2m 2m –– Por Porexemplo, exemplo,(¬x∨y∨z) (¬x∨y∨z) ¬x c Análise e Técnicas de Algoritmos – 2005.1 Cobertura de Vértices é NPC •• ¬x •• Exemplo: Exemplo: (a∨b∨c)∧(¬a∨b∨¬c)∧(¬b∨¬c∨¬d) (a∨b∨c)∧(¬a∨b∨¬c)∧(¬b∨¬c∨¬d) •• O O Grafo Grafo tem tem cobertura cobertura de de vértice vértice de de tamanho tamanho kk == 4+6 4+6 ==10 10 sss sssaafórmula fórmula éé satisfatível satisfatível a ¬a b ¬b c ¬c d ¬d ¬z 12 22 32 a c b 11 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 Análise e Técnicas de Algoritmos – 2005.1 13 21 23 31 33 © Jorge Figueiredo, DSC/UFCG Clique é NPC •• Reduzir Reduzir aa partir partir de de cobertura cobertura de de vértices. vértices. •• O O grafo grafo G Gtem tem cobertura cobertura de de vértice vértice de de tamanho tamanho kk sss sssseu seu complemento complemento tem tem um um clique clique de de tamanho tamanho n-k. n-k. G Análise e Técnicas de Algoritmos – 2005.1 G’ © Jorge Figueiredo, DSC/UFCG 5