13.07.2015 Views

Teoria dos problemas completos na classe NP - Departamento de ...

Teoria dos problemas completos na classe NP - Departamento de ...

Teoria dos problemas completos na classe NP - Departamento de ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Teoria</strong> <strong>dos</strong> <strong>problemas</strong> <strong>completos</strong> <strong>na</strong> <strong>classe</strong> <strong>NP</strong>Armando MatosNelma Moreira<strong>Departamento</strong> <strong>de</strong> Ciência <strong>de</strong> ComputadoresFaculda<strong>de</strong> <strong>de</strong> Ciências, Universida<strong>de</strong> do Portoemail: {acm,<strong>na</strong>m}@ncc.up.ptDCC-FCUP


Conteúdo1 Classes <strong>de</strong> complexida<strong>de</strong> 31.1 Classe P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Classe <strong>NP</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Problemas, Linguagens e Complexida<strong>de</strong> 52.1 Problemas <strong>de</strong> <strong>de</strong>cisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2 Algoritmos <strong>de</strong>terminísticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3 Algoritmos não <strong>de</strong>terminísticos . . . . . . . . . . . . . . . . . . . . . . . . . . 142.4 Relação entre P e <strong>NP</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5 Reduções entre <strong>problemas</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Problemas <strong>NP</strong>-<strong>completos</strong> 224 Redução <strong>de</strong> Turing e Problemas <strong>NP</strong>-hard 345 Estrutura das Classes <strong>de</strong> Problemas 385.1 Classe co<strong>NP</strong> e Estrutura <strong>de</strong> <strong>NP</strong> . . . . . . . . . . . . . . . . . . . . . . . . . 385.2 Hierarquia polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 Exercícios <strong>de</strong> Revisão sobre Classes <strong>de</strong> Complexida<strong>de</strong> 456.0.1 Or<strong>de</strong>ns <strong>de</strong> Gran<strong>de</strong>za . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456.1 Codificações Razoáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466.2 Classes <strong>de</strong> Complexida<strong>de</strong> e <strong>NP</strong>-completitu<strong>de</strong> . . . . . . . . . . . . . . . . . . 47DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


CONTEÚDO 2Bibliografia [GJ79, Cap. 1–3,5,7.1,7.2], [Pap94, Cap. 8, 9, 10 e 17] e [BC94, Cap. 4, 5 e 7]DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


Capítulo 1Classes <strong>de</strong> complexida<strong>de</strong>O conjunto das linguagens <strong>de</strong>cidíveis po<strong>de</strong> ser dividida em <strong>classe</strong>s <strong>de</strong> complexida<strong>de</strong>, quecaracterizam os limites <strong>dos</strong> recursos computacio<strong>na</strong>is usa<strong>dos</strong> para as <strong>de</strong>cidir. Uma <strong>classe</strong> <strong>de</strong>complexida<strong>de</strong> é especificada pelo mo<strong>de</strong>lo <strong>de</strong> computação – vamos consi<strong>de</strong>rar máqui<strong>na</strong>s <strong>de</strong>Turing com k-fitas –, pelo modo <strong>de</strong> computação – <strong>de</strong>terminístico ou não <strong>de</strong>terminístico –,pelo um recurso – p.e., tempo ou espaço – e por um limite, isto é, uma função <strong>de</strong> N em N.Uma <strong>classe</strong> <strong>de</strong> complexida<strong>de</strong> é então um conjunto C(f(n)) <strong>de</strong>finido por:C(f(n)) = {L | Lé <strong>de</strong>cidida por uma máqui<strong>na</strong> <strong>de</strong> Turing M do modoa<strong>de</strong>quado, tal que para qualquer x, e |x| = n, M gastano máximo f(|x|) unida<strong>de</strong>s do respectivo recurso}Uma função f(n) para ser limite <strong>de</strong> complexida<strong>de</strong> tem <strong>de</strong> ser total e não <strong>de</strong>crescente. Nocaso, <strong>de</strong> funções <strong>de</strong> complexida<strong>de</strong> temporal <strong>de</strong>ve ainda ser tal que exista uma TM M f <strong>de</strong>k-fitas que, para quaisquer da<strong>dos</strong> x, pare em exactamente f(|x|) passos. Esta característicapermite a simulação <strong>de</strong> “relógios” em máqui<strong>na</strong>s <strong>de</strong> Turing. Restrições semelhantes se impõempara funções <strong>de</strong> complexida<strong>de</strong> <strong>de</strong> espaço.1.1 Classe PSeja M = (S,γ,Σ,s 0 ,δ,F) uma máqui<strong>na</strong> <strong>de</strong> Turing (<strong>de</strong>terminística) e x ∈ Σ ⋆ , o temporequerido por M em x, T M (x), é o número <strong>de</strong> passos da computação <strong>de</strong> M para da<strong>dos</strong> x. 1Então, a complexida<strong>de</strong> temporal <strong>de</strong> M é dada por:T M (n) = max{t | ∃x ∈ Σ ⋆ , |x| = n e t = T M (x)}Se T M (n) é O(f(n)), diz-se que M opera em tempo limitado por f(n). Se f(n) é um polinómiodizemos que M é polinomial.Recor<strong>de</strong> que, se uma máqui<strong>na</strong> <strong>de</strong> Turing M <strong>de</strong>cidir uma linguagem L, então F = {s y ,s n }.Dada uma função f(n), <strong>de</strong>fine-se a <strong>classe</strong> <strong>de</strong> complexida<strong>de</strong> TIME(f(n) por:TIME(f(n)) = {L | L é <strong>de</strong>cidível por uma TM M tal que T M (n) é O(f(n))}1 Se a computação não parar T M(x) = ∞. Nesta secção vamos consi<strong>de</strong>rar ape<strong>na</strong>s máqui<strong>na</strong>s <strong>de</strong> Turing queparam sempre.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


1.2 Classe <strong>NP</strong> 4A <strong>classe</strong> P é <strong>de</strong>finida como o conjunto <strong>de</strong> linguagens que são <strong>de</strong>cidíveis em tempo polinomialpor uma TM, isto é:1.2 Classe <strong>NP</strong>P = ⋃ k≥1TIME(n k )Seja N = (S,γ,Σ,s 0 ,∆,F) uma máqui<strong>na</strong> <strong>de</strong> Turing não- <strong>de</strong>terminística (NDTM), on<strong>de</strong>∆ ⊆ (S × Γ) × (S × Γ × {l,r})Recor<strong>de</strong> que um passo <strong>de</strong> computação entre duas configurações é <strong>de</strong>finido por uma relaçãoxsy@ >> M > x ′ s ′ y ′ se e só se existe ((s,α),s ′ ,α ′ ,d) ∈ ∆ que torne a transição possível.Então uma computação <strong>de</strong> N (em n passos, @ >> N > n ) com da<strong>dos</strong> x ∈ Σ ⋆ po<strong>de</strong> ser vistacomo uma árvore <strong>de</strong> computação. Cada caminho da árvore iniciado <strong>na</strong> raiz é um caminho<strong>de</strong> computação. Diz-se que N aceita x ∈ Σ ⋆ , se a árvore <strong>de</strong> computação <strong>de</strong> N com da<strong>dos</strong>x incluí pelo menos um caminho <strong>de</strong> computação que termi<strong>na</strong> num estado <strong>de</strong> aceitação. Istoé, N aceita x se existe uma sequência <strong>de</strong> escolhas não-<strong>de</strong>terminísticas que leva a um estado<strong>de</strong> aceitação. Note-se que x só é rejeitado se todas as sequências <strong>de</strong> escolhas (caminhos <strong>de</strong>computação) conduzirem a um estado <strong>de</strong> rejeição. Note ainda a assimetria entre a aceitaçãoe a rejeição por estas máqui<strong>na</strong>s, que não existia <strong>na</strong>s máqui<strong>na</strong>s <strong>de</strong> Turing <strong>de</strong>terminísticas.Seja L(N) = {x ∈ Σ ⋆ | N aceita x}. Se L ⊆ Σ ⋆ , N <strong>de</strong>ci<strong>de</strong> L se L = L(N).Se N aceita x, o tempo associado é <strong>de</strong>finido pelo número <strong>de</strong> passos do menor caminho <strong>de</strong>computação que leva a um estado <strong>de</strong> aceitação, isto é:T N (x) = min{t | N aceita x com um caminho <strong>de</strong> computação em t passos}e, a complexida<strong>de</strong> temporal <strong>de</strong> N é a função:T N (n) = max{{1} ∪ {m | ∃ x ∈ L(N), |x| = n e m = T N (x)}}Note-se, que T M (n) = 1 se não há nenhum x, com comprimento n que seja aceite por N.Se T N (n) é O(f(n)), diz-se que N opera em tempo limitado por f(n) e se f(n) é umpolinómio dizemos que N é polinomial.Seja,NTIME(f(n)) = {L | L é <strong>de</strong>cidível por uma DTM N tal que T N (n) é O(f(n))}Teorema 1.2.1 Se L ∈ NTIME(f(n)) então existe c > 1 tal que L ∈ TIME(c f(n) ).A <strong>classe</strong> <strong>NP</strong> é <strong>de</strong>finida com o conjunto <strong>de</strong> linguagens que são <strong>de</strong>cidíveis em tempo polinomialpor uma NDTM, isto é:Corolário 1.2.1 P ⊆ <strong>NP</strong><strong>NP</strong> = ⋃ k≥1NTIME(n k )DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


Capítulo 2Problemas, Linguagens eComplexida<strong>de</strong>Para resolver um problema por meios computacio<strong>na</strong>is é necessário codificá-lo numa dadalinguagem e escrever um algoritmo (um programa, nessa mesma linguagem), isto é, um métodopara resolver o problema num número finito <strong>de</strong> passos. Vamos consi<strong>de</strong>rar que cada problemapo<strong>de</strong> ser <strong>de</strong>scrito por um conjunto <strong>de</strong> parâmetros e <strong>de</strong> relações entre eles, com as quaisse expressam as condições <strong>de</strong> solução do problema. Uma instância I dum problema Π , éobtida especificando valores para cada um <strong>dos</strong> parâmetros. Chamaremos instância genérica à<strong>de</strong>scrição dum problema em termos <strong>dos</strong> seus parâmetros, ou ape<strong>na</strong>s instância se <strong>na</strong> enunciaçãodo mesmo. Por exemplo, consi<strong>de</strong>re-se um ”caixeiro viajante”que tem <strong>de</strong> visitar todas ascida<strong>de</strong>s <strong>de</strong> um dado país e voltar à cida<strong>de</strong> don<strong>de</strong> partiu, e preten<strong>de</strong> fazê-lo pelo caminho maiscurto. Po<strong>de</strong>mos enunciar este problema clássico da combi<strong>na</strong>tória, em termos dum conjuntofinito <strong>de</strong> elementos e <strong>de</strong> proprieda<strong>de</strong>s <strong>de</strong>sses elementos:(TSO) Dado um conjunto <strong>de</strong> cida<strong>de</strong>s e as distâncias entre elas existe uma permutação dascida<strong>de</strong>s que minimize a distância total?Instância: C = {c 1 ,c 2 ,... c n } e d : C × C −→ N distânciaQuestão: Qual é a permutação π : C −→ C que minimizan−1∑d(c π(i) ,c π(i+1) ) + d(c π(n) ,c π(1) )i=1Uma instância do problema é por exemplo C = {Porto,Aveiro,V ia<strong>na</strong>,Espinho} e d(P,A) =60, d(P,V ) = 60, d(P,E) = 20, d(A,V ) = 120, d(A,E) = 40, d(V,E) = 80. A sequência< V,P,E,A > minimiza a distância total, d T = 120.Preten<strong>de</strong>-se normalmente obter um algoritmo que (se existir!) seja o mais eficiente. Aeficiência dum algoritmo po<strong>de</strong>-se medir em:• tempo <strong>de</strong> execução em função <strong>dos</strong> da<strong>dos</strong>DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


• espaço gasto para a obtenção da solução do problema.Para cada problema a complexida<strong>de</strong> temporal vai <strong>de</strong>pen<strong>de</strong>r da máqui<strong>na</strong> usada e da codificaçãoescolhida. Contudo, cada problema po<strong>de</strong> ser classificado do ponto <strong>de</strong> vista computacio<strong>na</strong>l,como:• insolúvel• tratável• intratávelEsta classificação é válida in<strong>de</strong>pen<strong>de</strong>ntemente da máqui<strong>na</strong> ou mo<strong>de</strong>lo computacio<strong>na</strong>l usado(máqui<strong>na</strong> <strong>de</strong> Turing, RAM’s, etc) e da codificação escolhida, <strong>de</strong>s<strong>de</strong> que seja ”razoável”, istoé, que satisfaça as seguintes condições:1. A codificação duma instância I , <strong>de</strong>ve ser concisa e não conter símbolos <strong>de</strong>snecessários.2. Os números inteiros <strong>de</strong>vem ser representa<strong>dos</strong> numa base maior ou igual a 2.Po<strong>de</strong>mos supor que os números inteiros se representam em binário; os conjuntos pelasequência <strong>dos</strong> seus elementos (codifica<strong>dos</strong>) e os grafos pela sequência <strong>de</strong> vértices seguida <strong>dos</strong>pares <strong>de</strong> vértices para cada ramo (ou pela matriz <strong>de</strong> adjacência). Neste caso, se um dadoé um número n o seu comprimento será ⌈log 2 n⌉, se é um conjunto <strong>de</strong> n elementos o seucomprimento é n e se é um grafo o seu comprimento é o número <strong>de</strong> vértices mais o <strong>de</strong> ramos.Consi<strong>de</strong>rem-se os seguintes <strong>problemas</strong> e procuremos resolvê-los !1. Problema da ParagemInstância: Um algoritmo e um conjunto <strong>de</strong> da<strong>dos</strong> para esse algoritmo.Questão: Esse algoritmo pára para esse conjunto <strong>de</strong> da<strong>dos</strong> (ou entra num ciclo infinito)?Resposta: Não existe nenhum algoritmo que resolva este problema. É um problemainsolúvel.2. Procura dum elemento numa sequência.Instância: X, V [i], 1 ≤ i ≤ nQuestão: Existe i tal que X = V [i] ?Resposta: Existem algoritmos polinomiais que o resolvem, por exemplo:k


A complexida<strong>de</strong> <strong>de</strong>ste algoritmo é O(n), consi<strong>de</strong>rando o número <strong>de</strong> comparaçõesque serão necessárias no ”pior caso”.3. (HC) Existência <strong>de</strong> ciclo hamiltonianoInstância: Seja G = (V,E) um grafo dirigido.Questão: Existe um ciclo < (X 1 ,X 2 )(X 2 ,X 3 )... (X n−1 ,X n )(X n ,X 1 ) >, X i ∈ V ,(X i ,X i+1 ) ∈ E e e n = |V |, tal que to<strong>dos</strong> os X i são diferentes?Resposta: Não se conhece nenhum algoritmo polinomial que resolva este problema.Um algoritmo que corre em tempo exponencial no número <strong>de</strong> vértices é o seguinte:para i


Neste caso, temos a seguinte árvore <strong>de</strong> procura, se X 1 = 1:112 123 124 126 1243 1245 1265126541265431265431Se G é um grafo completo, o tempo <strong>de</strong> execução é O(n) (caso melhor) mas no pior casoo algoritmo tem complexida<strong>de</strong> O(n!).Exercício 2.0.1 Escreva um programa para cada um <strong>dos</strong> <strong>problemas</strong> 2 e 3 e obtenha o tempo<strong>de</strong> execução para vários valores <strong>dos</strong> parâmetros. Comente os resulta<strong>dos</strong>.Um problema é tratável se existe um algoritmo polinomial que o resolve. Se to<strong>dos</strong> osalgoritmos conheci<strong>dos</strong> para resolver um problema forem exponenciais o problema diz-se intratável.Isto porque o tempo <strong>de</strong> execução dum algoritmo exponencial tor<strong>na</strong>-se rapidamenteinsuportável (quase ”infinito”) para comprimentos pequenos <strong>dos</strong> da<strong>dos</strong>. O quadro seguinteilustra a diferença entre as complexida<strong>de</strong>s temporais citadas. Para valores crescentes docomprimento <strong>dos</strong> da<strong>dos</strong>, n, indica o tempo <strong>de</strong> execução, tomando para base o microsegundo.Valores <strong>de</strong> nComplexida<strong>de</strong> temporal 10 20 40 60n 10 µs 20 µs 40 µs 60 µsn 2 0.1 ms 0.4 ms 1.6 ms 3.6 msn 5 0.1 s 3.2 s 1.7 minutos 13 minutos2 n 10 ms 1 s 12.7 dias 366 séculos10 n 2.7 horas 3.1 × 10 4 séculos 3.1 × 10 24 séculosÉ importante notar que esta situação não se modifica significativamente se as máqui<strong>na</strong>susadas forem muito mais rápidas. Consi<strong>de</strong>rando aumentos <strong>de</strong> 100 e 1000 vezes <strong>na</strong> velocida<strong>de</strong>dum processador po<strong>de</strong>mos ver pelo quadro seguinte, que o tamanho máximo <strong>dos</strong> <strong>problemas</strong>DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —8


9resolvi<strong>dos</strong> num dado tempo por um algoritmo exponencial não é praticamente alterado (principalmenteem comparação com o que suce<strong>de</strong> com os algoritmos polinomiais, mesmo <strong>de</strong> grauelevado).Máximo comprimento <strong>dos</strong> da<strong>dos</strong>para 1 hora <strong>de</strong> CPUComplexida<strong>de</strong> Computador Computador Computadortemporal actual 100x rápido 1000x rápidon X 1 100X 1 1000X 1n 2 X 2 10X 2 n 31.6X 2n 5 X 3 2.5X 3 3.98X 32 n X 4 X 4 + 6.64 X 4 + 9.9710 n X 5 X 5 + 2 X 5 + 3Note-se contudo que um algoritmo exponencial não significa que para todas as instâncias<strong>de</strong>more um tempo que é exponencial nos da<strong>dos</strong>, mas sim que no pior caso po<strong>de</strong> <strong>de</strong>morar essetempo. Isto permite <strong>na</strong> prática usar algoritmos exponenciais para resolver alguns <strong>problemas</strong>(ex: método simplex para resolver <strong>problemas</strong> <strong>de</strong> programação linear).Facto: Existe uma gran<strong>de</strong> família <strong>de</strong> <strong>problemas</strong> para os quais só se conhecem algoritmosexponenciais - essencialmente <strong>problemas</strong> <strong>de</strong> optimização e <strong>de</strong>cisão que exigem procurasexaustivas em <strong>de</strong>termi<strong>na</strong><strong>dos</strong> conjuntos.A seguir apresentámos alguns <strong>problemas</strong> <strong>dos</strong> quais uns pertencem a essa <strong>classe</strong> e outrospara os quais se conhecem algoritmos polinomiais para os resolver.(EC) Dado um grafo G = (V,E), G tem um ciclo euleriano, isto é, que passe por to<strong>dos</strong> osramos uma só vez?(HC) Dado um grafo G = (V,E), G tem um ciclo hamiltoniano, isto é, que passe por to<strong>dos</strong>os vértices uma só vez ?(PRIMO) Dado n inteiro, n é primo?Dada uma família C <strong>de</strong> subconjuntos <strong>de</strong> um conjunto S, existe uma partição <strong>de</strong> S, S =S 1 ∪ S 2 , e tal que ∀ S ′ ∈ C, S ′ ∩ S 1 ≠ ∅ e S ′ ∩ S 2 ≠ ∅(DIOF) Dada uma equação <strong>de</strong> coeficientes inteiros, existem soluções inteiras?(PAR) (Partição) Dado um conjunto A e uma função s : A −→ N , existe A ′ ⊂ A tal que∑s(a) = ∑a∈A ′a∈a\A ′ s(a)(VC) (Cobertura por vértices) Dado um grafo G = (V,E) e K ≤| V | existe V ′ ⊆ V ,| V ′ |≤ K e ∀(a,b) ∈ E, a ∈ V ′ ou b ∈ V ′ .DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


2.1 Problemas <strong>de</strong> <strong>de</strong>cisão 10(LP) (Programação Linear) Dada uma matriz <strong>de</strong> inteiros A e dois vectores <strong>de</strong> inteiros b e c,existe um vector real x tal que Ax ≤ b e maximize cx ?(3DM) Dado um conjunto M ⊆ W × Y × Z, on<strong>de</strong> |W | = |Y | = |Z| = q e disjuntos,existe um subconjunto M ′ ⊆ M, tal que |M ′ | = q e nenhum elemento <strong>de</strong> M ′ tem uma”coor<strong>de</strong><strong>na</strong>da”comum?(SAT) Um literal é uma variável lógica ou a sua negação. Uma cláusula é uma disjunção<strong>de</strong> literais. Dado um conjunto <strong>de</strong> cláusulas (representando a sua conjunção) C ={c 1 ,c 2 ,...,c m } com literais num conjunto finito U <strong>de</strong> variáveis lógicas, existe uma atribuição<strong>de</strong> valores <strong>de</strong> verda<strong>de</strong> às variáveis <strong>de</strong> tal modo que todas as cláusulas <strong>de</strong> C sejamsimultaneamente satisfeitas?(3SAT) Análogo ao anterior com todas as cláusulas com 3 literais ?(2SAT) Análogo ao anterior com todas as cláusulas com 2 literais ?(K-COLOR) Dado um grafo G = (V,E) e um inteiro k, po<strong>de</strong>-se colorir G com k cores, istoé, existe uma função Φ : N −→ Z k , tal que, se {u,v} ∈ E, então Φ(u) ≠ Φ(v)?2.1 Problemas <strong>de</strong> <strong>de</strong>cisãoVamos começar por a<strong>na</strong>lisar um tipo particular <strong>de</strong> <strong>problemas</strong>: os <strong>problemas</strong> <strong>de</strong> <strong>de</strong>cisão.Um problema <strong>de</strong> <strong>de</strong>cisão Π é um problema que ape<strong>na</strong>s tem duas soluções possíveis: ou”sim”ou ”não”. O conjunto das suas instâncias D Π é divido em dois subconjuntos S Π e N Π ,correspon<strong>de</strong>ntes respectivamente, às instâncias para as quais a resposta é “sim” e às instânciaspara as quais a resposta é “não”.Estes <strong>problemas</strong> po<strong>de</strong>m-se converter facilmente em <strong>problemas</strong> <strong>de</strong> reconhecimento <strong>de</strong> linguagense, portanto, é possível estudar a sua complexida<strong>de</strong> computacio<strong>na</strong>l formalmente.Dado um conjunto finito <strong>de</strong> símbolos Σ (alfabeto), uma linguagem L é um subconjunto<strong>de</strong> Σ ⋆ . Seja Σ um conjunto finito <strong>de</strong> símbolos e c : D Π −→ Σ ⋆ , uma codificação <strong>de</strong> instânciasdum problema <strong>de</strong> <strong>de</strong>cisão Π em Σ ⋆ . A linguagem associada a Π para a codificação c é:L(Π,c) = {x ∈ Σ ⋆ | x = c(I) on<strong>de</strong> I é uma instância para a quala resposta <strong>de</strong> Π é ”sim”, I ∈ S Π }Resolver o problema Π equivale a reconhecer L(Π,c) usando um mo<strong>de</strong>lo computacio<strong>na</strong>l,por exemplo, uma máqui<strong>na</strong> <strong>de</strong> Turing. Mais que isso, se as codificações usadas forem razoáveispo<strong>de</strong>mos falar ape<strong>na</strong>s <strong>na</strong> linguagem L associada a um problema Π. Isto é, se c e c ′ foremduas codificações razoáveis <strong>de</strong> um problema Π as linguagens L(Π,c ′ ) e L(Π,c) terão as mesmasproprieda<strong>de</strong>s (formais, computacio<strong>na</strong>is).Dado que a complexida<strong>de</strong> temporal dum algoritmo é uma função do comprimento <strong>dos</strong> da<strong>dos</strong>,isto é, <strong>de</strong> cada instância do problema, é necessário obter esta medida in<strong>de</strong>pen<strong>de</strong>ntementedas codificações. Assim, para cada problema <strong>de</strong> <strong>de</strong>cisão Π associámos, in<strong>de</strong>pen<strong>de</strong>ntemente daDCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


2.1 Problemas <strong>de</strong> <strong>de</strong>cisão 11codificação, uma função comprimento comp : D Π −→ N <strong>na</strong>s instâncias I <strong>de</strong> Π que é relacio<strong>na</strong>dapolinomialmente 1 com o comprimento da sequência <strong>de</strong> símbolos <strong>de</strong> qualquer codificaçãorazoável <strong>de</strong> I . Isto é, para qualquer codificação c <strong>de</strong> Π existem das funções polinomiais p ep ′ tal que se I ∈ D Π e x = c(I) então comp(I) ≤ p(|x|) e |x| ≤ p ′ (comp(I)). Por exemplo,no problema <strong>de</strong> <strong>de</strong>cisão do “caixeiro viajante”, (TSP), (ver pági<strong>na</strong> 14) o comprimento dumainstância genérica I é:comp(I) = m + ⌈log 2 B⌉ + max{log 2 d(c i ,c j ) | c i , c j ∈ C}Exercício 2.1.1 Escolha uma codificação para o problema TSP e verifique que a funçãocomp se “relacio<strong>na</strong> polinomialmente” com essa codificação.Po<strong>de</strong>mos então consi<strong>de</strong>rar que to<strong>dos</strong> os <strong>problemas</strong> são codifica<strong>dos</strong> numa mesma codificaçãorazoável. Isto, permite dum modo informal comparar as proprieda<strong>de</strong>s computacio<strong>na</strong>is <strong>de</strong> dois<strong>problemas</strong> sem ter <strong>de</strong> os exprimir em termos <strong>de</strong> cada uma das suas codificações. Basta saberque existe uma. Exemplo duma codificação seria consi<strong>de</strong>rar as sequências finitas sobre o oconjunto Σ = {0,1}. Então, qualquer problema <strong>de</strong> <strong>de</strong>cisão po<strong>de</strong> ser i<strong>de</strong>ntificado com umalinguagem L ∈ {0,1}. Normalmente, para escrever algoritmos numa dada linguagem <strong>de</strong>programação, usam-se codificações menos minimalistas ... Ver exercício 6.1.3 da secção 6.1.Informalmente po<strong>de</strong>mos falar <strong>na</strong> complexida<strong>de</strong> <strong>de</strong> um problema e dizer que um problemapertence a uma dada <strong>classe</strong> <strong>de</strong> complexida<strong>de</strong>. Isto é, i<strong>de</strong>ntificar um problema <strong>de</strong> <strong>de</strong>cisão com alinguagem associada. Toda a teoria a seguir apresentada tem como base esta equivalência e oque será dito para <strong>problemas</strong> e algoritmos é exprimível formalmente em termos <strong>de</strong> linguagense mo<strong>de</strong>los computacio<strong>na</strong>is.A menos referência em contrário, os <strong>problemas</strong> consi<strong>de</strong>ra<strong>dos</strong> serão <strong>problemas</strong> <strong>de</strong> <strong>de</strong>cisão.Note-se que dado um problema <strong>de</strong> optimização – em que não só se preten<strong>de</strong> saber se umproblema tem solução, mas também qual é essa solução (óptima) – é sempre possível formularum problema correspon<strong>de</strong>nte <strong>de</strong> <strong>de</strong>cisão. O problema <strong>de</strong> <strong>de</strong>cisão é tratável se o <strong>de</strong> optimizaçãoo for, isto é, se o <strong>de</strong> <strong>de</strong>cisão é intratável o <strong>de</strong> optimização também o é (o problema <strong>de</strong> <strong>de</strong>cisãonão é mais difícil que o correspon<strong>de</strong>nte <strong>de</strong> optimização). O inverso também é verda<strong>de</strong> paramuitos casos. Consi<strong>de</strong>remos o seguinte exemplo:(Clique máximo) Um subgrafo completo maximal dum grafo G chama-se clique. O tamanhodum clique é o seu número <strong>de</strong> vértices.Instância: Um grafo G = (V,E) não dirigido.Questão: Qual o tamanho do maior clique <strong>de</strong> G ?O problema <strong>de</strong> <strong>de</strong>cisão associado é:(CLIQUE)1 Lembre-se que, para um dado problema, ape<strong>na</strong>s estamos interessa<strong>dos</strong> <strong>na</strong> existência <strong>de</strong> algoritmos polinomiaispara o resolver.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


2.1 Problemas <strong>de</strong> <strong>de</strong>cisão 12Instância: Um grafo G = (V,E) não dirigido e um inteiro k ≤ |V |Questão: G contém algum clique com tamanho maior ou igual a k ?Seja CLID(G,k) um algoritmo que resolve o problema <strong>de</strong> <strong>de</strong>cisão CLIQUE. Se |V | = n,então o tamanho do maior clique po<strong>de</strong> ser <strong>de</strong>termi<strong>na</strong>do aplicando CLID(G,k) para k = n,n−1,n − 2,... até que o resultado <strong>de</strong>sse algoritmo seja ”sim”. Se CLID tem complexida<strong>de</strong> f(n),então algoritmo para <strong>de</strong>termi<strong>na</strong>r o maior clique tem complexida<strong>de</strong> n ×f(n). Inversamente, seo tamanho do maior clique po<strong>de</strong> ser <strong>de</strong>termi<strong>na</strong>do em tempo g(n) então o problema <strong>de</strong> <strong>de</strong>cisãopo<strong>de</strong> ser resolvido em tempo g(n).Exercício 2.1.2 Dado um conjunto U <strong>de</strong> variáveis lógicas uma atribuição <strong>de</strong> valores paraU é uma função t : U −→ {0,1}. Se t(u) = 1, u ∈ U, dizemos que u é verda<strong>de</strong> em t, casocontrário dizemos que a variável u é falsa em t. Se u ∈ U então u e u são literais em U.O literal u é verda<strong>de</strong> em t sse a variável u é verda<strong>de</strong> em t. O literal u é verda<strong>de</strong> em t ssea variável u é falsa em t. Uma cláusula em U é um conjunto (finito) <strong>de</strong> literais em U e ésatisfeita por uma atribuição <strong>de</strong> valores, t, sse pelo menos um <strong>dos</strong> seus elementos é verda<strong>de</strong>para t. Consi<strong>de</strong>re, então o seguinte problema:(SATA)Instância: Seja C = {c 1 ,c 2 ,... ,c m } um conjunto <strong>de</strong> cláusulas com literais num conjuntofinito U = {u 1 ,u 2 ,...,u n }Questão: Determine uma atribuição <strong>de</strong> valores para U que satisfaça simultaneamente todasas cláusulas <strong>de</strong> C?Mostre que se existir um algoritmo polinomial SAT(C) que <strong>de</strong>termine se um conjunto <strong>de</strong>cláusulas é satisfazível então o problema SATA também é resolúvel em tempo polinomial.Sugestão:Vamos supor que em C ocorrem to<strong>dos</strong> os elementos <strong>de</strong> U. Basta então construir umalgoritmo que utilize SAT() n vezes, <strong>de</strong> cada vez para um C’ que resulta <strong>de</strong> C substituin<strong>dos</strong>ucessivamente cada uma das variáveis por o valor 0 ou 1:C’


2.2 Algoritmos <strong>de</strong>terminísticos 132.2 Algoritmos <strong>de</strong>terminísticosA noção <strong>de</strong> algoritmo que usamos até agora e que é a habitual, pressupõe que cada instruçãoé univocamente <strong>de</strong>termi<strong>na</strong>da, isto é, para cada conjunto <strong>de</strong> da<strong>dos</strong> existe uma só solução.Chamemos a estes algoritmos - que correspon<strong>de</strong>m a máqui<strong>na</strong>s <strong>de</strong> Turing <strong>de</strong>terminísticas queparam sempre ou a programas executáveis por um computador - algoritmos <strong>de</strong>terminísticos.Po<strong>de</strong>mos então i<strong>de</strong>ntificar a <strong>classe</strong> P com:P = {conjunto <strong>de</strong> to<strong>dos</strong> os <strong>problemas</strong> <strong>de</strong> <strong>de</strong>cisão que são resolúveis por umalgoritmo <strong>de</strong>terminístico em tempo polinomial}Da lista <strong>de</strong> <strong>problemas</strong> dada (EC), (2SAT) e (2-COLOR) pertencem a P.Exercício 2.2.1 Encontre um algoritmo <strong>de</strong>terminístico polinomial para cada um <strong>de</strong>sses <strong>problemas</strong>.Sugestão:a) EC Para um grafo (não dirigido) ter um ciclo euleriano tem <strong>de</strong> ser conexo e to<strong>dos</strong>os vértices terem grau par. Estas duas condições po<strong>de</strong>m ser implementadas em tempopolinomial.b) 2SAT Sendo U = {u 1 ,... ,u n } e C o conjunto <strong>de</strong> cláusulas, construa o grafo (dirigido)G = (V,E), on<strong>de</strong> V = {u 1 ,... ,u n ,ū 1 ,... , u¯n } e sendo l i igual a u i ou ū i , (l i ,l j ) ∈ Ese {¯l i ,l j } ∈ C (isto é, u i ⇒ l j ). Mostre que C é satisfazível se e só se as componentesfortemente conexas <strong>de</strong> G não contêm simultaneamente uma variável e a sua negação.c) 2-COLOR Para colorir um grafo com 2 cores vamos supor que o grafo é conexo (senãoaplicámos o algoritmo a cada componente conexa). O seguinte algoritmo é O(n 3 ), on<strong>de</strong>n é a or<strong>de</strong>m do grafo:colorir o vértice 1;f


2.3 Algoritmos não <strong>de</strong>terminísticos 14sen~ao se os vizinhos tiverem cores contraditóriasent~ao { escreva(’n~ao’) ; fim }sen~ao {colorir i com a cor alter<strong>na</strong>tiva;retor<strong>na</strong> verda<strong>de</strong>}}2.3 Algoritmos não <strong>de</strong>terminísticosConsi<strong>de</strong>re-se o problema do ”caixeiro viajante”expresso como um problema <strong>de</strong> <strong>de</strong>cisão:(TSP) Dado um conjunto <strong>de</strong> cida<strong>de</strong>s, as distâncias entre elas, e um limite B, existe umitinerário pelas cida<strong>de</strong>s cuja distância total é menor ou igual a B ?Instância: C = {c 1 ,c 2 ,... c n }, d : C × C −→ N distância e B ∈ NQuestão: Existe uma permutação π : C −→ C tal quen−1∑d(c π(i) ,c π(i+1) ) + d(c π(n) ,c π(1) ) ≤ Bi=1Como se disse não se conhece nenhum algoritmo polinomial que resolva este problema. Contudo,suponhamos que temos um mecanismo que nos gera uma possível solução. Po<strong>de</strong>mosverificar se ela realmente é uma solução, bastando para isso calcular o seu comprimento ecompará-lo com B! E isto po<strong>de</strong> ser feito em tempo polinomial...O mecanismo mencio<strong>na</strong>do acima po<strong>de</strong> ser simulado por um algoritmo que permita aexistência <strong>de</strong> instruções cujo resultado não é univocamente <strong>de</strong>termi<strong>na</strong>do mas sim limitadoa um conjunto finito <strong>de</strong> possibilida<strong>de</strong>s: algoritmo não-<strong>de</strong>terminístico <strong>de</strong> verificação Um talalgoritmo termi<strong>na</strong> com insucesso (resposta ”não”) se e só se nenhum conjunto <strong>de</strong> escolhasconduz a uma resposta ”sim”(caso em que, o algoritmo termi<strong>na</strong> com sucesso). Se existir algumconjunto <strong>de</strong> escolhas que conduza a uma solução <strong>de</strong> sucesso, esse conjunto é sempre gerado,isto é, em qualquer instrução que envolva uma escolha é escolhido um elemento correcto dum<strong>de</strong>sses conjuntos. Para tal efeito ser o usadas a função e as instruções seguintes:escolha(S) escolha arbitrária <strong>de</strong> um elemento <strong>de</strong> Ssucesso indica que o algoritmo termi<strong>na</strong> com a resposta ”sim”insucesso indica que o algoritmo termi<strong>na</strong> com a resposta ”não”Supõe-se que cada uma <strong>de</strong>stas instruções é executada em tempo constante, isto é, O(1).Por exemplo, o problema da procura dum elemento numa sequência po<strong>de</strong> ser “resolvido”não-<strong>de</strong>terministicamente pelo seguinte algoritmo:i


2.3 Algoritmos não <strong>de</strong>terminísticos 15Neste caso se existir algum V [i] igual a X, um <strong>de</strong>sses i é gerado <strong>na</strong> primeira instruçãoe o algoritmo termi<strong>na</strong> em sucesso, caso contrário termi<strong>na</strong> em insucesso. Mais precisamente,comparando com a noção clássica <strong>de</strong> algoritmo, o algoritmo não resolve 2 o problema, ape<strong>na</strong>sverifica se uma possível solução é efectivamente solução.Exercício 2.3.1 Para cada um <strong>dos</strong> seguintes <strong>problemas</strong> escreva um algoritmo não-<strong>de</strong>terminístico:a) Or<strong>de</strong><strong>na</strong>r uma sequência <strong>de</strong> inteiros positivos.b) (HC) Existência <strong>de</strong> ciclo hamiltoniano num grafo (dirigido ou não).c) (CLIQUE)Admitindo processamento paralelo, po<strong>de</strong>mos interpretar um algoritmo não-<strong>de</strong>terminísticodo seguinte modo: Sempre que existe uma escolha o algoritmo produz várias cópias <strong>de</strong> simesmo, uma para cada uma das possíveis alter<strong>na</strong>tivas. Estas cópias são executadas emsimultâneo. Se uma chega a um resultado <strong>de</strong> sucesso todas as outras termi<strong>na</strong>m. Se umacópia chega a um resultado <strong>de</strong> insucesso só essa cópia termi<strong>na</strong>.O tempo requerido por um algoritmo não-<strong>de</strong>terminístico para um dado conjunto <strong>de</strong> da<strong>dos</strong>é o menor número <strong>de</strong> passos necessários para chegar a um resultado <strong>de</strong> sucesso. Se tal nãofor possível o tempo requerido é O(1). A sua complexida<strong>de</strong> é O(f(n)) se para to<strong>dos</strong> os da<strong>dos</strong><strong>de</strong> comprimento n, n ≥ n 0 que conduzem a um resultado <strong>de</strong> sucesso o, tempo requerido é nomáximo cf(n), para c e n 0 constantes.O algoritmo não-<strong>de</strong>terminístico dado para procurar um elemento numa sequência é O(1).Um algoritmo não-<strong>de</strong>terminístico diz-se polinomial se a sua complexida<strong>de</strong> é O(p(n)), paraalgum polinómio, p(n).Formalmente po<strong>de</strong>mos i<strong>de</strong>ntificar estes algoritmos e com máqui<strong>na</strong>s <strong>de</strong> Turing não-<strong>de</strong>terminísticaspolinomiais e os <strong>problemas</strong> correspon<strong>de</strong>ntes com linguagens da <strong>classe</strong> <strong>NP</strong>. Temos:<strong>NP</strong> = {conjunto <strong>de</strong> to<strong>dos</strong> os <strong>problemas</strong> <strong>de</strong> <strong>de</strong>cisão que são resolúveis por umalgoritmo não-<strong>de</strong>terminístico polinomial}Exercício 2.3.2 Determine a complexida<strong>de</strong> temporal <strong>de</strong> cada um <strong>dos</strong> algoritmos encontra<strong>dos</strong>no exercício 2.3.1.Exercício 2.3.3 Obtenha um algoritmo não-<strong>de</strong>terminístico <strong>de</strong> O(n) que <strong>de</strong>termine se existeum subconjunto <strong>de</strong> n números a i , 1 ≤ i ≤ n cuja soma seja M.A noção <strong>de</strong> verificação polinomial duma solução po<strong>de</strong> ainda formalizar-se em termos <strong>de</strong>testemunhas concisas duma linguagem.2 Isto porque não é indicado um método para efectuar cada uma das escolhas.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


2.3 Algoritmos não <strong>de</strong>terminísticos 16Teorema 2.3.1 Uma linguagem L ⊆ Σ ⋆ pertence a <strong>NP</strong> se e só se existe uma linguagemL v ⊆ Σ ⋆ × Σ ⋆ que pertence a P e uma função polinomial p tal que:L = {x | ∃y(x,y) ∈ L v e |y| ≤ p(|x|)}Para cada x ∈ L, y diz-se uma testemunha concisa (ou polinomial) da x ∈ L.Dem. (⇐) Suponhamos que L = {x | ∃y(< x,y >∈ L v e |y| ≤ p(|x|)} e L v ∈ P e p(n) épolinomial. Então L é <strong>de</strong>cidida pela seguinte NDTM N: Com da<strong>dos</strong> x, N gera umasequência y <strong>de</strong> comprimento no máximo p(|x|) e <strong>de</strong>pois usa a TM que <strong>de</strong>ci<strong>de</strong> L v paratestar (verificar) em tempo polinomial se (x,y) ∈ L v . Se (x,y) ∈ L v N aceita x casocontrário rejeita. 3(⇒) Seja L ∈ <strong>NP</strong>. Então existe uma NDTM N que <strong>de</strong>ci<strong>de</strong> L e cuja complexida<strong>de</strong>temporal é limitada por uma função polinomial p(n). Para cada x ∈ Σ ⋆ , cada caminho<strong>de</strong> computação (sequência <strong>de</strong> escolhas <strong>de</strong> ∆) <strong>de</strong> N com da<strong>dos</strong> x po<strong>de</strong> ser codificadonuma sequência y <strong>de</strong> símbolos <strong>de</strong> Σ tal que |y| ≤ p(|x|). A linguagem L v é <strong>de</strong>finidado seguinte modo: um par < x,y > pertence a L v se y codifica um caminho dumacomputação <strong>de</strong> aceitação <strong>de</strong> N com da<strong>dos</strong> x. É fácil ver que L v ∈ P e que x ∈ L se esó se ∃y(< x,y >∈ L v e |y| ≤ p(|x|). □Alter<strong>na</strong>tivamente, po<strong>de</strong>mos ainda consi<strong>de</strong>rar uma variante <strong>de</strong> máqui<strong>na</strong>s <strong>de</strong> Turing <strong>de</strong>terminísticas:máqui<strong>na</strong>s <strong>de</strong> Turing com “escolhas” (<strong>de</strong> “adivinhação”) polinomiais.Exercício 2.3.4 Consi<strong>de</strong>re a seguinte <strong>de</strong>finição duma máqui<strong>na</strong> <strong>de</strong> Turing com “escolhas” ( <strong>de</strong>“adivinhação”)(GDTM) (ver [GJ79, Cap. 2.3]): uma GDTM, M, é uma máqui<strong>na</strong> <strong>de</strong> Turing<strong>de</strong>terminística com fita duplamente infinita à qual foi adicio<strong>na</strong>do um módulo <strong>de</strong> escolha comape<strong>na</strong>s uma cabeça <strong>de</strong> escrita. A computação duma máqui<strong>na</strong> GDTM para da<strong>dos</strong> x ∈ Σ ∗ éfeita em dois passos:Escolha Inicialmente os da<strong>dos</strong> x estão escritos <strong>na</strong> fita a partir da posição 1 até | x |, osrestantes em branco, a cabeça <strong>de</strong> leitura-escrita <strong>na</strong> posição 1 e a cabeça <strong>de</strong> escrita acélula -1. O módulo <strong>de</strong> escolha dirige então a cabeça <strong>de</strong> escrita, ou escrevendo umsímbolo <strong>de</strong> Γ e movendo-se para a esquerda, ou parando; neste último caso este módulofica i<strong>na</strong>ctivo e entra-se no estado s 0 . Note que este módulo escreveu um qualquer s ∈ Γ ∗ .Verificação A computação proce<strong>de</strong> exactamente como numa máqui<strong>na</strong> <strong>de</strong> Turing <strong>de</strong>terminísticaA computação pára se é atingido um estado fi<strong>na</strong>l e diz-se que é uma computação <strong>de</strong> aceitação sepára num estado <strong>de</strong> aceitação. Dizemos que M aceita x se existir pelo menos uma computação<strong>de</strong> aceitação para x.Mostre que uma máqui<strong>na</strong> GDTM é equivalente (polinomialmente) a uma NDTM. Sugestão:Consi<strong>de</strong>re a <strong>de</strong>monstração do teorema 2.3.1.3 Note que o número <strong>de</strong> sequências y é finito.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


2.4 Relação entre P e <strong>NP</strong> 172.4 Relação entre P e <strong>NP</strong>Figura 2.1: Relação entre P e <strong>NP</strong>Já se viu que P ⊆ <strong>NP</strong>.Pelo que foi dito no fi<strong>na</strong>l da secção anterior, um algoritmo não-<strong>de</strong>terminístico é essencialmenteconstituído por dois passos:- escolher uma solução- verificar se é soluçãoSe é polinomial isso equivale a dizer que a verificação da solução do problema po<strong>de</strong> serfeita em tempo polinomial. Temos assim que a distinção entre as <strong>classe</strong>s P e <strong>NP</strong> correspon<strong>de</strong>diferença entre a resolução dum problema em tempo polinomial e a sua verificação em tempopolinomial.Será que <strong>NP</strong> ⊆ P ? Até agora ainda ninguém soube respon<strong>de</strong>ra esta pergunta !Exercício 2.4.1 Mostrar que se Π ∈ <strong>NP</strong> então existe um polinómio p(n) tal que Π po<strong>de</strong> serresolvido por um algoritmo <strong>de</strong>terminístico com complexida<strong>de</strong> O(2 p(n) ).2.5 Reduções entre <strong>problemas</strong>Um problema A reduz a um problema B se dado um algoritmo para resolver B po<strong>de</strong>mosconstruir um algoritmo que resolva A. Este conceito <strong>de</strong> redutibilida<strong>de</strong> é central <strong>na</strong> teoria dacomputabilida<strong>de</strong> e também vai ser fulcral <strong>na</strong> teoria <strong>dos</strong> <strong>problemas</strong> <strong>NP</strong>-<strong>completos</strong>.Facto: Muitos <strong>dos</strong> <strong>problemas</strong> para os quais não se conhecem algoritmos polinomiais, reduzemsepolinomialmente uns aos outros <strong>de</strong> tal forma que se um <strong>de</strong>les tiver um algoritmopolinomial to<strong>dos</strong> os outros têm !Formalmente temos:DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


2.5 Reduções entre <strong>problemas</strong> 18Definição 2.5.1 Uma transformação polinomial duma linguagem L 1 ⊆ Σ ⋆ 1 numa linguagemL 2 ⊆ Σ ⋆ 2 é uma função f : L 1 −→ L 2 que satisfaz as seguintes condições:(i) Existe uma máqui<strong>na</strong> <strong>de</strong> Turing polinomial que calcula f(ii) Para todo o x ∈ Σ ⋆ 1 , x ∈ L 1 se e só se f(x) ∈ L 2Em termos <strong>de</strong> <strong>problemas</strong>, dizemos que um problema A reduz-se polinomialmente a umproblema B, A ∝ B, se e só se existe um algoritmo <strong>de</strong>terminístico polinomial, F, quetransforma cada instância X ∈ A numa instância F(X) ∈ B, tal que X tem solução se e sóse F(X) tiver.Proposição 2.5.1 Se L 1 ∝ L 2 e L 2 ∈ P então L 1 ∈ P.Proposição 2.5.2 A relação ∝ é transitiva.Exercício 2.5.1 Mostrar as proposições 2.5.1 e 2.5.2.Duas linguagens L 1 e L 2 são polinomialmente equivalentes se L 1 ∝ L 2 e L 2 ∝ L 1 .Análogamente, se <strong>de</strong>finem <strong>problemas</strong> polinomialmente equivalentes. A <strong>classe</strong> P é uma <strong>classe</strong><strong>de</strong> equivalência <strong>de</strong>ssa relação, formada pelas linguagens mais “fáceis”.Vejamos alguns exemplos <strong>de</strong> reduções polinomiais !Exemplo 2 HC ∝ TSP(HC)Instância: Um grafo não dirigido G = (V,E) e |V | = mQuestão: G tem um ciclo hamiltoniano?(TSP)Instância: Um conjunto finito C = {c 1 ,c 2 ,... c n } <strong>de</strong> cida<strong>de</strong>s, d : C × C −→ N distância eB ∈ N.Questão: Existe uma permutação π : C −→ C tal quen−1∑d(c π(i) ,c π(i+1) ) + d(c π(n) ,c π(1) ) ≤ Bi=1A transformação polinomial, f, é <strong>de</strong>finida do seguinte modo: Seja G = (V,E) e |V | = muma instância <strong>de</strong> HC. A instância correspon<strong>de</strong>nte <strong>de</strong> TSP é dada por:(i) C = V(ii) Para cada par v i ,v j ∈ C, d(v i ,v j ) = 1 se (v i ,v j ) ∈ E e d(v i ,v j ) = 2, caso contrário.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


2.5 Reduções entre <strong>problemas</strong> 19(iii) B = mVamos ver duma forma informal que f é uma transformação polinomial <strong>de</strong> HC para TSP.1. Para construir as m(m − 1)/2 distâncias d(v i ,v j ), é necessário ape<strong>na</strong>s verificar se(v i ,v j ) ∈ E. Isto po<strong>de</strong> ser feito em tempo polinomial.2. Vejamos que G tem um ciclo hamiltoneano se e só se existe uma permutação π cujasoma das distâncias é menor que B. Suponhamos que < v 1 ,... ,v m > é um cicloHamiltoneano <strong>de</strong> G. Então, < v 1 ,... ,v m > é uma volta em f(G) com distância totalm=B. Inversamente, suponhamos que < v 1 ,...,v m > é uma volta em f(G) com distânciatotal ≤ B. Pela construção <strong>de</strong> d, por B=m, e pelo facto <strong>de</strong> exactamente m cida<strong>de</strong>s seremvisitadas, a distância entre duas cida<strong>de</strong>s consecutivas tem <strong>de</strong> ser 1. Então, to<strong>dos</strong> os pares(v i ,v i+1 ), 1 ≤ i ≤ m e (v 1 ,v m ) pertencem a E e constituem um ciclo hamiltoniano paraG.Concluímos então que se existir um algoritmo polinomial para TSP, então também po<strong>de</strong>mosconstruir um algoritmo <strong>de</strong>terminístico polinomial para HC e se HC for intratável, TSPtambém o é.Genericamente se Π 1 ∝ Π 2 dizemos que Π 2 é pelo menos tão difícil como Π 1 .Consi<strong>de</strong>remos agora uma redução entre dois <strong>problemas</strong> <strong>de</strong> dois domínios diferentes: lógicae teoria <strong>de</strong> grafos.Exemplo 3 3SAT ∝ VC(3SAT)Instância: Seja C = {c 1 ,c 2 ,... ,c m } um conjunto <strong>de</strong> cláusulas com literais num conjuntofinito U <strong>de</strong> variáveis lógicas, | U |= n, e tal que cada cláusula tem exactamente 3literais.Questão: Existe uma atribuição <strong>de</strong> valores <strong>de</strong> verda<strong>de</strong> para U que satisfaz simultaneamentetodas as cláusulas <strong>de</strong> C?(VC)Instância: Um grafo não dirigido G = (V,E) e K ≤| V | inteiro positivo.Questão: Existe um subconjunto V ′ ⊆ V tal que | V ′ |≤ K e para cada ramo {u,v} ∈ E,u ∈ V ′ ou v ∈ V ′ ? (A V ′ chama-se cobertura por vértices<strong>de</strong> G.)DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


2.5 Reduções entre <strong>problemas</strong> 20Construção da transformação : Suponhamos uma instância <strong>de</strong> 3SAT. Vamos construiruma instância <strong>de</strong> VC indicando os conjuntos V e E. Para cada u i ∈ U, {u i ,u i } ∈ V e{u i ,u i } ∈ E. Note-se que uma cobertura por vértices <strong>de</strong>ve conter pelo menos um <strong>dos</strong> vértices<strong>de</strong>stes ramos. Para cada c j ∈ C adicio<strong>na</strong>r a V três vértices correspon<strong>de</strong>ntes a cada um <strong>dos</strong>literais – l j1 , l j2 , l j3 – que ocorre em c j e adicio<strong>na</strong>r a E os ramos que unem estes vértices, <strong>de</strong>modo a formar um triângulo para cada cláusula (ver figura). Qualquer cobertura por vértices<strong>de</strong>ver conter pelo menos 2 <strong>dos</strong> vértices <strong>de</strong> cada triângulo. Fi<strong>na</strong>lmente, para cada cláusulaconstroem-se ramos que unem cada literal l jk , k = 1,2,3, ao literal correspon<strong>de</strong>nte, u i ouu i .Seja K = n + 2m e G = (V,E), on<strong>de</strong>VE == U ∪ U ∪i=1m⋃{l i1 ,l i2 ,l i3 }i=1n⋃m⋃m⋃{{u i ,u i }} ∪ {{l i1 ,l i2 }, {l i1 ,l i3 }, {l i2 ,l i3 }} ∪i=1i=1 j=13⋃{{l ij ,µ}},on<strong>de</strong> µ <strong>de</strong>sig<strong>na</strong> o literal correspon<strong>de</strong>nte u k ou u k , para algum k, 1 ≤ k ≤ n. Temos que| V |= 2n + 3m e | E |= n + 6m. Toda esta construção po<strong>de</strong> ser feita em tempo polinomial.Consi<strong>de</strong>rando a instância <strong>de</strong> 3SAT, U = {u 1 ,u 2 ,u 3 } e C = {(u 1 ,u 2 ,u 3 ),(u 1 ,u 2 ,u 3 ),(u 1 ,u 2 ,u 3 )}temos o seguinte grafo G: associado a VC, com K = 11 e G = (V,E):u 1 u 1 u 2 u 2 u 3 u 3 l 12l 23l 32 l 11l 13 l 21l 23 l 31l 33Falta ver que C é satisfeita se e só se G tem uma cobertura por vértices <strong>de</strong> tamanho nomáximo K.Suponhamos que V ′ ⊂ V é uma cobertura por vértices para G. Pelo que se disse acimaV ′ contem exactamente um <strong>de</strong> cada {u i ,u i } e 2 vértices l jk correspon<strong>de</strong>ntes a cada cláusula.Então a seguinte atribuição <strong>de</strong> valores <strong>de</strong> verda<strong>de</strong> satisfaz C, t : U −→ {0,1}:{1 se u i ∈ V ′t(u i ) =0 se u i ∈ V ′Exercício 2.5.2 Verificar que t satisfaz C.Inversamente suponhamos que t : U −→ {0,1} é uma atribuição <strong>de</strong> valores <strong>de</strong> verda<strong>de</strong> quesatisfaz C. A cobertura para V é a seguinte: u i ∈ V ′ se t(u i ) = 1 e u i ∈ V ′ se t(u i ) = 0. Istoassegura que para cada cláusula uma <strong>dos</strong> ramos que unem l ji aos literais u i ou u i fique cobertapor V ′ . Basta então, adicio<strong>na</strong>r a V ′ dois <strong>dos</strong> vértices da cada triângulo que não correspon<strong>de</strong>ma esse literal.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


2.5 Reduções entre <strong>problemas</strong> 21Exercício 2.5.3 Verificar que V ′ é uma cobertura por vértices <strong>de</strong> G e | V ′ |≤ K.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


Capítulo 3Problemas <strong>NP</strong>-<strong>completos</strong>Definição 3.0.2 Uma linguagem L é <strong>NP</strong>-completa se L ∈ <strong>NP</strong> e para todo L ′ ∈ <strong>NP</strong> tem-seque L ′ ∝ L.Em termos <strong>de</strong> <strong>problemas</strong>, um problema Π diz-se <strong>NP</strong>-completo se Π ∈ <strong>NP</strong> e para todoΠ ′ ∈ <strong>NP</strong> tem-se que Π ′ ∝ Π.Pela proposição 2.5.1 os <strong>problemas</strong> <strong>NP</strong>-<strong>completos</strong> (representamos por <strong>NP</strong>C a <strong>classe</strong> <strong>de</strong>stes<strong>problemas</strong>) são os mais difíceis em <strong>NP</strong>. Se um problema em <strong>NP</strong> é intratável então to<strong>dos</strong>os <strong>problemas</strong> em <strong>NP</strong>C também o são. Se um problema <strong>NP</strong>-completo tiver um algoritmo<strong>de</strong>terminístico polinomial então to<strong>dos</strong> os <strong>problemas</strong> em <strong>NP</strong> tem também um, isto é, P=<strong>NP</strong>!Por outro lado, se P ≠ <strong>NP</strong> e Π ∈ <strong>NP</strong>C então Π ∈ <strong>NP</strong> \ P. Note-se ainda que to<strong>dos</strong> os<strong>problemas</strong> <strong>na</strong> <strong>classe</strong> <strong>NP</strong>C são polinomialmente equivalentes. Se P ≠ <strong>NP</strong> então a <strong>classe</strong> <strong>NP</strong>divi<strong>de</strong>-se como indicado <strong>na</strong> figura 3.1.No entanto, não parece claro como se po<strong>de</strong> mostrar que um problema é <strong>NP</strong>-completo:para cada problema em <strong>NP</strong> (que são em número infinito) é necessário arranjar uma reduçãopolinomial para esse problema. A proposição seguinte mostra que se existir um problema<strong>NP</strong>-completo é mais fácil provar que outro problema é <strong>NP</strong>-completo.Proposição 3.0.3 Se L 1 e L 2 pertencem a <strong>NP</strong>, L 1 é <strong>NP</strong>-completa e L 1 ∝ L 2 então L 2 é<strong>NP</strong>-completa.Exercício 3.0.4 Mostrar a proposição 3.0.3.Figura 3.1: Classe <strong>NP</strong>DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


23Cook mostrou que SAT é <strong>NP</strong>-completo !Dado que para cada problema Π em <strong>NP</strong> existe uma algoritmo polinomial não-<strong>de</strong>terminísticoA que o resolve. Cook, [Coo71], provou que é possível obter em tempo polinomial a partir<strong>de</strong>sse algoritmo (genérico) e duma instância I do problema Π , um conjunto <strong>de</strong> cláusulas C,tal que C é satisfeito se e só se A termi<strong>na</strong> com sucesso para essa instância I .Teorema 3.0.1 SAT é <strong>NP</strong>-completo.Dem. Temos que mostrar:(i) SAT ∈ <strong>NP</strong>(ii) ∀Π ∈ <strong>NP</strong> =⇒ Π ∝ SATSeja U = {u 1 ,u 2 ,... ,u n } um conjunto <strong>de</strong> variáveis lógicas e C = {c 1 ,c 2 ,... ,c m } umconjunto <strong>de</strong> cláusulas com literais <strong>de</strong> U. Então, o seguinte algoritmo não-<strong>de</strong>terminísticotermi<strong>na</strong> com sucesso se e só se C é satisfeito:para i


s 3 , ..., s r , on<strong>de</strong> r = |S| − 1, e os elementos <strong>de</strong> Γ, a 0 = b, a 1 , . .., a v , on<strong>de</strong> v = |Γ| − 1.Consi<strong>de</strong>ram-se 3 tipos <strong>de</strong> variáveis:Variável Variação SignificadoS[i,k]H[i,j]A[i,j,k]0 ≤ i ≤ p(n)0 ≤ k ≤ r0 ≤ i ≤ p(n)−p(n) ≤ j ≤ p(n) + 10 ≤ i ≤ p(n)−p(n) ≤ j ≤ p(n) + 10 ≤ k ≤ vno passo i M está no estado s kno passo i a cabeça está <strong>na</strong> célula jno passo i o conteúdo da célula j éo símbolo a kUma computação <strong>de</strong> M induz uma atribuição <strong>de</strong> valores <strong>de</strong> verda<strong>de</strong> às variáveis acima<strong>de</strong>finidas duma maneira óbvia, com a convenção <strong>de</strong> que se o programa termi<strong>na</strong>r emt ≤ p(n) passos, a configuração mantém-se a mesma <strong>de</strong> t + 1 a p(n). No passo 0o conteúdo da fita tem os da<strong>dos</strong> x, escritos <strong>na</strong>s células <strong>de</strong> 1 a n e a “advinha” wescrita <strong>na</strong>s células <strong>de</strong> −1 a −|w|, com as restantes células em branco 1 . A transformaçãoF L constrói uma conjunto <strong>de</strong> cláusulas envolvendo estas variáveis <strong>de</strong> tal modo que aatribuição <strong>de</strong> valores <strong>de</strong> verda<strong>de</strong> satisfaz esse conjunto sse é a atribuição <strong>de</strong> valores <strong>de</strong>verda<strong>de</strong> induzida por uma computação que aceita x cuja fase <strong>de</strong> verificação <strong>de</strong>morap(n) ou menos passos e cuja sequência “adivinhada”tem comprimento no máximo p(n).Tem-sex ∈ L ⇔ existe uma computação <strong>de</strong> M que aceita x⇔ existe uma computação <strong>de</strong> M que aceita x comp(n) ou menos passos <strong>na</strong> fase <strong>de</strong> verificação ecom uma sequência adivinhada w <strong>de</strong> comprimentoexactamente p(n)⇔ existe uma atribuição <strong>de</strong> valores <strong>de</strong> verda<strong>de</strong> quesatisfaz o conjunto <strong>de</strong> cláusulas em F L (x)As cláusulas em F L (x) po<strong>de</strong>m ser divididas em 6 grupos:1 Note que uma qualquer atribuição <strong>de</strong> valores <strong>de</strong> verda<strong>de</strong> para estas variáveis não correspon<strong>de</strong> provavelmentea nenhuma computação <strong>de</strong> M.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —24


Grupo Restrições impostas Cláusulas nesse GrupoG 1G 2G 3G 4G 5No passo i, M estáexactamente num só estado.No passo i a cabeçaestá exactamente numasó célula da fita.No passo i, cada célulacontém exactamenteum símbolo <strong>de</strong> Γ.No passo 0, a computaçãoestá <strong>na</strong> configuraçãoinicial para afase <strong>de</strong> verificação parada<strong>dos</strong> x = a k1 ...a kn .No passo p(n), M entrouno estado s y .G 6 Para cada i, 0 ≤ i


{H[i,j],A[i,j,l],A[i + 1,j,l]}0 ≤ i < p(n)−p(n) ≤ j ≤ p(n) + 10 ≤ l ≤ v2. Este subgrupo garante que as modificações duma configuração para a seguinteestão <strong>de</strong> acordo com a função <strong>de</strong> transição δ. Para cada (i,j,k,l), 0 ≤ i < p(n),−p(n) ≤ j ≤ p(n) + 1, 0 ≤ k ≤ r e 0 ≤ l ≤ v tem-se as seguintes 3 cláusulas 3 :{H[i,j],S[i,k],A[i,j,l],H[i + 1,j + D]}{H[i,j],S[i,k],A[i,j,l],S[i + 1,k ′ ]}{H[i,j],S[i,k],A[i,j,l],S[i,j,l ′ ]}on<strong>de</strong> se s k ∈ S \ {s y ,s n } então os valores <strong>de</strong> D,k ′ e l ′ são tais que δ(s k ,a l ) =(s k ′,a l ′,D) e se s k ∈ {s y ,s n } então D = 0,k ′ = k e l ′ = l.O número <strong>de</strong> cláusulas por grupo é:Grupo Número <strong>de</strong> cláusulasG 1 (p(n) + 1)(1 + r(r + 1)/2)G 2 (p(n) + 1)(1 + u(u + 1)/2) on<strong>de</strong> u = 2(p(n) + 1)G 3 2(p(n) + 1) 2 (1 + v(v + 1)/2)G 4 p(n) + 4G 5 1G 6 2(p(n) + 1) 2 (v + 1) + 6(p(n))(p(n) + 1)(r + 1)(v + 1)Se x ∈ L então existe uma computação <strong>de</strong> M com da<strong>dos</strong> x <strong>de</strong> tamanho p(n) ou menos,e esta computação, dada a interpretação das variáveis, impõe uma atribuição <strong>de</strong> valores<strong>de</strong> verda<strong>de</strong> que satisfaz todas as cláusulas <strong>de</strong> C = G 1 ∪ G 2 ∪ G 3 ∪ G 4 ∪ G 5 ∪ G 6 .Inversamente, a construção <strong>de</strong> C é tal que qualquer atribuição <strong>de</strong> valores <strong>de</strong> verda<strong>de</strong>que satisfaça C correspon<strong>de</strong> a uma computação <strong>de</strong> M que aceita x. Segue que F L (x) ésatisfazível se e só se x ∈ L.Ape<strong>na</strong>s resta ver que, para uma linguagem L, a transformação F L (x) po<strong>de</strong> ser construídaa partir <strong>de</strong> x em tempo limitado por uma função polinomial em n = |x|. DadoL e M uma NTDM que <strong>de</strong>ci<strong>de</strong> L em tempo p(n) tem <strong>de</strong> se construir o conjunto <strong>de</strong>variáveis U e o conjunto <strong>de</strong> cláusulas C. Para ver que a construção da transformação élimitada polinomialmente, basta ver que Comp[F L (x)] é limitado superiormente porum polinomial em n. Para este problema (SAT), dada uma codificação razoável,Comp[F L (x)] = |U|.|C|. Note-se que cada cláusula não po<strong>de</strong> conter mais <strong>de</strong> 2|U| literaise o número <strong>de</strong> símbolos necessários para <strong>de</strong>screver um literal é um factor daor<strong>de</strong>m log|U|. Dado que r e v são fixos e não <strong>de</strong>pen<strong>de</strong>m <strong>de</strong> x, tem-se |U| = O(p(n) 2 ) e|C| = O(p(n) 2 ). Então, Comp[F L (x)] = O(p(n) 4 ). □3 Isto é S[i, k] ∧ H[i, j] ∧ A[i, j, k] =⇒ (H[i + 1, j + D] ∧ S[i + 1, k ′ ] ∧ A[i + 1, j, l ′ ])DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —26


Assim, usando a proposição 3.0.3, para mostrar que um problemaΠé<strong>NP</strong>-completo basta:a) Mostrar que Π ∈ <strong>NP</strong>b) Seleccio<strong>na</strong>r um problema Π ′ ∈ <strong>NP</strong>Cc) Construir uma transformação F <strong>de</strong> Π ′ em Πd) Mostrar que F é uma redução polinomialProposição 3.0.4 3SAT é <strong>NP</strong>-completo.Dem. a) 3SAT ∈ <strong>NP</strong> Seja U = {u 1 ,u 2 ,...,u n } um conjunto <strong>de</strong> variáveis lógicas e C ={c 1 ,c 2 ,...,c m } um conjunto <strong>de</strong> cláusulas com 3 literais <strong>de</strong> U. Então, o seguintealgoritmo não-<strong>de</strong>terminístico termi<strong>na</strong> com sucesso se e só se C é satisfeito:para i


□eU ′C ′ == U ∪d) Vejamos que C ′ é satisfeita se e só se C o é. Suponhamos t : U −→ {0,1} umaatribuição <strong>de</strong> valores <strong>de</strong> verda<strong>de</strong> que satisfaz C. Vejamos como t po<strong>de</strong> ser estendidaa uma atribuição <strong>de</strong> valores <strong>de</strong> verda<strong>de</strong> para C ′ , t ′ : U ′ −→ {0,1}. Para isso bastaver quais os valores <strong>de</strong> t ′ para cada elemento <strong>de</strong> U i ′ (e para cada caso verificar queas cláusulas em C ′ são todas satisfeitas). Dizemos que o conjunto U ′ é do tipo k secorrespon<strong>de</strong>r a uma cláusula em C com k literais, <strong>de</strong> acordo com a tabela anterior.Se U i ′ for do tipo 1 ou 2 qualquer valor po<strong>de</strong> ser dado aos seus elementos, porexemplo t ′ (u j i ) = 1,uj i ∈ U i. Se U ′ for do tipo 3 é vazio e portanto não é precisofazer <strong>na</strong>da. Se U i ′ for do tipo k, k ≥ 4, então pelo menos um <strong>dos</strong> literais <strong>de</strong> c i temt(l m ) = 1, para algum 1 ≤ m ≤ k. Se for l 1 ou l 2 então fazemos t ′ (u j i ) = 1 para1 ≤ j ≤ k − 3. Se for l k ou l k−1 fazemos t ′ (u j i) = 0 para 1 ≤ j ≤ k − 3. Casocontrário t ′ (u j i ) = 1 para 1 ≤ j ≤ m − 2 e t′ (u j i) = 0 para m − 1 ≤ j ≤ k − 3.Inversamente, se t ′ é uma atribuição <strong>de</strong> valores <strong>de</strong> verda<strong>de</strong> para C ′ é fácil ver quea restrição <strong>de</strong> t ′ a U <strong>de</strong>ve satisfazer C.e) Note-se que o número máximo <strong>de</strong> cláusulas em C ′ é limitado por um polinómio emmn e portanto o tamanho duma instância <strong>de</strong> 3SAT é limitado por um polinómio notamanho da instância <strong>de</strong> SAT. Isto é, a construção da transformação po<strong>de</strong> ser feitaem tempo polinomial. Don<strong>de</strong> SAT ∝ 3SAT, e portanto 3SAT é <strong>NP</strong>-completo.Em 1972 Karp [Kar72] publica uma lista com 21 <strong>problemas</strong> que mostra serem <strong>NP</strong><strong>completos</strong>,indicando as reduções entre eles. Dessa lista salientámos 6, que já foram referi<strong>dos</strong>anteriormente, e o diagrama seguinte mostra uma sequência <strong>de</strong> reduções que po<strong>de</strong> ser usadapara a sua <strong>de</strong>monstração:∝SAT∝m⋃i=13SAT m⋃i=1 3DMV C∝ ∝ ∝PARHCCLIQUEPelo diagrama e pela redução atrás apresentada po<strong>de</strong>mos concluir que o problema <strong>de</strong><strong>de</strong>cisão do ”caixeiro viajante”é <strong>NP</strong>-completo: HC é <strong>NP</strong>-completo e HC ∝ TSP!∝C ′ iU ′ iDCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —28


Proposição 3.0.5 HC é <strong>NP</strong>-completo.Dem.a) HC ∈ <strong>NP</strong> porque um algoritmo não <strong>de</strong>terminístico ape<strong>na</strong>s tem <strong>de</strong> escolher umaor<strong>de</strong><strong>na</strong>ção <strong>dos</strong> vértices e verificar em tempo polinomial que o conjunto <strong>de</strong> ramoscorrespon<strong>de</strong>ntes está contido em E.b) Seleccionámos VCc) Vamos transformar VC em HC. Seja G = (V,E) e K ≤| V | uma instância<strong>de</strong> VC. Temos <strong>de</strong> construir um grafo G ′ = (V ′ ,E ′ ) tal que G ′ tem um cicloHamiltoneano se e só se G tem uma cobertura por vértices <strong>de</strong> tamanho no máximoK. Primeiro, o grafo G ′ tem K vértices selectores a 1 ,a 2 ,...,a K , que serão usa<strong>dos</strong>para seleccio<strong>na</strong>r K vértices do conjunto V . Depois, para cada ramo em E, G ′contêm uma componente <strong>de</strong> “teste <strong>de</strong> cobertura”que será usada para assegurar quepelo menos uma das extremida<strong>de</strong>s <strong>de</strong>sse ramo é um <strong>dos</strong> K vértices seleccio<strong>na</strong>do.A componente para um ramo e = {u,v} ∈ E é:comV ′E ′ e(u,e,1) (v,e,1)(u,e,2)(v,e,2) (u,e,3) (v,e,3)(u,e,4) (v,e,4)(u,e,5)(v,e,5) (u,e,6) (v,e,6)e = {(u,e,i),(v,e,i) : 1 ≤ i ≤ 6}= {{(u,e,3),(v,e,1)}, {(v,e, 3), (u, e,1)}}∪{{(u,e,6),(v,e,4)}, {(v, e,6), (u,e,4)}}Cada V e ′ tem 12 vértices e cada E′ e tem 14 ramos. Na construção fi<strong>na</strong>l, os únicosvértices <strong>de</strong>sta componente que entraram noutros ramos são os vértices (u,e,1),(v,e,1), (u,e,6) e (v,e,6). Isto implica que qualquer ciclo Hamiltoneano tem <strong>de</strong>passar pelos ramos <strong>de</strong> E e ′ <strong>de</strong> uma das seguintes maneiras:DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —29


(a) (b) (c)(u,e,1)• • (u,e,1) (v,e,1)• • •• • • •(u,e,6)•• • • •• (u,e,6)•• •• ••(v,e,6)• •(u,e,1)• •• •• •• •• •(v,e,6)Ramos adicio<strong>na</strong>is serão usa<strong>dos</strong> <strong>na</strong> construção para juntar pares <strong>de</strong> componentes <strong>de</strong>“teste <strong>de</strong> cobertura” ou para juntar componentes a um vértice seleccio<strong>na</strong>dor. Paracada v ∈ V , or<strong>de</strong>nem-se os ramos inci<strong>de</strong>ntes e v[1] , e v[2] , ..., e v[gr(v)] , on<strong>de</strong> gr(e) é ograu <strong>de</strong> v, isto é, o número <strong>de</strong> ramos que inci<strong>de</strong>m em v. Todas as componentes <strong>de</strong>“teste <strong>de</strong> cobertura” correspon<strong>de</strong>ntes a estes ramos (tendo v como extremida<strong>de</strong>)são unidas pelos seguintes ramos:E ′ v= {{(v,e v[i] ,6),(v,e v[i+1] ,1)} | 1 ≤ i ≤ gr(v)}Cria-se um único caminho em G ′ que inclui exactamente os vértices da forma(v,y,z):• • • • • • • • • • • • • •I • • • • • • • • • • • • • •on<strong>de</strong> I = (v,e v[1] ,1), F = (v,e v[gr(v)] ,6) e cada vértice <strong>de</strong>ssa linha é da forma(v,e v[i] ,j) para 1 ≤ j ≤ 6 e 1 ≤ i ≤ gr(v). Fi<strong>na</strong>lmente, adicio<strong>na</strong>m-se ramospara unir o primeiro e o último vértice <strong>de</strong> cada um <strong>de</strong>stes caminhos a to<strong>dos</strong> osseleccio<strong>na</strong>dores a 1 , a 2 , ..., a K . Estes ramos são:E ′′ = {{a i ,(v,e v [1],1)}, {a i ,(v,e v [gr(v)],6)} | 1 ≤ i ≤ K, v ∈ V }DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —30


□O grafo G ′ = (V ′ ,E ′ ) é então <strong>de</strong>finido por:V ′E ′= {a i | 1 ≤ i ≤ K} ∪ ( ⋃e∈E= ( ⋃E e) ′ ∪ ( ⋃E v) ′ ∪ E ′′e∈Ed) É fácil verificar que G′ po<strong>de</strong> ser construído em tempo polinomial. Vejamos queG ′ tem um ciclo Hamiltoneano se e só se G tem uma cobertura por vértices <strong>de</strong>tamanho no máximo K. Suponhamos que < v 1 ,v 2 ,... ,v n > on<strong>de</strong> n = |V ′ | é umciclo Hamiltoneano. Consi<strong>de</strong>re qualquer porção do ciclo que comece num vértice<strong>de</strong> {a 1 ,a 2 ,... ,a K }, termine num vértice <strong>de</strong>sse conjunto e que não passe por nenhumoutro elemento <strong>de</strong>sse conjunto. Dadas as restrições da forma como um cicloHamiltoneano po<strong>de</strong> passar por uma componente <strong>de</strong> “teste <strong>de</strong> cobertura”, estaporção do ciclo <strong>de</strong>ve passar por um conjunto <strong>de</strong>ssas componentes correspon<strong>de</strong>ntesexactamente aos ramos <strong>de</strong> E que inci<strong>de</strong>m num vértice particular v ∈ V . Cadacomponente é atravessada por um <strong>dos</strong> mo<strong>dos</strong> referi<strong>dos</strong> e nenhum vértice <strong>de</strong> outracomponente é encontrado. Então os K vértices <strong>de</strong> {a 1 ,a 2 ,...,a K } divi<strong>de</strong>m o cicloHamiltoneano em caminhos, cada um correspon<strong>de</strong>nte a um vértice distinto v ∈ V .Dado que o ciclo Hamiltoneano <strong>de</strong>ve incluir to<strong>dos</strong> os vértices <strong>de</strong> todas as componentes<strong>de</strong> “teste <strong>de</strong> cobertura”, e como os vértices duma componente para e ∈ Esó po<strong>de</strong>m ser atravessa<strong>dos</strong> por um caminho correspon<strong>de</strong>nte a uma extremida<strong>de</strong> <strong>de</strong>e, to<strong>dos</strong> os ramos <strong>de</strong> E têm <strong>de</strong> ter uma extremida<strong>de</strong> nesse conjunto <strong>de</strong> K vérticesseleccio<strong>na</strong><strong>dos</strong>. Então, esse conjunto forma uma cobertura por vértices <strong>de</strong> tamanhoK para G.Inversamente, suponhamos V ⋆ ⊆ V uma cobertura por vértices <strong>de</strong> G e |V ⋆ | ≤ K.Po<strong>de</strong>mos supor que |V ⋆ | = K, pois po<strong>de</strong>m sempre adicio<strong>na</strong>r-se vértices. Sejamv 1 ,...,v K os elementos <strong>de</strong> V ⋆ . Escolhemos os ramos no ciclo Hamiltoneano <strong>de</strong> G ′da seguinte forma. Da componente <strong>de</strong> “teste <strong>de</strong> cobertura” representante <strong>de</strong> cadae = {u,v} ∈ E, escolheros ramos correspon<strong>de</strong>ntes a uma das três maneiras, (a), (b) ou (c), como po<strong>de</strong>mser percorridas, consoante {u,v} ∩ V ⋆ é igual a {u}, {u,v} ou {v}. Note-se queuma <strong>de</strong>ssas condições tem <strong>de</strong> se verificar porque V ⋆ é uma cobertura <strong>de</strong> G. Emseguida escolhe-se to<strong>dos</strong> os ramos em E v ′ ipara 1 ≤ i ≤ K. Fi<strong>na</strong>lmente, os ramos:v∈VDCC-FCUPV ′e )}){a i ,(v i ,e vi [1],1)} 1 ≤ i ≤ K{a i+1 ,(v i ,e vi [gr(v i )],6)} 1 ≤ i < K{a 1 ,(v K ,e vK [gr(v i )1],6)}Deixa-se ao leitor a verificação <strong>de</strong> que este conjunto <strong>de</strong> ramos correspon<strong>de</strong> a umciclo Hamiltoneano.Notas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —31


Exercício 3.0.5 [⋆] Mostre que 3SAT ∝ 3DM e 3DM ∝ PAR. Sugestão: Consulte[GJ79, Cap 3].Exercício 3.0.6 Mostrar que os seguintes <strong>problemas</strong> são <strong>NP</strong>-<strong>completos</strong>:a) CLIQUESugestão: VC ∝ CLIQUE, sabendo que se G = (V,E) é um grafo e V ′ ⊆ V então V ′é uma cobertura por vértices <strong>de</strong> G sse V \ V ′ é um clique no grafo complementar <strong>de</strong> G,G c on<strong>de</strong> G c = (V,E c ) e E c = {(u,v) : u,v ∈ V e (u,v) ∉ E}.b) 4SATSugestão: 3SAT ∝ 4SATc) 3COLORSugestão: 3SAT ∝ 3COLORUma maneira simples <strong>de</strong> mostrar que um problemaΠé<strong>NP</strong>-completo é obter uma restrição<strong>de</strong> Π que corresponda a um problema <strong>NP</strong>-completo, isto é, mostrando que Π contém comocaso especial um problema <strong>NP</strong>-completo.Exemplo 4 SUBGRAFO ISOMORFOInstância: Dois grafos não dirigi<strong>dos</strong> G = (V,E) e G ′ = (V ′ ,E ′ )Questão: G contem um subgrafo isomorfo a G ′ , isto é,∃V 1 ⊆ V, ∃E 1 ⊆ E∃f : V ′ −→ V 1 bijecção, tal que ∀(a,b) ∈ E ′ ,(f(a),f(b)) ∈ E 1Se G ′ for um grafo completo, este problema tem como restrição o problema do CLIQUE.Logo é <strong>NP</strong>-completo.Exercício 3.0.7 Mostrar por restrição que os seguintes <strong>problemas</strong> são <strong>NP</strong>-<strong>completos</strong>:a) K<strong>na</strong>psack (Problema do “saco <strong>de</strong> viagem”)Instância: Um conjunto finito U, s : U −→ N (tamanho) e v : U −→ N (valor), B ∈ N(tamanho máximo) e K ∈ N (valor objectivo).Questão: Existe um subconjunto U ′ ⊂ U tal que ∑ u∈U ′ s(u) ≤ B e ∑ u∈U ′ v(u) ≥ K?Sugestão: Restrição a PAR com ∀u ∈ U,s(u) = v(u) e B = K = 1/2 ∑ u∈U s(u).b) Caminho mais longoDCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —32


Instância: Um grafo G = (V,E) e um inteiro positivo K ≤ |V |Questão: G tem um caminho <strong>de</strong> tamanho maior ou igual a K que não repete nenhumvértice?Sugestão: Restringir a HC com K = |V |.c) (X3C) Cobertura exactaInstância: Um conjunto X com |X| = 3q e uma colecção C <strong>de</strong> subconjuntos <strong>de</strong> X com3 elementos.Questão: É verda<strong>de</strong> que C contém uma cobertura exacta <strong>de</strong> X, isto é, uma subcolecçãoC ′ ⊆ C tal que cada elemento <strong>de</strong> X ocorre num e num só elemento <strong>de</strong> C ′ ?Sugestão: Restringir a 3DM consi<strong>de</strong>rando M um conjunto <strong>de</strong>sor<strong>de</strong><strong>na</strong>do W ∪ X ∪ Z.d) Conjuntos DisjuntosInstância: Dada a colecção C <strong>de</strong> conjuntos finitos e um inteiro positivo, K ≤ |C|.Questão: C contém K conjuntos disjuntos?A <strong>classe</strong> <strong>dos</strong> <strong>problemas</strong> <strong>NP</strong>-<strong>completos</strong> inclui muitos <strong>problemas</strong> para os quais se fizerammuitos esforços para encontrar algoritmos polinomiais. O facto <strong>de</strong> que se um <strong>de</strong>les tiver umalgoritmo polinomial to<strong>dos</strong> os outros têm, tor<strong>na</strong>-os os ”mais difíceis”da <strong>classe</strong> <strong>NP</strong> e reforça aconjectura <strong>de</strong> que eles não pertencem <strong>classe</strong> P e portanto P ≠ <strong>NP</strong>. Assim se se mostra queum novo problema é <strong>NP</strong>-completo não vale muito a pe<strong>na</strong> procurar um algoritmo polinomialpara ele mas sim tentar resolvê-lo por outros processos!Ao tentar provar que um dado problema é <strong>NP</strong>-completo duas coisas po<strong>de</strong>m acontecer:a) não se conseguir provar que pertence a <strong>NP</strong> (um caso trivial é se o problema não é <strong>de</strong><strong>de</strong>cisão).b) não se conseguir provar que é completoNo primeiro caso po<strong>de</strong>mos ainda conseguir provar que é completo, mostrando que esseproblema se po<strong>de</strong> transformar polinomialmente num problema <strong>NP</strong>-completo - e sendo assimsó ser resolvido em tempo polinomial se P = <strong>NP</strong>. Neste caso o problema diz-se <strong>NP</strong>-hard (épelo menos tão difícil como os <strong>NP</strong>-<strong>completos</strong>).No segundo caso se se mostrar que é <strong>NP</strong> (mas não P) então é um candidato da <strong>classe</strong><strong>NP</strong>−P−<strong>NP</strong>C que chamaremos <strong>NP</strong>I – <strong>problemas</strong> <strong>de</strong> dificulda<strong>de</strong> ”intermédia”. Teoricamentese P ≠ <strong>NP</strong> mostra-se que esta <strong>classe</strong> é não vazia e que existe uma infinida<strong>de</strong> <strong>de</strong> <strong>classe</strong>s <strong>de</strong>equivalência entre P e <strong>NP</strong>.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —33


Capítulo 4Redução <strong>de</strong> Turing e Problemas<strong>NP</strong>-hardVamos <strong>de</strong>finir uma forma mais geral <strong>de</strong> redutibilida<strong>de</strong> polinomial, que po<strong>de</strong> ser aplicada auma <strong>classe</strong> mais geral <strong>de</strong> <strong>problemas</strong>: <strong>problemas</strong> <strong>de</strong> procura em que para cada instânciaI , a resposta (em vez <strong>de</strong> ser ape<strong>na</strong>s ”sim”ou ”não”) po<strong>de</strong> ser um elemento dum conjuntofinito <strong>de</strong> soluções ou ”não”(se o dito conjunto for vazio). Repare que esta <strong>classe</strong> contém os<strong>problemas</strong> <strong>de</strong> <strong>de</strong>cisão e os <strong>problemas</strong> <strong>de</strong> optimização.Um problema <strong>de</strong> procura Π consiste num conjunto D Π <strong>de</strong> instâncias, e para cada I ∈ D Πnum conjunto finito S Π [I] <strong>de</strong> soluções <strong>de</strong> I . O problema Π tem solução para a instância I seS Π [I] ≠ ∅. Um algoritmo resolve o problema Π , se dado uma instância I tem como resposta“não” se S Π [I] ≠ ∅ ou se tem como saída uma solução s pertencente a S Π [I].Por exemplo, o problema do caixeiro viajante tem como soluções todas as voltas <strong>de</strong> comprimentomínimo, e um algoritmo resolve o problema se para cada instância indicar uma daspossíveis soluções.Formalmente, dado um alfabeto um problema <strong>de</strong> procura vai correspon<strong>de</strong>r a uma relaçãobinária em Σ + . A uma relação binária R em Σ + po<strong>de</strong>-se associar uma família <strong>de</strong> funçõesf : Σ + −→ Σ + tal que para todo x ∈ Σ + , f(x) = ǫ se não existe nenhum y ∈ Σ + tal que(x,y) ∈ R ou f(x) = y se tal y existe. Diz-se que f realiza R. Uma TM M resolve R se afunção f M calculada por M realiza R.Dado um problema <strong>de</strong> procura Π e uma codificação c sobre Σ ⋆ associámos a relação R[Π,c]<strong>de</strong>finida por:R[Π,c] = {(x,y) | x = c(I), I ∈ D Π e y = c(s), s ∈ S Π [I]}O problema Π com codificação c é solúvel em tempo polinomial se existe uma TM polinomialque resolve R[Π,c].Exercício 4.0.8 I<strong>de</strong>ntifique uma linguagem L ⊆ Σ + com uma relação binária em Σ + . Concluaque um problema <strong>de</strong> <strong>de</strong>cisão é um problema <strong>de</strong> procura.Em termos <strong>de</strong> <strong>problemas</strong>, uma redução polinomial <strong>de</strong> Turing dum problema Π num problemaΠ ′ é um algoritmo <strong>de</strong>terminístico A que resolve Π usando uma subroti<strong>na</strong> S que resolveDCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


35Π ′ , e tal que se S é um algoritmo polinomial para Π ′ então A é um algoritmo polinomial paraΠ . Diz-se que Π é Turing redutível a Π ′ , e representa-se por Π ∝ t Π ′ .Em termos <strong>de</strong> linguagens correspon<strong>de</strong> a existir uma máqui<strong>na</strong> <strong>de</strong> Turing <strong>de</strong>terminísticacom oráculo Π ′ que reconhece Π em tempo polinomial.Definição 4.0.3 Uma máqui<strong>na</strong> <strong>de</strong> Turing com oráculo (OTM) correspon<strong>de</strong> a uma máqui<strong>na</strong><strong>de</strong> Turing básica O = (S,Γ,Σ,b,s 0 ,δ,F) com as seguintes características adicio<strong>na</strong>is:• possuí uma fita adicio<strong>na</strong>l – a fita <strong>de</strong> oráculo – e uma cabeça se escrita/leitura que operanessa fita.• o conjunto <strong>de</strong> esta<strong>dos</strong> S inclui dois esta<strong>dos</strong> especiais s c , estado <strong>de</strong> consulta do oráculoe s r , estado <strong>de</strong> continuação da computação.• A função <strong>de</strong> transição é δ : S \ F ∪ {s c } × Γ × Σ −→ S × Γ × Σ × {l,r} × {l,r}Um passo <strong>de</strong> computação duma OTM é análogo ao <strong>de</strong> uma TM básica (consi<strong>de</strong>randoas duas fitas) excepto quando o controlo finito se encontra no estado s c . Neste estado, acomputação <strong>de</strong>pen<strong>de</strong> duma função <strong>de</strong> oráculo g : Σ ⋆ −→ Σ ⋆ . Seja y ∈ Σ ⋆ a sequência <strong>de</strong>símbolos <strong>na</strong>s células <strong>de</strong> 1 a |y| da fita <strong>de</strong> oráculo e seja g(y) = z. então, num passo <strong>de</strong>computação a fita <strong>de</strong> oráculo é modificada para conter a sequência z ∈ Σ ⋆ <strong>na</strong>s células <strong>de</strong> 1 a|z| e brancos <strong>na</strong>s restantes células. A cabeça <strong>de</strong> oráculo fica a ler a célula 1 e os estado passaa ser s r . A fita normal e sua cabeça não são alteradas neste passo.Exercício 4.0.9 Descreva formalmente um passo <strong>de</strong> computação duma OTM.Uma OTM O com função <strong>de</strong> oráculo g associada <strong>de</strong>sig<strong>na</strong>-se por O g . As noções <strong>de</strong> computação,função calculada f g O e complexida<strong>de</strong> T O g(n) são <strong>de</strong>finidas <strong>de</strong> modo idêntico ao das TM básicas.Definição 4.0.4 Sejam R e R ′ duas relações binárias em Σ ⋆ . Uma redução polinomial <strong>de</strong>Turing <strong>de</strong> R em R ′ , R ∝ t R ′ , é uma OTM O tal que para toda a função g : Σ ⋆ −→ Σ ⋆ querealiza R ′ , O g é uma OTM polinomial e a função f g O calculada por O g realiza R.Proposição 4.0.6 A relação ∝ t é transitiva.Exercício 4.0.10 Mostre a proposição 4.0.6.Proposição 4.0.7 Se Π e Π ′ são <strong>problemas</strong> <strong>de</strong> <strong>de</strong>cisão então:Π ∝ Π ′ =⇒ Π ∝ t Π ′Dem. A transformação F da redução polinomial ∝ <strong>de</strong>fine um algoritmo para resolverΠ usando uma subroti<strong>na</strong> para resolver Π ′ : dada uma instância <strong>de</strong> Π , constrói umainstância F(X) <strong>de</strong> Π ′ , aplica a subroti<strong>na</strong> a F(X) e tem como resultado a resposta dadapela subroti<strong>na</strong> (pois X tem solução sse F(X) tem solução). □DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


Exercício 4.0.11 Enuncie e <strong>de</strong>monstre a proposição 4.0.7 em termos <strong>de</strong> linguagens, relaçõese máqui<strong>na</strong>s <strong>de</strong> Turing com oráculo.Definição 4.0.5 Uma relação R é <strong>NP</strong>-hard se existe uma linguagem L ∈ <strong>NP</strong>C tal queL ∝ t R.Um problema <strong>de</strong> procura Π diz-se <strong>NP</strong>-hard se existe um problema <strong>NP</strong>-completo Π ′ talque Π ′ ∝ t Π.Em particular, um problema <strong>de</strong> <strong>de</strong>cisão Π é <strong>NP</strong>-hard se ∀Π ′ ∈ <strong>NP</strong>, Π ′ ∝ t Π e é <strong>NP</strong><strong>completos</strong>e além disso Π ∈ <strong>NP</strong>.Dado um problema <strong>de</strong> <strong>de</strong>cisão Π o seu complementar <strong>de</strong>sig<strong>na</strong>-se por Π c e é tal que S Π c =D Π \ S Π .Exercício 4.0.12 Mostrar que dado um problema Π ∈ <strong>NP</strong> e o seu problema complementarΠ c , se tem Π ∝ t Π c e vice-versa. Explique porque não parece para muitos <strong>problemas</strong> que sepossa ter Π c ∝ Π.Pelo exercício anterior concluímos que se Π é <strong>NP</strong>-completo ou <strong>NP</strong>-hard então Π c é <strong>NP</strong>hard.Vimos que um problema <strong>de</strong> <strong>de</strong>cisão D não é ”mais difícil”que o correspon<strong>de</strong>nte <strong>de</strong> optimizaçãoO, vejamos que muitas vezes também não é ”mais fácil”! Isto é não só D ∝ t Omas também O ∝ t D. Se o problema D é <strong>NP</strong>-completo então o problema <strong>de</strong> optimizaçãoO po<strong>de</strong> ser resolvido em tempo polinomial se e só se P = <strong>NP</strong>.Exemplo 5 Consi<strong>de</strong>remos o problema do ”caixeiro viajante”mais uma vez... Comecemospor <strong>de</strong>finir um problema intermédio:(TSE)Instância: Um conjunto C = {c 1 ,c 2 ,... ,c m } <strong>de</strong> cida<strong>de</strong>s, d : C × C −→ N distância, B ∈ Ne uma volta ”parcial”θ =< c π(1) ,c π(2) ,... ,c π(k) > <strong>de</strong> k cida<strong>de</strong>s distintas, 1 ≤ k ≤ m.Questão: Po<strong>de</strong>-se esten<strong>de</strong>r Θ a uma volta completa < c π(1) ,c π(2) ,... ,c π(k) ,c π(k+1) ,... c π(m) >com comprimento total menor ou igual a B?Este problema é <strong>NP</strong> (mostre!) e como TSP é completo, tem-se que TSE ∝ t TSP. Seja(TSO) o problema <strong>de</strong> optimização, resta ver que TSO ∝ t TSE e por transitivida<strong>de</strong> vemTSO ∝ t TSP.Consi<strong>de</strong>rem-se instâncias <strong>de</strong> TSE e TSO para C e d comuns. Suponhamos queS(C,d,Θ,B)é uma subroti<strong>na</strong> que resolve TSE. Seja B ⋆ a volta óptima para essa instância <strong>de</strong> TSO e suponhamosque essa volta óptima começa em c 1 . É óbvio que B ⋆ tem como limite inferiorB MIN = m e como limite superior B MAX = mx on<strong>de</strong> x = max{d(c i ,c j ) | (c i ,c j ) ∈ C × C}.Po<strong>de</strong>mos então usar uma pesquisa binária para <strong>de</strong>termi<strong>na</strong>r B ⋆ que chama S(C,d,< c 1 >,B)para vários valores <strong>de</strong> B, no máximo ⌈log 2 B⌉ vezes:DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —36


37B_MIN


Capítulo 5Estrutura das Classes <strong>de</strong> Problemas5.1 Classe co<strong>NP</strong> e Estrutura <strong>de</strong> <strong>NP</strong>A <strong>classe</strong> <strong>dos</strong> <strong>problemas</strong> P é fechada em relação complementação. Dado um problema <strong>de</strong><strong>de</strong>cisão Π , o conjunto <strong>de</strong> soluções do problema complementar, Π c , correspon<strong>de</strong> às soluçõescuja resposta para o problema Π é ”não”. Se Π tem um algoritmo <strong>de</strong>terminístico polinomial,um algoritmo para Π c obtém-se trocando as respostas ”sim”por ”não”(continuando aser <strong>de</strong>terminístico e polinomial). Como já se viu, o mesmo não acontece com a <strong>classe</strong> <strong>dos</strong><strong>problemas</strong> <strong>NP</strong>. Nem sempre se po<strong>de</strong> provar que se Π ∈ <strong>NP</strong>, então Π c ∈ <strong>NP</strong>. Por exemplo,o complementar do problema <strong>de</strong> <strong>de</strong>cisão do “caixeiro viajante” (TSP) po<strong>de</strong>-se formular nosseguintes termos: Dado um conjunto <strong>de</strong> cida<strong>de</strong>s, a distância inter-cida<strong>de</strong>s e um limite B, éverda<strong>de</strong> que não existe nenhum circuito por todas as cida<strong>de</strong>s com comprimento menor ouigual a B? A resposta a esta questão necessita da verificação <strong>de</strong> to<strong>dos</strong> (ou quase to<strong>dos</strong>) oscircuitos correctos, o que não parece ser possível usando um algoritmo não-<strong>de</strong>terminístico emtempo polinomial!Em termos formais, não parece que este problema tenha para cada instância, uma testemunhaconcisa. Seja a <strong>classe</strong>co<strong>NP</strong> = {Π c | Π ∈ <strong>NP</strong>}Ou em termos <strong>de</strong> linguagens, dado um alfabeto Σ:co<strong>NP</strong> = {Σ ⋆ \ L | L ⊆ Σ e L ∈ <strong>NP</strong>}Dado que existem muitos <strong>problemas</strong> em co<strong>NP</strong>que parecem não estar em <strong>NP</strong>, po<strong>de</strong>mosconjecturar que <strong>NP</strong> ≠ co<strong>NP</strong>. Note-se que se esta conjectura for verda<strong>de</strong>ira implica queP ≠ <strong>NP</strong>. Porquê? Como se viu P ∈ co<strong>NP</strong> ∩<strong>NP</strong>. Na figura 5.1 tem-se a relação entre estas<strong>classe</strong>s.O resultado seguinte relacio<strong>na</strong> os <strong>problemas</strong> <strong>NP</strong>-<strong>completos</strong> com esta conjectura.Proposição 5.1.1 Se existe um problema <strong>NP</strong>-completo Π , tal que Π c ∈ <strong>NP</strong>, então <strong>NP</strong> =co<strong>NP</strong>.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


5.1 Classe co<strong>NP</strong> e Estrutura <strong>de</strong> <strong>NP</strong> 39INSATco-<strong>NP</strong>Exercício 5.1.1 Mostre a proposição 5.1.1.PRIMEP2SAT ORD<strong>NP</strong>SAT3SATFigura 5.1: <strong>NP</strong>e co<strong>NP</strong>Figura 5.2: Estrutura <strong>de</strong> <strong>NP</strong>Se P ≠ <strong>NP</strong> e <strong>NP</strong> ≠ co<strong>NP</strong> a estrutura para <strong>NP</strong> é a apresentada <strong>na</strong> figura 5.1.Exercício 5.1.2 Consi<strong>de</strong>re o problema complementar <strong>de</strong> 3SAT:3SAT cInstância: Um conjunto U <strong>de</strong> variáveis lógicas e um conjunto C <strong>de</strong> cláusulas, cada uma com3 literais.Questão: Não existe nenhuma atribuição <strong>de</strong> valores <strong>de</strong> verda<strong>de</strong> às variáveis que satisfaça C?Mostre que se tivéssemos um algoritmo polinomial para <strong>de</strong>cidir este problema, to<strong>dos</strong> os <strong>problemas</strong><strong>de</strong> <strong>NP</strong> po<strong>de</strong>riam ser <strong>de</strong>cidi<strong>dos</strong> polinomialmente. Comente em relação completitu<strong>de</strong><strong>de</strong>sse problema.O resultado da proposição 5.1.1 permite ainda encontrar um forte candidato <strong>classe</strong> <strong>NP</strong>I(ou então a P): o problema <strong>de</strong> <strong>de</strong>termi<strong>na</strong>r se um dado inteiro é composto.(COMPOSTO)Instância: Um número inteiro K > 1Questão: Existem inteiros m, n > 1 tais que K = mn?O seu problema complementar é(PRIMOS)DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


5.2 Hierarquia polinomial 40Instância: Um número inteiro KQuestão: K é primo?Tanto o problema (COMPOSTO) como o complementar, o problema (PRIMOS) pertencema <strong>NP</strong>.Nenhum <strong>de</strong>stes <strong>problemas</strong> po<strong>de</strong> ser <strong>NP</strong>-completo a menos que <strong>NP</strong> = co<strong>NP</strong>. Assim, senão existir nenhum algoritmo polinomial que os resolva, pertencem a <strong>NP</strong>I(=<strong>NP</strong>−P−<strong>NP</strong>C).Mais ainda, estes <strong>problemas</strong> po<strong>de</strong>m ser resolvi<strong>dos</strong> por algoritmos polinomiais, mas quepo<strong>de</strong>m falhar com probabilida<strong>de</strong> arbitrariamente peque<strong>na</strong>... Nestas circunstâncias po<strong>de</strong>mosconjecturar que = <strong>NP</strong> ∩ co<strong>NP</strong>! Um problema que ”contribuiu”para esta conjectura foi oda ”Programação Linear”(LP) que durante muitos anos esteve <strong>na</strong>s condições do problema <strong>dos</strong>números compostos mas para o qual já se provou a existência dum algoritmo polinomial...Exercício 5.1.3 Mostre que (COMPOSTO) ∈ <strong>NP</strong>.Para uma <strong>de</strong>monstração que (PRIMOS) pertence a <strong>NP</strong>, ver [Pap94, Cap. 10] ou [Pra75].5.2 Hierarquia polinomialNesta secção vamos estudar <strong>problemas</strong> <strong>de</strong> <strong>de</strong>cisão que são <strong>NP</strong>-hard mas que parecem nãoser <strong>NP</strong>-easy.Po<strong>de</strong>mos generalizar a noção <strong>de</strong> redução <strong>de</strong> Turing permitindo que o algoritmo usa<strong>dos</strong>eja não-<strong>de</strong>terminístico, o que equivale, em termos <strong>de</strong> linguagens, a consi<strong>de</strong>rar máqui<strong>na</strong>s <strong>de</strong>Turing não-<strong>de</strong>terminísticas com oráculo. Temos por uma lado uma escolha e por outro umaconsulta ao oráculo. Da<strong>dos</strong> dois <strong>problemas</strong> Π e Π ′ , se existir um algoritmo não-<strong>de</strong>terminísticopolinomial que resolva Π usando uma subroti<strong>na</strong> que resolva Π ′ , indica-se Π ∝ N t Π ′ .Vamos ver um problema que é <strong>NP</strong>-hard mas que não parece ser <strong>NP</strong>-easy e para o qualse po<strong>de</strong> encontrar uma redução ∝ N t .Exemplo 6 (EME)Instância: Uma expressão boolea<strong>na</strong> E com literais num conjunto <strong>de</strong> variáveis U, constantesV e F e conectivas lógicas ∨ , ∧ , ¬ e =⇒ . E ainda, K ∈ N.Questão: Existe uma expressão boolea<strong>na</strong> E ′ com K ou menos literais e tal que E ′ é equivalentea E ?Este problema é <strong>NP</strong>-hard porque SAT ∝ t EME (Verifique!). No entanto, não parecefácil mostrar que ele é Turing redutível a um problema <strong>de</strong> <strong>NP</strong>. Contudo, usando um algoritmonão-<strong>de</strong>terminístico com um ”oráculo”po<strong>de</strong>mos reduzir este problema ao problema da”satisfação <strong>de</strong> expressões boolea<strong>na</strong>s”:(SBE)DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


5.2 Hierarquia polinomial 41Instância: Uma expressão boolea<strong>na</strong> E com literais num conjunto <strong>de</strong> variáveis U, constantesV e F e conectivas lógicas ∨ , ∧ , ¬ e =⇒ .Questão: Existe uma atribuição <strong>de</strong> valores <strong>de</strong> verda<strong>de</strong> a U que satisfaz E?Este problema contém em particular o problema SAT, portanto é <strong>NP</strong>-completo.Seja uma instância <strong>de</strong> EME com da<strong>dos</strong> U, E e K, suponha-se B K o conjunto das expressõesboolea<strong>na</strong>s com K ou menos literais e seja, ainda, S[E,U] uma subroti<strong>na</strong> que resolveSBE. O seguinte algoritmo estabelece a redução, EME ∝ N t SBE:E’E’)/\(E’=>E)),U] = "n~ao" ent~ao sucessosen~ao insucessoConcluímos então que EME pertence a uma <strong>classe</strong> mais ampla <strong>de</strong> <strong>problemas</strong> aparentemente”mais difíceis”do que os da <strong>classe</strong> <strong>NP</strong>.As <strong>classe</strong>s P Y e <strong>NP</strong> Y são <strong>de</strong>finidas do modo seguinte:P Y = {L | ∃L ′ ∈ Y e L ∝ t L ′ }<strong>NP</strong> Y = {L | ∃L ′ ∈ Y e L ∝ N t L ′ }P <strong>NP</strong> é a <strong>classe</strong> <strong>dos</strong> <strong>problemas</strong> a que chamamos anteriormente <strong>NP</strong>-easy. O problemaEME pertence a <strong>NP</strong> <strong>NP</strong> .Exercício 5.2.1EE(i) Mostre que o seguinte problema é co<strong>NP</strong>.Instância: Duas expressões boolea<strong>na</strong>s E e E ′ com literais num conjunto <strong>de</strong> variáveisU, constantes V e F e conectivas lógicas ∨ , ∧ , ¬ e =⇒ .Questão: E e E ′ são equivalentes?(ii) Conclua, novamente, que EME ∈ <strong>NP</strong> <strong>NP</strong> usando a alínea anterior.Se P ≠ <strong>NP</strong> a figura 5.3 mostra a relação entre as <strong>classe</strong>s P, <strong>NP</strong>, co<strong>NP</strong>, P <strong>NP</strong> e <strong>NP</strong> <strong>NP</strong> .Este processo <strong>de</strong> <strong>de</strong>finir novas <strong>classe</strong>s po<strong>de</strong> ser estendido in<strong>de</strong>finidamente, produzindo <strong>classe</strong>s<strong>de</strong> dificulda<strong>de</strong> aparentemente crescente, [MS72]. Esta hierarquia <strong>de</strong> <strong>classe</strong>s chama-se hierarquiapolinomial e é <strong>de</strong>finida do seguinte modo:Σ p 0 = Π p 0 = ∆ p 0 = P= P Σp k∆ p k+1Σ p k+1= <strong>NP</strong> Σp kΠ p k+1= coΣ p k+1DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


5.2 Hierarquia polinomial 42Figura 5.3: Classes P, <strong>NP</strong>, co<strong>NP</strong>, P <strong>NP</strong> e <strong>NP</strong> <strong>NP</strong>Figura 5.4: Hierarquia PolinomialDCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


5.2 Hierarquia polinomial 43Em particular, Σ p 1 = <strong>NP</strong>P = <strong>NP</strong>, Π p 1 = co<strong>NP</strong> e ∆p 1 = P. Como se viu EME pertencea Σ p 2 , embora não se saiba se Σp 1 = Σp 2 , ou se existe k ≥ 0 tal que Σp k ≠ Σp k+1. A relação <strong>de</strong>inclusão entre as várias <strong>classe</strong>s é dada pelo diagrama da figura 5.4.Para um dado problema <strong>de</strong> <strong>de</strong>cisão Π , como situá-lo <strong>na</strong> hierarquia? Vamos apresentarum resultado que permite <strong>de</strong>termi<strong>na</strong>r um majorante do menor k tal que Π ∈ Σ p k .Recor<strong>de</strong>mos que um problema está em <strong>NP</strong>se tiver uma “testemunha concisa”. Esta noçãopo<strong>de</strong> ser estendida para qualquer problema <strong>de</strong> <strong>de</strong>cisão Π , isto é, qualquer linguagem L.Dado um alfabeto Σ uma relação k-ária em Σ ⋆ é reconhecida em tempo polinomial seexistir uma TM que reconhece precisamente os tuplos (x 1 ,... ,x k ) ∈ R, isto é, tal queR(x 1 ,... ,x k ) se verifica.Po<strong>de</strong>mos então dizer que:• L ∈ P se e só se existe R 1 ∈ Σ ⋆ reconhecível polinomialmente tal que L = {x | R 1 (x)}• L ∈ <strong>NP</strong> se e só se existe R 2 ∈ Σ ⋆ × Σ ⋆ reconhecível polinomialmente e uma funçãopolinomial p tal que L = {x | ∃y, |y| ≤ p(|x|) e R 2 (x,y)}• L ∈ co<strong>NP</strong> se e só se existe R2 c ∈ Σ⋆ × Σ ⋆ reconhecível polinomialmente e uma funçãopolinomial p tal que L = {x | ∀y, |y| ≤ p(|x|) e R2 c(x,y)}O teorema seguinte é <strong>de</strong> [Wra76]:Teorema 5.2.1 Seja L ⊆ Γ ⋆ uma linguagem sobre um alfabeto Γ e(|Γ| ≥ 2). Para todo k ≥ 1L ∈ Σ p k se e só se existem funções polinomiais p 1, ..., p k e uma relação R reconhecida emtempo polinomial tal que:x ∈ L sse ∃y 1 ∈ Γ ⋆ |y 1 | ≤ p 1 (|x|)∀y 2 ∈ Γ ⋆ |y 2 | ≤ p 2 (|x|)...Qy k ∈ Γ ⋆ |y k | ≤ p k (|x|)R(x,y 1 ,...,y k )on<strong>de</strong> Q em y k é ∃ ou ∀ consoante k é ímpar ou par.Usando o teorema 5.2.1 para provar que EME ∈ Σ p 2 , consi<strong>de</strong>re-se a relação R, comR(x,y 1 ,y 2 ) se e só se x é < E,K > (instância) on<strong>de</strong> E é uma expressão boolea<strong>na</strong> e K ∈ N,y 1 é uma expressão boolea<strong>na</strong> E ′ com no máximo K literais, e y 2 é uma atribuição <strong>de</strong> valoresàs variáveis t : U −→ {0,1} que satisfaz E⇔E ′ .As <strong>classe</strong>s Π p ktambém po<strong>de</strong>m ser caracterizadas <strong>de</strong> modo análogo, bastando no teorema5.2.1 tocar to<strong>dos</strong> os quantificadores ∃ por ∀ e vice-versa.Corolário 5.2.1 Seja L ⊆ Γ ⋆ uma linguagem sobre um alfabeto Γ e (|Γ| ≥ 2) e i ≥ 1.L ∈ Σ p kse e só se existe uma relação reconhecida em tempo polinomial tal que a linguagem{< x,y >| R(x,y)} ∈ Π p k−1e existe p tal que L = {x | ∃y, |y| ≤ p(|x|) e R(x,y)}.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


5.2 Hierarquia polinomial 44Corolário 5.2.2 Seja L ⊆ Γ ⋆ uma linguagem sobre um alfabeto Γ e (|Γ| ≥ 2) e i ≥ 1.L ∈ Π p kse e só se existe uma relação reconhecida em tempo polinomial tal que a linguagem{< x,y >| R(x,y)} ∈ Σ p k−1e existe p tal que L = {x | ∀y, |y| ≤ p(|x|) e R(x,y)}.A noção <strong>de</strong> completitu<strong>de</strong> po<strong>de</strong> ser <strong>de</strong>finida para cada k e para cada um <strong>dos</strong> tipos <strong>de</strong><strong>classe</strong>s da hierarquia, caracterizando os <strong>problemas</strong> ”mais difíceis”<strong>de</strong> cada <strong>classe</strong>. Para cada<strong>classe</strong> é possível construir um problema Σ p k-completo e portanto tor<strong>na</strong>-se mais fácil provarcompletitu<strong>de</strong> <strong>de</strong> outros <strong>problemas</strong>.Na prática só se conhecem alguns <strong>problemas</strong> (além <strong>dos</strong> construí<strong>dos</strong> teoricamente) candidatosa Σ p 2 \ (Σp 1 ∪ Σp 1 ) ou mesmo Σp 2 -<strong>completos</strong>.Um resultado interessante em relação a esta hierarquia é o seguinte:Proposição 5.2.1 Se para algum k, Σ p k = Πp k então Σp j = Πp j = Σp kpara todo o j ≥ k.Exercício 5.2.2 Mostrar a proposição 5.2.1. Sugestão: Mostre que Σ p k = Πp k implica Σp k+1 =Π p kİsto é, a hierarquia po<strong>de</strong> colapsar a partir <strong>de</strong> certa or<strong>de</strong>m e portanto não ser infinita. Emparticular, se P = <strong>NP</strong>, então Σ p j= P, para todo j ≥ 0. Se Σ p 0 ≠ Σp kpara algum k > 0,então P ≠ <strong>NP</strong>. Temos então que qualquer problema da hierarquia só po<strong>de</strong> ser resolvido emtempo polinomial se e só se P = <strong>NP</strong> (e portanto embora possa não ser <strong>NP</strong>-easy <strong>na</strong> práticatem as mesmas consequências!). Contudo, o estudo <strong>de</strong>stas <strong>classe</strong>s po<strong>de</strong> ajudar a estabelecera conjectura <strong>de</strong> que P ≠ <strong>NP</strong>.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


Capítulo 6Exercícios <strong>de</strong> Revisão sobre Classes<strong>de</strong> Complexida<strong>de</strong>6.0.1 Or<strong>de</strong>ns <strong>de</strong> Gran<strong>de</strong>zaNesta secção são revistas algumas noções sobre or<strong>de</strong>ns <strong>de</strong> gran<strong>de</strong>za <strong>de</strong> funções (reais).Definição 6.0.1 Sendo f : N → R e g : N → R1. f(n) é O(g(n) se∃c ∈ R + ∃m∀n ≥ m | f(n) |≤ c | g(n) |(diz-se que f é da or<strong>de</strong>m <strong>de</strong> g, isto é, f cresce como g ou mais lentamente)2. f(n) é Ω(g(n)) se g(n) é O(f(n))3. f(n) é Θ(g(n)) se f(n) é O(g(n)) e g(n) é O(f(n))f(n)4. f(n) é o(g(n)) se lim n→∞ = 0, isto é, g(n) cresce mais rapidamente do que f(n).g(n)Se f(n) é O(p(n)) e p(n) é uma função polinomial então diz-se que f(n) é <strong>de</strong> or<strong>de</strong>m polinomial.Teorema 6.0.2 Se f(n) é o(g(n)) então f(n) é O(g(n)).Exercício 6.0.3 Mostre o teorema anterior.Exercício 6.0.4 Mostre as seguintes igualda<strong>de</strong>s:(i) f(n) = O(f(n))(ii) c.O(f(n)) = O(f(n)) para qualquer c constante(iii) O(f(n) + g(n)) = O(f(n)) + O(g(n))(iv) O(O(f(n))) = O(f(n))(v) O(f(n))O(g(n)) = O(f(n)g(n))DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


6.1 Codificações Razoáveis 46(vi) O(f(n))g(n) = f(n)O(g(n))Exercício 6.0.5 Mostre que:(i) a m n m + ... + a 0 é Θ(n m ), para a m > 0. Sugestão: Para mostrar que é Ω(n m ) consi<strong>de</strong>rec = 2a me n 0 = mh com h = (2/a m )max(|a m−1 |,...,|a 0 |)(ii) n α é o(n β ), se 0 ≤ α < β.(iii) n α é o(β n ), se β > 1. Conclua que para qualquer polinómio p(n) e β > 1, p(n) éO(β n ).Sugestão: Consi<strong>de</strong>re β = (1 + ǫ) e a expansão do binómio <strong>de</strong> Newton.(iv) para qualquer polinómlio p(n) e constante c existe um inteiro n 0 tal que, ∀ n > n 0 , 2 cn >p(n). Calcule esse n 0 para n 2 e c = 1 e para 100n 100 e c = 1100. Conclua que p(n) não éΩ(c n ), c > 1(v) log n é O(n) e o(n α ), α > 0(vi) ∀a, b > 1, log a n é Θ(log b ). Sugestão: Recor<strong>de</strong> que para n > 0, log a n é y tal que a y = n.(vii) ∀α > 1, α n é o(n!)Exercício 6.0.6 Mostre que Θ é uma relação <strong>de</strong> equivalência.Exercício 6.0.7 Sendo f(n) e g(n) qualquer par <strong>de</strong> funções a seguir apresentadas, <strong>de</strong>terminese f(n) é O(g(n)), f(n) é Ω(g(n)) ou f(n) é Θ(g(n))6.1 Codificações Razoáveisn 2 n 3 n log n 2 n n n 2 2nDefinição 6.1.1 Duas codificações c 1 e c 2 , dizem-se polinomialmente relacio<strong>na</strong>das, se existempolinómios p e p ′ tal que, sendo x 1 e x 2 as representações dum mesmo objecto x, respectivamenteem c 1 e c 2 , se tem | x 1 |≤ p(| x 2 |) e | x 2 |≤ p ′ (| x 1 |).Exercício 6.1.1 Consi<strong>de</strong>re o problema <strong>de</strong> codificar um inteiro não-negativo m numa baseb ≥ 2. Mostre que(i) os comprimentos das codificações em bases diferentes estão polinomialmente (até linearmente,O(n)) relacio<strong>na</strong>das entre si.(ii) a codificação em unário não está polinomialmente relacio<strong>na</strong>da com a codificação numabase b ≥ 2Exercício 6.1.2 Consi<strong>de</strong>re o problema <strong>de</strong> codificar um grafo não dirigido G = (V,E). Doisprocessos são:• matriz <strong>de</strong> adjacências representada por | V | 2 bitsDCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


6.2 Classes <strong>de</strong> Complexida<strong>de</strong> e <strong>NP</strong>-completitu<strong>de</strong> 47• lista <strong>de</strong> ramos: a cad vertice associar a lista <strong>dos</strong> pontos <strong>de</strong> chegada <strong>dos</strong> ramos que <strong>de</strong>lepartem(i) Defi<strong>na</strong> mais rigorosamente as codificações mencio<strong>na</strong>das(ii) Dê exemplo <strong>de</strong> um grafo codificado das duas formas(iii) Mostre que os comprimentos das duas codificações estão polinomialmente (quadraticamente)relacio<strong>na</strong><strong>dos</strong> entre siExercício 6.1.3 Supondo o alfabeto Σ = {0,1, −,[,],(,),,} invente uma codificação genéricapara representar• um inteiro em binário• a referência ao n-ésimo elemento dum conjunto, sequência, etc. ..• uma sequência <strong>de</strong> elementosUsando as coficações anteriores diga como representar: um conjunto (finito) <strong>de</strong> objectos, umgrafo, uma função finita e um número racio<strong>na</strong>l.6.2 Classes <strong>de</strong> Complexida<strong>de</strong> e <strong>NP</strong>-completitu<strong>de</strong>Exercício 6.2.1 Caminhos HamiltonianosSejam respectivamente HPN e HPE os <strong>problemas</strong> <strong>de</strong> <strong>de</strong>cisão “existência <strong>de</strong> um caminhohamiltoniano qualquer (entre vértices distintos)” e “existência <strong>de</strong> um caminho hamiltonianoentre dois vértices (distintos) especifica<strong>dos</strong>”. Note que, no primeiro caso, uma instânciaé um grafo não dirigido G = (V,E) enquanto no segundo caso uma instância é da formaG = (V,E)/x/y on<strong>de</strong> G é um grafo não dirigido e x,y ∈ V são os vértices especifica<strong>dos</strong>.1. Mostra que HPE ∝ HPN2. Mostra que HPN ∝ HPEExercício 6.2.2 Colorir grafosConsi<strong>de</strong>ra os seguintes <strong>problemas</strong> <strong>de</strong> <strong>de</strong>cisão a que chamamos C(n) (on<strong>de</strong>, para cada probleman é fixo):(n-COLOR)Instância: Um grafo dirigido G = (V,E).Questão:É possível colorir G com n cores, isto é, existe uma funçãof : V −→ {1, · · · ,n}tal que sempre que (a,b) ∈ E é f(a) ≠ f(b)?DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


6.2 Classes <strong>de</strong> Complexida<strong>de</strong> e <strong>NP</strong>-completitu<strong>de</strong> 48(i) Mostra que C(1) e C(2) pertencem à <strong>classe</strong> P.(ii) Supondo que se sabe que C(3) é <strong>NP</strong>-completo mostra que C(4) também é <strong>NP</strong>-completo.Um método consiste em mostrar que C(4) é <strong>NP</strong>e que C(3) ∝ C(4).(iii) Supondo que se sabe que C(3) é <strong>NP</strong>-completo mostra que C(n) é <strong>NP</strong>-completo paratodo o n ≥ 3.Exercício 6.2.3 Acabas <strong>de</strong> <strong>de</strong>monstrar que um <strong>de</strong>termi<strong>na</strong>do problema Π é <strong>NP</strong>-completo.Qual o significado prático <strong>de</strong>ssa <strong>de</strong>scoberta? Po<strong>de</strong>mos concluir que to<strong>dos</strong> os algoritmos pararesolver Π são quase inúteis uma vez que vão <strong>de</strong>morar um tempo exponencial?Exercício 6.2.4 Caminhos entre 2 vértices <strong>de</strong> um grafoConsi<strong>de</strong>ra um grafo não dirigido G(V,E) e dois vértices fixos a e b <strong>de</strong> V .1. Mostra que o número <strong>de</strong> caminhos simples e distintos entre a e b po<strong>de</strong> ser exponencial notamanho do grafo — por exemplo em max(|V |, |E|). Nota: um caminho diz-se simplesquando não passa mais que uma vez por cada nó (“não tem ciclos”). Dois caminhos sãodistintos quando têm pelo menos um vértice diferente.Sugestão 1: Consi<strong>de</strong>ra um grafo completo <strong>de</strong> n nós. Sugestão 2: Consi<strong>de</strong>ra um grafo“quadriculado” <strong>de</strong> n por n, dois vértices opostos (<strong>na</strong> diago<strong>na</strong>l) e os caminhos entre elesque progri<strong>de</strong>m sempre no sentido da diago<strong>na</strong>l.2. Consi<strong>de</strong>ra o problema do caminho mais longo:(CML)Instância: G(V,E), a ∈ V , b ∈ V , com a ≠ b e inteiro k.Questão: Existe um caminho simples entre a e b <strong>de</strong> comprimento maior ou igual a k?Mostra que CML é <strong>NP</strong>-completo. Nota: Existem algoritmos polinomiais como o <strong>de</strong>Dijkstra e o <strong>de</strong> Floyd para o problema do caminho mais curto.3. Classifica os <strong>problemas</strong> <strong>de</strong> <strong>de</strong>cisão correspon<strong>de</strong>ntes às questões indicadas; a instância ésempre um grafo dirigido G(V,E), a ∈ V , b ∈ V com a ≠ b e k (todavia, para os 2últimos <strong>problemas</strong> a instância não contêm k). Po<strong>de</strong>s usar os resulta<strong>dos</strong> mencio<strong>na</strong><strong>dos</strong>(ou cuja <strong>de</strong>monstração é proposta) <strong>na</strong>s alíneas anteriores; estes resulta<strong>dos</strong> são tambémváli<strong>dos</strong> em grafos dirigi<strong>dos</strong>.(a) To<strong>dos</strong> os caminhos entre a e b têm comprimento maior ou igual a k.(b) To<strong>dos</strong> os caminhos entre a e b têm comprimento menor ou igual a k.(c) To<strong>dos</strong> os caminhos simples entre a e b têm comprimento menor ou igual a k.(d) Existe um caminho <strong>de</strong> comprimento menor que k.(e) Existe um caminho <strong>de</strong> comprimento maior que k.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


6.2 Classes <strong>de</strong> Complexida<strong>de</strong> e <strong>NP</strong>-completitu<strong>de</strong> 49(f) Não existe nenhum caminho entre a e b.(g) Existem caminhos <strong>de</strong> comprimento arbitrariamente gran<strong>de</strong> entre a e b?Exercício 6.2.5 Consi<strong>de</strong>ra o seguinte problema <strong>de</strong> <strong>de</strong>cisão:(IC)(Implicação <strong>de</strong> Cláusulas)Instância: Conjuntos <strong>de</strong> cláusulas C 1 e C 2 com variáveis lógicas <strong>de</strong> um conjunto U.Questão: C 1 implica C 2 ? Por outras palavras: C 2 tem o valor lógico verda<strong>de</strong> sempre que C 1tiver o valor lógico verda<strong>de</strong>?(i) Descreve <strong>de</strong> forma resumida e utilizando uma linguagem <strong>de</strong> alto nível um algoritmo<strong>de</strong>terminístico que resolve (IC). O algoritmo é polinomial ou exponencial?(ii) A que <strong>classe</strong> <strong>de</strong> complexida<strong>de</strong> pertence IC? Porquê?(iii) (PCE)(Poucas Cláusulas Equivalentes)Instância: Conjunto <strong>de</strong> cláusulas C, conjunto U <strong>de</strong> variáveis lógicas e inteiro positivo k.Questão: Existe um conjunto C ′ <strong>de</strong> k ou menos cláusulas utilizando variáveis <strong>de</strong> U queseja equivalente a C (isto é, tal que C e C ′ tenham o mesmo valor lógico qualquerque seja a atribuição <strong>de</strong> valores lógicos às variáveis <strong>de</strong> U)?Escreve o que <strong>de</strong>scobrires sobre a <strong>classe</strong> <strong>de</strong> complexida<strong>de</strong> a que pertence PEC.Exercício 6.2.6 Consi<strong>de</strong>ra uma máqui<strong>na</strong> <strong>de</strong> Turing M, uma palavra x e um inteiro positivo t.Diz se é possível exprimir em cláusulas (eventualmente <strong>de</strong>pen<strong>de</strong>ntes <strong>de</strong> M, x e t) os seguintesfactos por forma que as cláusulas sejam satisfazíveis se e só se os factos forem verda<strong>de</strong>iros.1. A máqui<strong>na</strong> M com os da<strong>dos</strong> x pára em não mais <strong>de</strong> t passos.2. A máqui<strong>na</strong> M com os da<strong>dos</strong> x pára (num número qualquer <strong>de</strong> passos).3. A máqui<strong>na</strong> M com os da<strong>dos</strong> x não pára.Exercício 6.2.7 Consi<strong>de</strong>ra o problema EL da equivalência <strong>de</strong> 2 expressões lógicas que po<strong>de</strong>mconter variáveis proposicio<strong>na</strong>is, variáveis proposicio<strong>na</strong>is negadas e as conectivas ∨ e ∧:(EL)Instância: Um conjunto U <strong>de</strong> variáveis lógicas e 2 expressões lógicas E 1 e E 2 com variáveisem U.Questão: “E 1 e E 2 são equivalentes?”, isto é, têm o mesmo valor lógico para todas asatribuições <strong>de</strong> valores lógicos às variáveis <strong>de</strong> U?DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


6.2 Classes <strong>de</strong> Complexida<strong>de</strong> e <strong>NP</strong>-completitu<strong>de</strong> 50Exemplo:U = {u 1 ,u 2 }, E 1 = (u 1 ∨ u 2 ) ∧ (u 1 ∨ u 2 ), E 2 = u 1 ∧ u 1 ,(i) Consi<strong>de</strong>ra as seguintes afirmações com as quais se preten<strong>de</strong> mostrar a dificulda<strong>de</strong> <strong>de</strong>resolver EL. Comenta-as <strong>de</strong>vidamente.(a) EL é <strong>NP</strong>-completo porque nunca ninguém conseguiu um algoritmo polinomialpara o resolver.(b) EL é <strong>NP</strong>porque não existe nenhum algoritmo polinomial para o resolver.(c) EL é <strong>NP</strong>-completo porque se conseguissemos resolver EL em tempo polinomialtambém era possível resolver SAT em tempo polinomial pois uma instância (U,C)<strong>de</strong> SAT é satisfazível se e só se a instância <strong>de</strong> ELU ′ , E 1 = E c , E 2 = (u n ∧ u n )não tiver solução, on<strong>de</strong> U ′ = U ∪ {u n }, u n é uma nova variável e E c é a expressãológica correspon<strong>de</strong>nte ao conjunto C <strong>de</strong> cláusulas (conjunção <strong>de</strong> disjunções).(ii) Determi<strong>na</strong> a <strong>classe</strong> <strong>de</strong> complexida<strong>de</strong> a que <strong>de</strong> facto pertence EL.Exercício 6.2.8 Classifica o mais exactamente possível os seguintes <strong>problemas</strong>. Justifica.Em to<strong>dos</strong> eles é dada uma colecção C <strong>de</strong> k objectos com tamanhos inteiros t 1 , t 2 , . .., t k eum tamanho (inteiro) da “mala” t, sendo t i ≤ t para 1 ≤ 1 ≤ k. Repara que um mesmoproblema Π po<strong>de</strong> pertencer simultâneamente a várias <strong>classe</strong>s, por exemplo ser <strong>de</strong>cidivel, <strong>NP</strong>eP; a última caracterização é a mais exacta.1. É possível arrumar to<strong>dos</strong> os objectos numa mala, isto é, ∑ ki=1 t i ≤ t?2. Dado (também) m pergunta-se é possível arrumar to<strong>dos</strong> os objectos em não mais <strong>de</strong> mmalas?3. Dado (também) m pergunta-se: Todas as arrumações exigem pelo menos m malas?4. Qual o menor número <strong>de</strong> malas em que é possível arrumar to<strong>dos</strong> os objectos?5. Da<strong>dos</strong> (também) m e c pergunta-se: to<strong>dos</strong> os subconjuntos <strong>de</strong> C com c objectos po<strong>de</strong>mser arruma<strong>dos</strong> em não mais <strong>de</strong> m malas?6. Da<strong>dos</strong> (também) m, t m e c pergunta-se: to<strong>dos</strong> os subconjuntos <strong>de</strong> C com c objectos cujasoma <strong>dos</strong> tamanhos é pelo menos t m po<strong>de</strong>m ser arruma<strong>dos</strong> em não mais <strong>de</strong> m malas?Exercício 6.2.9 Consi<strong>de</strong>ra o problema <strong>de</strong> <strong>de</strong>cisão do (CLIQUE) que se sabe ser <strong>NP</strong>–completo.1. O correspon<strong>de</strong>nte problema <strong>de</strong> optimização é o seguinte: “dado um grafo não dirigido,qual o tamanho do maior clique que ele possui?” Mostra que se existisse um algoritmopolinomial para o problema <strong>de</strong> <strong>de</strong>cisão então também existia um algoritmo polinomialpara o <strong>de</strong> optimização (o recíproco é evi<strong>de</strong>nte).DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


6.2 Classes <strong>de</strong> Complexida<strong>de</strong> e <strong>NP</strong>-completitu<strong>de</strong> 512. Classifica os seguintes <strong>problemas</strong> <strong>de</strong> <strong>de</strong>cisão utilizando ape<strong>na</strong>s a informação <strong>de</strong> que oproblema do (CLIQUE) é <strong>NP</strong>–completo.(a) Dado G e k pergunta-se: G tem dois (ou mais) “cliques” disjuntos <strong>de</strong> tamanho nãoinferior a k?(b) Dado G pergunta-se: G tem um “clique” <strong>de</strong> or<strong>de</strong>m 22?(c) Dado G pergunta-se: não terá G um “clique” <strong>de</strong> or<strong>de</strong>m 22?(d) Da<strong>dos</strong> G 1 e G 2 pergunta-se: existe em G 1 um subgrafo isomorfo a G 2 ?(e) Da<strong>dos</strong> G 1 e G 2 pergunta-se: não terá G 1 nenhum subgrafo isomorfo a G 2 ?(f) Dado G e k pergunta-se: existe um subconjunto com um máximo <strong>de</strong> k vérticestal que todo o ramo tem (pelo menos) uma extremida<strong>de</strong> que é um vértice <strong>de</strong>ssesubconjunto?Exercício 6.2.10 Consi<strong>de</strong>re um problema <strong>de</strong> <strong>de</strong>cisão cuja instância é (A,k) sendo k uminteiro não negativo e cuja pergunta é “P(A,k)?” (P é uma proposição). No correspon<strong>de</strong>nteproblema <strong>de</strong> optimização pergunta-se “qual o máximo k tal que P(A,k)?”. Supomos quese verifica a seguinte condição: sempre que existe solução para um <strong>de</strong>termi<strong>na</strong>do valor <strong>de</strong> k,existe solução para to<strong>dos</strong> os k ′ tal que 0 ≤ k ′ ≤ k.1. Mostra que se existir um algoritmo polinomial para o problema <strong>de</strong> optimização entãotambém existe um algoritmo polinomial para o problema da <strong>de</strong>cisão.2. Mostra que em condições bastante gerais o inverso (da alínea anterior) também é verda<strong>de</strong>iro.Sugestão: consi<strong>de</strong>ra a possível existência <strong>de</strong> um majorante <strong>de</strong> k.3. Exemplifica os resulta<strong>dos</strong> anteriores para o problema do “clique”.Exercício 6.2.11 A Hierarquia cresceMostra que, para todo o k ≥ 0 é∆ p k ⊆ Σp k+1 ⊆ ∆p k+1DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


Bibliografia[BC94]Daniel P. Bovet and Pierluigi Crescenzi, Introduction to the theory of complexity,Prentice Hall, 1994.[BG89] Josep Díaz Balcázar, José Luis and Joaquim Gabarró, Structural complexity i,Springer Verlag, 1989.[BG90] , Structural complexity ii, Springer Verlag, 1990.[Coo71][GJ79][HU79]S. A. Cook, The complexity of theorem proving procedures, Proc. 3rd Annual ACMSymposium on Theory of Computing (Association for Computing Machinery, ed.),1971.Michael Garey and David Johnson, Computers and intractability: a gui<strong>de</strong> to thetheory of np-completeness, W.H. Freeman and Company, 1979.John E. Hopcroft and Jeffrey D. Ullman, Introduction to automata theory, languagesand computation, Addison Wesley, 1979.[J.S76] L. J.Stockmeyer, The polynomial-time hierarchy, Theoretical Computer Science 3(1976), 1–22.[Kar72][LP81][LV90]R. M. Karp, Reducibility among combi<strong>na</strong>torial problems, Complexity of ComputerComputations (R. E. Miller and J. W. Tatcher, eds.), Plenum Press, 1972, pp. 85–103.Harry R. Lewis and Christos H. Papadimitriou, Elements of the theory of computation,Prentice Hall, 1981.Ming Li and Paul M. B. Vitànyi, Kolmogorov complexity and its applications, Handbookof Theoretical Computer Science (J. van Leewen, ed.), vol. A, Elsevier SciencePublishers, 1990, pp. 188–254.[Mat95a] Armando B. Matos, Algoritmos probalísticos – algumas notas, Tech. report, Faculda<strong>de</strong><strong>de</strong> Ciências da Universida<strong>de</strong> do Porto, 1995.[Mat95b], Entropia, algoritmos e complexida<strong>de</strong> mínima, Tech. report, Faculda<strong>de</strong> <strong>de</strong>Ciências da Universida<strong>de</strong> do Porto, 1995.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —


BIBLIOGRAFIA 53[Min74] M. Minsky, Finite and infinite machines, Addison Wesley, 1974.[MS72]A. R. Meyer and L. J. Stockmeyer, The equivalence problem for regular expressionswith squaring requires exponential time, Proceedings of the 13th Annual Symp. onswitching and Automata Theory, IEEE Computer Society, 1972, pp. 125–129.[Pap94] Christos H. Papadimitriou, Computatio<strong>na</strong>l complexity, Addison Wesley, 1994.[Pra75] Vaughan Pratt, Every prime has a succinct certificate, SIAM J. Computation 4(1975), no. 3, 214–220.[Wra76]C. Wrathall, Complete sets and the polynomial-time hierarchy, Theoretical ComputerScience 3 (1976), 23–33.DCC-FCUPNotas e Exercícios <strong>de</strong> Complexida<strong>de</strong> — Universida<strong>de</strong> do Porto —

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!