0 Bewertungen0% fanden dieses Dokument nützlich (0 Abstimmungen)
26 Ansichten10 Seiten
O documento introduz os conceitos de problemas tratáveis e intratáveis, definindo problemas tratáveis como aqueles que podem ser resolvidos por algoritmos polinomiais e intratáveis como aqueles que só possuem algoritmos exponenciais. Também define as classes P, NP e NP-Completo em relação à complexidade dos algoritmos. Por fim, apresenta exemplos de problemas de decisão, localização e otimização.
O documento introduz os conceitos de problemas tratáveis e intratáveis, definindo problemas tratáveis como aqueles que podem ser resolvidos por algoritmos polinomiais e intratáveis como aqueles que só possuem algoritmos exponenciais. Também define as classes P, NP e NP-Completo em relação à complexidade dos algoritmos. Por fim, apresenta exemplos de problemas de decisão, localização e otimização.
Copyright:
Attribution Non-Commercial (BY-NC)
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
O documento introduz os conceitos de problemas tratáveis e intratáveis, definindo problemas tratáveis como aqueles que podem ser resolvidos por algoritmos polinomiais e intratáveis como aqueles que só possuem algoritmos exponenciais. Também define as classes P, NP e NP-Completo em relação à complexidade dos algoritmos. Por fim, apresenta exemplos de problemas de decisão, localização e otimização.
Copyright:
Attribution Non-Commercial (BY-NC)
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
Bibliografia: ---------------- CORMEN, Thomas H. et al. Algoritmos: teoria e prtica. 2. ed. Rio de Janeiro: Campus, 2002 ZIVIANI, Nivio. Projeto de algoritmos: com implementaes em pascal e C. 2. ed. rev. ampl. Sao Paulo: Thomson, 2005. SALVETTI, Dirceu Douglas; BARBOSA, Lisbete Madsen. Algoritmos. So Paulo: Pearson Education, 2004. AEDs III Problemas NP-Completo Traduo, adaptaes e comentrios: Professor: Ciro Meneses Santos Professor: Andr Gustavo dos Santos O que pode e o que no pode ser resolvido eficientemente por computadores. O objetivo estudar as limitaes dos problemas com respeito complexidade dos algoritmos que os resolvem. Problemas Problemas NP NP- -Completo Completo Conte Conte do do Problemas NP-Completo Tipos de problemas A Classe P A Classe NP Algoritmo No Determinismo Transformaes Polinomiais A Classe NP-Completo A Classe NP-Difcil A questo da computabilidade foi proposta por Hilbert em 1900, que conjecturava que todo problema bem posto seria demonstrvel. Em 1931. Godel apresentou o Teorema da Completude, mas ainda havia a questo formal da definio de computabilidade, que foi fechada em 1936, com a apresentao e a aceitao da Tese de Church. Introdu Introdu o o Introdu Introdu o o Anteriormente havamos estudado como medir a eficincia de um algoritmo atravs do clculo de sua complexidade. Mas uma vez calculada a complexidade, como reconhecer se o algoritmo correspondente ou no eficiente? O mximo que fazamos era compar-lo com outros algoritmos. Agora definimos o seguinte: Um algoritmo eficiente quando a sua complexidade for um polinmio no tamanho da entrada. Assim, algoritmos de complexidade 0(1), 0(n), 0(n 2 ),0(n 5 ), so algoritmos chamados de eficientes. Embora log n no seja um polinmio, seu valor menor que n, ou seja, no pior que um polinomial , por isso pode ser encaixado entre os polinomiais, ou seja, 0(log n), 0(n 2 log n) tambm esto entre os polinomiais. Os demais so genericamente chamados de exponenciais, como 0(2 n ), 0(3 n ), 0(n!) e outros Cuja complexidade no pode ser expressa por um polinmio. Introdu Introdu o o 2 Considere a coleo de todos os algoritmos para resolver um certo problema. O interesse ento saber se nessa coleo existe algum algoritmo que seja eficiente (limite superior polinomial), isto , de complexidade polinomial. Se existir tal algoritmo o problema chamado de tratvel, e intratvel caso contrrio (limite inferiro exponencial). A idia que um problema tratvel pode ser resolvido, para entradas e sadas de tamanho razovel, atravs de um programa de computador. Por outro lado, um algoritmo de complexidade no polinomial, de algum problema intratvel, poderia em certos casos levar sculos para computar os dados de entrada e sada de tamanhos relativamente reduzidos. Introdu Introdu o o Suponha que um algoritmo 0(2 n ) gaste 1 hora para resolver um problema de tamanho n=50. Ento levaria cerca de 2 horas para n=51, e um ano para n=59. Mesmo um milho de computadores trabalhando juntos, dada um deles um milho de vezes mais rpido que os atuais no seriam suficientes para chegar a n = 100. De acordo com esta definio, para mostrarmos que um problema tratvel, basta apresentar um algoritmo polinomial que o resolva. Por outro lado, para verificar que intratvel, h necessidade de provar que todo possvel algoritmo que o resolva no possui complexidade polinomial. Isto bastante difcil de se mostrar, e conforme veremos mais adiante, existem vrios problemas que no se sabe se so tratveis ou no. O que se sabe que por enquanto no so tratveis. Introdu Introdu o o Os problemas para os quais conhecemos apenas algoritmos exponenciais so geralmente problemas onde existe um grande nmero de alternativas e precisamos verific-las para saber qual responde ao problema. Quando o nmero de alternativas exponencial fica difcil desenvolver um algoritmo eficiente. Se testarmos uma de cada vez o algoritmo se torna exponencial. Se conseguimos descobrir alguma propriedade particular do problema que elimine algumas alternativas sem necessidade de verific-las, podemos melhorar o desempenho do algoritmo. Isto depende de um estudo aprofundado do problema da busca destas propriedades. Se consegussemos testar todas simultaneamente o desempenho seria consideravelmente melhorado. Introdu Introdu o o Existem algumas classes gerais de problemas que podem ser resolvidos por algoritmos, entre elas os problemas de deciso, de localizao e de otimizao. Num problema de deciso, o objetivo consiste em decidir se a resposta SIM ou NO. Num problema de localizao, o objetivo localizar uma certa estrutura que satisfaa um conjunto de propriedades dadas. Se as propriedades envolvem algum critrio de otimizao, ento o problema torna-se um problema de otimizao. Tipos de problemas Tipos de problemas Em alguns casos existem problemas onde podemos identificar, um de deciso, outro de localizao e outro de otimizao que podem estar associados. Tipos de problemas Tipos de problemas Problema de Localizao Encontrar uma estrutura S que satisfaa uma propriedade P. Resposta: Uma estrutura S. Problema de Deciso Existe uma estrutura S que satisfaa uma propriedade P ? Resposta: Sim ou No. Problema de Otimizao Encontrar uma estrutura S que satisfaa uma propriedade P e que seja a melhor, segundo algum critrio C de medida. Resposta: uma estrutura S tal que no haja outra melhor. Problema de clique em um grafo (Um clique em um grafo um subconjunto de vrtices contendo todas as arestas possveis entre eles) Deciso: Dado o grafo G abaixo, existe um clique de tamanho maior ou igual a 3? Localizao: Dado o grafo G abaixo, encontre um clique de tamanho maior ou igual a 3. Otimizao: Dado o grafo G abaixo, qual o maior clique? Tipos de Problemas Tipos de Problemas Exemplos Deciso: SIM (j que existe um clique > 3) Localizao: {c,e,f} ( um clique do tamanho > 3) Otimizao: {c,d,e,f} (o maior clique de tamanho = 4) b a d c e f 3 Problema do caixeiro viajante PCV (O percurso do caixeiro viajante deve passar por todos os vrtices exatamente uma vez, e voltar a origem, Ciclo de Hamilton) Deciso: Dado o grafo G abaixo, existe um percurso de peso total menor ou igual a 17? Localizao: Dado o grafo G abaixo, encontre um percurso de peso total de tamanho menor ou igual a 17. Otimizao: Dado o grafo G abaixo, qual o percurso de menor peso? Tipos de Problemas Tipos de Problemas Exemplos Deciso: SIM (j que existe um percurso de peso total s 17) Localizao: {a,b,c,d,a} (que um percurso de peso total = 16 Otimizao: {a,b,d,c,a} (que o menor percurso de peso total =11) d a c b 5 2 6 1 4 2 Tipos de Problemas Tipos de Problemas Naturalmente, o custo de se resolver um problema de deciso no maior que o de se resolver um problema de localizao. Resolvendo um de localizao estaremos resolvendo o de deciso associado. E o custo de se resolver um problema de localizao no maior que o de um de otimizao. Resolvido um de otimizao resolvemos o de localizao associado. Para a diviso de problemas nas classe P, NP, NP- completo e NP-difcil, vamos utilizar geralmente problemas de deciso. Se o problema de deciso intratvel, tambm o de localizao e de otimizao o sero. A Classe P A Classe P A classe P de problemas de deciso contm os problemas cuja complexidade de seu pior caso uma funo polinomial no tamanho da entrada. Por exemplo, o problema de ordenao de nmeros em um vetor pertence classe P j que existem algoritmos polinomiais que resolvem o problema, entre eles o Seleo 0(n 2 ) e o Quicksort 0(n log n). Ordenao: dada uma lista contendo n itens, coloc-los em ordem segundo algum critrio de ordenao. Existem algoritmos polinomiais para resolver este problema, como insero O(n 2 ), Seleo O(n 2 ), Heapsort (n log n), portanto o problema da classe P. Caminho mais curto: dado um grafo G com pesos positivos nas arestas contendo n vrtices, e dois vrtices v e w do grafo, encontrar o caminho mais curto entre v e w. O algoritmos proposto por Dijkstra encontra a soluo em tempo O(n 2 ), logo o problema da classe P. A Classe P A Classe P Para se demonstrar que um problema pertence classe P basta mostrar um algoritmo polinomial que o resolva. Mas para demonstrar que um problema no pertence classe P, no basta mostrar um algoritmo exponencial, e nem dizer que todos os algoritmos conhecidos para resolve-lo sejam exponenciais. Devemos provar que no existe algoritmo polinomial para resolve-lo. Por exemplo, os algoritmos conhecidos at agora para o PCV so todos exponenciais. Entretanto, no conhecida uma prova de que seja impossvel obter um algoritmo polinomial para resolver o PCV. Sabemos apenas que ningum foi capaz de criar um algoritmo polinomial. No se sabe portanto se o caixeiro viajante pertence ou no classe P. como veremos a seguir, muitos problemas ainda esto indefinidos nesta questo. Problemas aparentemente Problemas aparentemente Dif Dif ceis ceis Satisfabilidade 1. Satisfabilidade - Satisfyability Uma expresso booleana dita satisfativel se existe uma atribuio de valores, verdadeiro ou false, as variveis de tal modo que o valor da expresso seja verdadeiro Dados: uma expresso booleana E na FNC Deciso: E pode ser satisfeita? Considere um conjunto de variveis booleanas x1, x2, x3.... E seus complementos x1, x2, x3... Se a varivel x i verdadeira seu complemento falso, e vice-versa. Uma expresso est na FNC (forma normal conjuntiva) quando as variveis esto dispostas em clusulas ligadas por AND (representado por *). Assim: dada a expresso: E1 = (x1 + x2) * (x1 + x2 + x3) * (x1 + x2 + x3). Verificar se ela pode ser satisfeita. Resposta: SIM. Basta atribuir os valores x1= V, x2 = V e x3 = V que E = V. Existem outros valores que tambm provam que a resposta SIM. E2 = (x1 + x2)*(x1 + x3 + x2)*(x3) Como outro exemplo, dada a expresso: E3 = x1 * x1 verificar se ela pode ser satisfeita. Claramente a resposta NO. Se x1 = V e x1 = F e vice-versa. Assim a expresso E sempre ser falsa. Problemas aparentemente Problemas aparentemente Dif Dif ceis ceis Satisfabilidade 4 2. Clique Dados: Um grafo G e um inteiro k > 0 Deciso: G possui um clique de tamanho > k? Dado um grafo G = (V.A), um clique um subconjunto V de V tal que todo par de vrtices de V seja adjacente. Isto , se v e w pertence a V, ento existe a aresta (v,w) deve existir em A. No grafo abaixo {d,b,e} um clique de tamanho 3. O problema consiste em dado um grafo verificar se h um clique de tamanho pelo menos igual a um valor dado. Problemas aparentemente Problemas aparentemente Dif Dif ceis ceis Clique b f h a c d g e 3. Conjunto Independente Dados: um grafo G e um inteiro k > 0 Deciso: G possui um conjunto independente de tamanho > k? Dado um grafo G = (V.A), um conjunto independente de vrtices um subconjunto V de V tal que todo par de vrtices de V no seja adjacente. Isto , se v e w pertence a V, ento existe a aresta (v,w) no existe em A. No grafo {a, b, c, g, h} um conjunto independente de tamanho 5. O problema consiste em dado um grafo verificar se h um conjunto independente de tamanho pelo menos igual a um valor dado. Problemas aparentemente Problemas aparentemente Dif Dif ceis ceis Conjunto Independente b f h a c d g e 4. Ciclo Hamiltoniano Direcionado Dados: Dgrafo D Deciso: D possui um ciclo hamiltoniano? Um ciclo hamiltoniano em um dgrafo (grafo com arestas direcionadas) um ciclo que contm exatamente uma vez cada vrtice de D. assim, no grafo G1 abaixo o ciclo a, c, f, e, d, b, a um ciclo hamiltoniano. E o grafo G2 no possui ciclo hamiltoniano. a d c e b G2 Problemas aparentemente Problemas aparentemente Dif Dif ceis ceis Ciclo Hamiltoniano Direcionado d G1 a c f e b 5. Colorao Dados: grafo G e um inteiro k > 0 Deciso: G possui uma colorao com no mximo k cores? Uma colorao em um grafo G consiste em se atribuir cores aos vrtices de G de tal forma que vrtices adjacentes possuam cores diferentes. O grafo abaixo admite uma colorao com 3 cores. X(G) Nmero cromtico de G o menor nmero de cores necessrio para colorir G. Problemas aparentemente Problemas aparentemente Dif Dif ceis ceis Colorao a d c f e b a vermelho b azul c amarelo d azul e amarelo f azul Algoritmos no Algoritmos no- - determin determin sticos sticos Notao: escolhe(S); funo que escolhe arbitrariamente um elemento de S. falha: sinal de terminao sem sucesso sucesso: sinal de terminao com sucesso Um algoritmo no determinstico um algoritmo que faz uso da funo escolhe(S) e das instrues falha e sucesso. Um algoritmo no determinstico termina com insucesso sse no existe escolha que leve a uma terminao com sucesso. Portanto, se pelo menos uma escolha levar ao sucesso, o algoritmo termina com sucesso. Os algoritmos no determinsticos so interessantes, na soluo de problemas em que existem vrias alternativas para serem testadas. A Classe NP A Classe NP Define-se a classe NP de problemas como sendo aquela que compreende todos os problemas de deciso t . Tais que existe uma justificativa resposta SIM para t, cujo passo de reconhecimento pode ser realizado por um algoritmo polinomial no tamanho da entrada de t. Vale ressaltar que na definio da classe NP no se exige uma soluo polinomial para t, apenas que exista um algoritmo polinomial para verificar a resposta SIM. Alm disso, o tamanho da justificativa dada pelo passo de exibio no pode ser exponencial com a entrada de t, pois o tamanho da justificativa seria grande demais e qualquer algoritmo levaria um tempo exponencial no tamanho da entrada de t para verific-la mesmo um algoritmo polinomial em relao ao tamanho da justificativa. Tambm no exigido nada em relao a justificativa NO dada pelo passo de exibio. De fato, h problemas de NP que admitem algoritmos polinomiais para suas justificativas NO e outros para os quais tal algoritmo no conhecido. 5 A Classe NP A Classe NP O termo NP vem de No-determinista Polinomial. A idia que um problema NP pode ser resolvido polinomialmente por uma mquina no- determinista. Uma mquina no-determinista consegue escolher, entre vrias alternativas, aquela que leva soluo. (Oraclo, Adivinha). Desta forma, o resultado no determinstico, ou seja, os passos no so seguidos de uma forma sistemtica. Uma mquina no-determinista possui uma funo ESCOLHE que toma estas decises. A Classe NP A Classe NP Suponha que por algum processo um problema de deciso t foi resolvido. Ento deve haver alguma forma de se testar se a soluo SIM ou NO dada ao problema, realmente a soluo. Para fazer isto a soluo composta por um conjunto de argumentos que, quando interpretados, atestam a veracidade da resposta SIM ou NO dada ao problema. Considere o Problema clique, onde se procura um clique de tamanho > k em um grafo G. uma justificativa para uma resposta SIM pode ser obtida apresentando-se um clique C de tamanho > k. O teste de veracidade ser feito observando-se se de fato C um clique e se tem tamanho > k. Uma justificativa para a resposta NO pode ser feita listando-se todos os clique do grafo. O teste de veracidade consiste em se observar que a lista realmente contm todos os clique e que o tamanho de cada um deles < k. O processo de se justificar respostas a problemas de deciso compe-se de duas fases distintas: FASE 1: Exibio - exibir uma justificativa FASE 2: Reconhecimento - verificar que a justificativa apresentada no processo de exibio de fato satisfatria. A Classe NP A Classe NP Problema de Ciclo de Hamiltoniano Soluo: Sim Exibio: Consiste da sequncia C de vrtices a,b,c,d,e,f,a Reconhecimento: Deve-se verificar que C e um ciclo (basta verificar que existem as arestas de (a,b),(b,c) e ... (f,a)) e contm cada vrtice de G exatamente uma vez (basta ordenar os vrtices e verificar que no h vrtices repetidos e se existe todos os vrtices de G). Tipos de Problemas Tipos de Problemas Exemplos G1 a c f e b d Problema de Ciclo de Hamiltoniano Soluo: No Exibio: Consiste da apresentao das sequncias {(a,b,c,a),(e,c,d,e),(e,c,f,e),(e,d,c,f,e)} Reconhecimento: Deve-se comprovar que cada sequncia de vrtices um cliclo no Hamiltoniano. A verificao deve ser feita para todos os ciclos, o que pode ser exponencial. At o momento, desconhecido se existe algum outro processo para justificar a respota NO a Ciclo de Hamiltoniano, tal que o passo de reconhecimento possa ser feito por algum algoritmo polimonial. Tipos de Problemas Tipos de Problemas Exemplos G2 a c f e b d Tipos de Problemas Tipos de Problemas Exemplos Ciclo Hamiltoniano em mquina no-determinsta Entrada: grafo G = (V,A) n = |V| // nmero de vrtices do grafo for i = 1 to n marca[i] = no visitado x = 1 marca[x]=visitado for i = 2 to n prox = ESCOLHE(V) //escolhe um dos vrtices if(marca[prox] = visitado) ou (aresta(x,prox) e A) return NO marca[prox] = visitado x = prox if(aresta(x,1) e A) return SIM else return NO 6 A Classe NP A Classe NP Como mostrar que um determinado problema esta em NP? Elabore um algoritmo no-deterministico que execute em tempo polinomial para resolver o probelma. OU Define-se uma justificativa J para a resposta SIM. Elabora-se um algoritmo polinomial para reconhecer se J est correta. A entrada desse algoritmo consiste de J e da entrada de t. Se no pudermos elaborar um algoritmo polinomial para reconhecer a justificativa SIM ou um algoritmo no- deterministico, no significa que o problema no pertence a NP, mas que ainda no sabemos se pertence ou no. Problema Clique NP? (i) A justificativa para a soluo SIM um subconjunto V de vrtices do grafo G. (ii) Para verificar a justificativa SIM basta: - verificar o tamanho do subconjunto apresentado O|V| - contar os vrtices e verificar se o tamanho maior ou igual ao valor K de entrada. O(1). - verificar se existe arestas em G entre todos os pares de vrtices de V, que pode ser feito max O(|v| 2 ) para cada vrtices de V verificar se existem arestas para os outros. Como tudo pode ser feito em tempo polinomial, ento Clique NP. Problemas NP Problemas NP Exemplos Problema Ciclo Hamiltoniano NP? (i) A justificativa para a soluo SIM uma sequncia de vrtices de G. (ii) Para verificar a justificativa SIM basta: - verificar se cada vrtice aparece exatamente uma vez contar quantos existem, O(n) e verificar se no h repetido O(n) basta marcar enquanto verifica e observar se no marcou mais de uma vez. - verificar se existem arestas ligando os vrtices consecutivos, O(n) medida que percorre a sequncia observar o valor em uma matriz de adjacncia (iii) Para verificar a justificativa NO (no e simples): - Listar todos os ciclos de G e mostrar que eles no so hamiltonianos. Como tudo pode ser feito em tempo polinomial, ento Ciclo Hamiltoniano NP. Problemas NP Problemas NP Exemplos Todo problema pertencente classe P pertence classe NP? ( P _ NP ) A demonstrao pde ser feita da seguinte forma: A questo P A questo P NP? NP? Seja t e P um problema de deciso. Existe ento um algoritmo A que apresenta a soluo de t em tempo polinomial no tamanho de sua entrada. Em particular A pode ser utilizado como algoritmo de reconhecimento para uma justificativa resposta SIM de t. Logo t e NP. NP P A pergunta natural seguinte seria P = NP ou P=NP? Ou seja, todos os problemas para os quais conhecemos em algoritmo polinomial para verificar a justificativa SIM tambm admitem um algoritmo polinomial para ser solucionado, s ainda no conhecemos tal algoritmo? Ou existem problemas em NP para os quais no h como se propor um algoritmo polinomial para solucion-lo, mesmo conhecendo um algoritmo para se verificar a soluo SIM? At o momento no se conhece uma resposta a esta pergunta 3 . A questo A questo P=NP P=NP ou P ou P NP? NP? 3 recentemente, em 24 de maio de 2000, foi proposto um prmio de um milho de dlares para quem responder a esta pergunta. As regras podem ser vista em www.claymath.org. Concluses sobre Concluses sobre Problemas NP Problemas NP Como ilustrao considere que voc tenha chegado a uma festa e que saber se existe algum conhecido na festa. Para solucionar o problema voc teria que olhar para cada pessoa, o que seria O(n), sendo n o nmero de pessoas na festa. Suponha que algum se apresente como seu conhecido. A verificar da soluo SIM pode ser feita em O(1), claro. Isto apenas uma ilustrao para mostrar que provavelmente encontrar a soluo mais difcil que verificar uma soluo SIM, j que o problema apresentado claramente pertence classe P. 7 Concluses sobre Concluses sobre Problemas NP Problemas NP Outro exemplo interessante o seguinte: se algum te diz que o nmero 13.717.421 pode ser escrito como 3607 X 3803 fcil verificar 4 . H fortes evidencias que P = NP pois a classe NP incorpora um grande nmero de problemas com grande interesse prtico, para os quais inmeros pesquisadores j desenvolveram esforos para elaborar algoritmos eficientes e ainda no obtiveram sucesso. 4. recentemente, em agosto de 2002, foi proposto um algoritmo polinomial para este problema, mostrando que, neste problema, tanto verificar quanto resolver possuem algoritmos eficientes. Suponha que queiramos resolver um certo problema P1 e j conhecemos um algoritmo para resolver um outro problema P2. Uma transformao do problema P1 (com dados de entrada E1 e soluo S1) no problema P2 (com dados de entrada E2 e soluo S2) consiste em: (i) transformar os dados de entrada E1 do problema P1 em dados de entrada E2 para o problema P2. (ii) transformar a soluo S2 e P2 obtida com os dados de entrada E2 em uma soluo S1 e P1. Transforma Transforma es es polinomial polinomial Um problema P1 dito polinomialmente transformvel em um problema P2, denotado por P1 P2, quando: (i) a transformao de E1 e E2 e de S2 e S1 podem ser feitas em tempo polinomial. (ii) para toda possvel entrada E1 e P1, P2 admite resposta SIMse e somente se P1 possui resposta SIM. Quando um problema P1 polinomialmente transformvel em P2, dizemos tambm que P1 se reduz a P2, ou seja, resolver P1 reduzido a resolver P2. Resolvendo P2 tambm resolveremos P1. Dados de P1 Dados de P2 Soluo de P2 Soluo de P1 Transformao de E1 emE2 Transformao de S1 emS2 Algoritmo resolver P2 para Esquema para Esquema para transforma transforma es es Sejam t1 e t2 dois problemas SIM ou NO Suponha que um algoritmo A2 resolva t2. Se for possvel transformar t1 em t2 e a soluo de t2 em soluo de t1, ento A2 pode ser utilizado para resolver t1. Se pudermos realizar as trasnformaes nos dois sentidos em tempo polinomial, ento t1 polinomialmente transformvel em t2. O contrrio no necessariamente verdadeiro, ou seja, se P1 e P, no implica que P2 e P. podemos transformar um problema simples em um complexo e mostrarmos que a soluo do problema complexo encontra uma soluo do simples. Transforma Transforma es es Transforma Transforma es es Exemplo Clique Conjunto Independente Seja P1 o problema clique e P2 o problema Conjunto Independente. A entrada E1 para o problema clique consiste em um grafo G = (V.A) e um inteiro k>0. Para transformar esta entrada na entrada E2 para o problema conjunto Independente, considere o grafo G = (V,A) e o mesmo inteiro k. O grafo G contm os mesmos vrtices que G, mas contm apenas as arestas que no existem em G, ou seja, dois vrtices ligados por alguma aresta em G no so ligados em G, e dois vrtices no ligados em G so ligados em G . Isto demonstra que Clique Conjunto Independente. Transforma Transforma es es Exemplo Clique Conjunto Independente (i) A construo de G a partir de G polinomial. A transformao da soluo tambm polinomial, na verdade O(1) pois nem h necessidade de transformao neste caso. (ii) Existe um conjunto independente de tamanho > k em G e somente se existe um clique de tamanho > k em G. G1 a c f e b d G1 a c f e b d Note que {a,b,d,f} um conjunto independente de G de tamanho 4. O mesmo conjunto um clique em G. Problemas como clique e conjunto Independentes so chamados problemas equivalentes. (t1 t 2 e t2 t1). 8 A Classe NP Completo A Classe NP Completo Esta classe envolve os problemas de maior dificuldade entre todos os problemas de NP. Os problemas pertencentes a classe de NP-completo so todos equivalentes entre si. Um problema t pertence classe NP-completo se as seguintes condies forem satisfeitas: (i) t e NP (ii) todo problema de deciso t e NP satisfaz t t. Isto implica que: t e NP, t NP-Completo; ento Se t e NP-Completo e t = P ento P = NP. Sejam t1 e t2 problemas de deciso e NP. Se t1 NP- Completo e t1 t2 ento t2 tambm NP-completo. A Classe NP Completo A Classe NP Completo Mostrar que um Problema e NP-Completo Mostre que o problema esta em NP Existe um algo no-determinstico (confirmao para SIM) Mostre que um problema NP-Completo conhecido pode ser polinomialmente transformado para ele Satisfabilidade t Cook apresentou uma prova direta de que SAT e NP- Completo SAT t1 e t1 t2 => SAT t2 Demostra Demostra es es Exemplo Clique NP-Completo? Entrada: Grafo G e inteiro k Seja C um Clique, possvel verificar em tempo polinomial. Logo Clique e NP. SAT NP-Completo Entrada: Expresso genrica. Transformao de um problema NP-Completo para Clique. Soluo de SAT pode ser utilizada para soluo Clique? O grafo G construdo da seguinte maneira: Existe um vrtice diferente em G para cada ocorrncia de varivel em E; existe uma aresta (vi,vj) em G, para cada par de variveis xi,xj de E, tais que xi = xj, e xi, xj ocorrem em clusulas diferentes de E. Desta forma, cada aresta (vi,vj) de G tal que as variveis xi e xj, correspondentes em E, ento em clusulas diferentes e podem assumir o valor verdadeiro simultaneamente. Logo um clique em G com p vrtices corresponde em E a p variveis, uma em cada clusula SAT NP-Completo e SAT Clique, ento Clique NP-Completo x1 x2 x3 x1 x1 x2 x3 x2 E = (x1 + x2) * (x1 + x2 + x3) * (x1 + x2 + x3) Note que cada clique de tamnaho 3 no grafo ao lado corresponde a uma atribuio de Verdadeiro s variveis correspondentes em E de tal forma que E seja satisfeita. Em particular o clique mostrado diz que se x1 = V, x2 = V e x3 = V, ento E = V. Ou seja, uma soluo x1 = V, x2 = F e x3 = F. Demostra Demostra es es Exemplo Demostra Demostra es es Exemplo Deciso - PCV NP-Completo? Entrada: Grafo G e um inteiro k. Seja um Grafo G, h um clico que passa por todos os vrtices apenas uma vez com peso mximo igual a k. E possvel elabora um algoritmo no-deterministico ou verificar a resposta SIM. Logo PCV e NP. Ciclo Hamiltoniano NP-Completo Entrada: Grafo G. Transformao de um problema NP-Completo para PCV. Soluo do Ciclo Hamiltoniano pode ser utilizada para soluo PVC? Construmos um grafo G a partir de G contendo todos os vrtices e arestas de G. Atribumos peso 1 a todos estas arestas. Criamos todas as demais arestas no que no pertena a G com peso 2. Se existe um ciclo em G com peso mximo n, ento existe um ciclo Hamiltoniano em G. Caso contrrio, um ciclo em G dever passar por aresta e peso 2, o que ultrapassar o peso total n. d a e c f b d a e c f b 1 1 1 1 1 1 2 2 2 2 G G O ciclo {a, b, c, d, e f, a} em G tem peso total 6, e representa um ciclo Hamiltoniano em G, um grafo de 6 vrtices. Deciso PCV NP; Deciso do Ciclo Hamiltoniano e NP-Completo Deciso do Ciclo Hamiltoniano Deciso PCV Ento, Deciso do PCV NP-Completo Demostra Demostra es es Exemplo 9 A Classe NP A Classe NP- -Dif Dif cil cil A classe NP-Difcil (NP-Hard) compreende os problemas para os quais apenas o passo (ii) do esquema para se demonstrar que um problema NP-Completo considerada, ou seja, um problema t NP-Difcil se um problema NP-Completo t pode ser em t, t t, no importando se t ou no NP. Desta forma, a classe NP-Completa a interseco da classe NP-Difcil e NP. Somente problemas de deciso podem ser NP- Completo, j que em problemas de otimizao necessitamos verificar se uma dada soluo realmente a melhor, e isto no poder ser feitos em tempo polinomial. Alm disso, se t 1 um problema de deciso e t 2 o correspondente de otimizao, quase certo que t 1 t 2 . NP- Difcil NP- Completo NP P Demostra Demostra es es Exemplo Otimizao PCV NP-Difcil? Entrada: Grafo G e um inteiro k. Deciso PCV NP-Completo, Se resolvemos otimizao do PCV para este grafo G, o peso total p do ciclo encontrado o menor valor possvel. Se p s k, ento o problema de deciso tem resposta SIM. Se p > k ento o problema de deciso tem resposta NO. Logo, possvel transformar polinomialmente Deciso em Otimizao o PCV. Como a deciso NP- Completo, ento a otimizao NP-Difcil. Demostra Demostra es es Exemplo Halting problem NP-Difcil? (Parada) O problema consiste em se decidir para qualquer algoritmo e qualquer entrada se o algoritmo vai terminar ou entrar em loop infinito. Um exemplo de um problema NP-Difcil que no NP- Completo. Para mostrar que halting problem NP-Difcil, mostraremos que SAT halting problema. A entrada do algoritmo a expresso E com n variveis. O algoritmo testa as 2n possibilidades de valores para as variveis. Se algum delas satisfizer a expresso E, o algoritmo pra. Seno, entra em loop infinito. Algoritmo para halt resolve SAT, logo Halt NP- Difcil. Mas este problema indecidvel, ento no NP. Exerc Exerc cios cios Nas questes de 1 a 12, identifique se a afirmao Verdadeira ou Falsa e justifique: 1. Sendo t1 e t2 dois problemas tais que t1 t2 e t2 e P, ento t1 e P. 2. Sendo t1 e t2 dois problemas tais que t1 t2 e t2 e P, ento t2 e P. 3. Como no se conhece um algoritmo polinomial para Clique ento necessariamente clique e P. 4. Se existir um algoritmo polinomial para um problema NP-completo, ento P=NP. 5. Se um problema t e P ento t e NP 6. Se um problema t e NP ento t e P 7. Se um problema t e NP-completo ento t e NP 8. Se um problema t e NP-difcil ento t e NP 9. Se um problema t e NP-difcil ento t e NP 10. Sendo t1 e t2 dois problemas, t1 e NP-completo e t2 e NP-completo ento t1 t2 e t2 t1 11. Sendo t1 e t2 dois problemas, t1 e P e t2 e P ento t1 t2 e t2 t1 12. Seja t o problema de se calcular o valor de 2 n , dado o valor de n, podemos dizer que t e P pois no existe algoritmo polinomial, j que a complexidade O(2 n ). 13. Considerando o problema de Colorao de vrtices em grafos, mostre a diferena entre problemas de deciso, localizao e otimizao. Exerc Exerc cios cios 14. Mostre que o problema da colorao de vrtices e NP 15. Dado um grafo G e um inteiro k, mostre que o problema de se colorir os vrtices do grafo de forma tal que nenhum vrtice adjacente tenha a mesma cor, com um nmero de cores > k um problema que pertence classe NP. 16. Mostre que o problema do Caixeiro Viajante e NP . Problema do Caixeiro Viajante achar um percurso de peso menor ou igual a k num grafo G contendo aresta com peso entre todos os possveis pares de vrtices. 17. Mostre que conjunto Independente um problema NP-completo. Exerc Exerc cios cios 10 18. Sabendo-se que o problema de Ciclo Hamiltoniano em grafo no direcionado NP-completo, mostre que o problema de Ciclo Hamiltoniano em grafo direcionado tambm NP-completo. 19. Um funcionrio precisa visitar n cidades, sem repeti-las, em qualquer ordem. Como as passagens areas so fornecidas pela empresa, ele deseja maximizar o programa de milhagens, ou seja, escolher um caminho tal que a distncia percorrida seja a mxima possvel. Sabendo-se que o Problema do Caixeiro Viajante NP-completo, mostre o problema do funcionrio tambm em NP-completo. 20. Sabendo-se que o problema de Ciclo Hamiltoniano NP-completo, prove que o problema do Caixeiro Viajante NP-completo. Exerc Exerc cios cios