Minicurso em Eficincia de Algoritmos
Intratabilidade de Problemasverso 2.2
Prof. D.Sc. Fabiano [email protected]
Eficincia de Algoritmos
Intratabilidade de ProblemasConsidere o problema de ordenao de N elementos de um vetor
Qual a complexidade de um algoritmoque resolve o problema?
Intratabilidade de ProblemasNaturalmente, depende do algoritmo
Gerar Permutaes: O(N N!)
Bubblesort: (N2)
Quicksort: O(N2)
Mergesort: (N lg N)
Algoritmo qualquer: (N lg N)
Intratabilidade de ProblemasUm algoritmo eficiente se o nmero de passos que ele executa sob uma entrada de tamanho n limitada a O(nc), para algum natural c 0, e ineficiente caso contrrio(Tese de Cobham)
Intratabilidade de Problemas Num computador que executa 109 passos/s,
um algoritmo que requer: 2500n passos = (n) eficiente, mas no consegue
ser executado nem para n = 1 20,00001n no eficiente, mas executa em cerca de
1s para n = 3.000.000
Ento, qual a motivao para esta definio de eficincia?
Intratabilidade de Problemas A Teoria da Intratabilidade sobre a
eficincia do mtodo de soluo Problemas que podem ser resolvidos
computacionalmente em geral podem o fazer enumerando todas as possveis solues
Este mtodo de soluo conduz a algoritmos cuja complexidade de tempo (cn), para constante positiva c>1 e entrada de tamanho n (tempo exponencial). Ex: Todas as permutaes de N elementos: (n!) = (2n) Todos os subconjuntos de um conjunto: (2n)
Intratabilidade de Problemas A Teoria da Intratabilidade sobre a
eficincia do mtodo de soluo (continuao) No entanto, existem algoritmos que
empregam certos mtodos de resolver problemas que conseguem evitar de testar todas as respostas possveis
Ou sejam, empregam solues mais engenhosas que exploram a estrutura do problema e, por este ponto de vista, mais eficientes!
Intratabilidade de Problemas A Teoria da Intratabilidade sobre a
eficincia do mtodo de soluo (continuao) A experincia mostra que uma vez que se
descubra uma soluo eficiente para um problema, mesmo que ineficiente na prtica (um polinmio de grau muito alto), o principal foi feito: evidenciar uma ideia de como evitar de se testar todas as combinaes. Em pouco tempo, aparecero solues ainda mais eficientes (talvez, tornando o problema solvel eficientemente tambm na prtica)
Problemas de Deciso, Busca e Otimizao
Intratabilidade de Problemas Em geral, cada problema computacional P pode ser
apresentado em trs verses:
Deciso: Dado uma constante K, existe uma resposta R de P tal que v(R) K?
Busca: Dado uma constante K, encontre uma resposta R de P tal que v(R) K
Otimizao: Encontre uma resposta R de P tal que v(R) = min { v(R') | R' uma resposta }
onde v(R) uma funo que fornece um valor para a resposta R
Exemplo 1: Seja G um grafo. Considere os problemas:
Deciso: Dado uma constante K, existe uma K-colorao prpria de G?
Busca: Dado uma constante K, encontre uma K-colorao prpria de G
Otimizao: Determine o numero cromtico (G) de G, i.e., (G) = min { K | G possui uma K-colorao prpria}
Intratabilidade de Problemas
Exemplo 2: Seja G um grafo e wi,j um peso para cada ij E(G). Sabendo que o peso W(C) de um CH (ciclo hamiltoniano) C a soma dos pesos wi,j tal que ij C, considere os problemas:
Deciso: Dado uma constante K, existe um CH C de G tal que W(C) K?
Busca: Dado uma constante K, encontre um CH C de G tal que W(C) K
Otimizao: Encontre o CH C de peso mnimo, i.e., W(C) = min { W(C') | C' CH de G }
Intratabilidade de Problemas
Eficincia de Deciso vs. Busca vs. Otimizao
se Otimizao eficiente, ento Deciso e Busca tambm so
se Busca eficiente, ento Deciso tambm (Otimizao pode ou no ser)
se Deciso eficiente, Busca e Otimizao podem ou no ser. Exemplo: Deciso: n nmero composto? Eficiente (AKS Test)Busca: Encontre a, b > 1 naturais tais que n = ab: Ineficiente (at a presente data) (disso depende o Algoritmo RSA!)
Intratabilidade de Problemas
As classes P, NP, NPC etc. a serem definidas em seguida tratam de problemas em suas verses de Deciso
Intratabilidade de Problemas
Classes P e NP
A classe P consiste dos problemas de deciso que so solveis por um algoritmo eficiente(problemas polinomiais)
A classe NP consiste dos problemas de deciso para os quais um certificado de soluo pode ser verificado por um algoritmo eficiente(problemas no-deterministicamente polinomiais)
Intratabilidade de Problemas
Mas... o que umcertificado de soluo de um
problema?
Intratabilidade de Problemas
Considere um Orculo que tudo sabe e a tudo responde corretamente de maneira instantnea
Intratabilidade de Problemas
Se fosse possvel empregar um, qualquer problema estaria resolvido! Mas, infelizmente, voc nunca tem condies de contratar um....
Mas pode contratar um Orculo que tudo sabe e a tudo responde de maneira instantnea, mas por ser ainda um aprendiz, nem sempre corretamente...
Intratabilidade de Problemas
Quando o problema tem resposta, o aprendiz produz a resposta. Mas quando no h, o aprendiz chuta uma!
Mas como pode ser de ajuda um Orculo aprendiz, se ele no confivel?
Ao invs de pedir ao Orculo a resposta do problema (SIM/NO), pedimos um certificado da soluo, que consiste de uma prova que suporte a mesma
Bastaria, ento, conferir o certificado. Se plausvel, a soluo do problema SIM. Se incorreto, ento a soluo do problema NO
Intratabilidade de Problemas
Exemplo 1: Ciclo Hamiltonianofuno ExisteCH(G: grafo): Lgicoincio
v1,v2...vN ConsultaOrculo("sequncia de V(G) que seja um CH")S para i 1 at N-1 faa
se vi S ou vivi+1 E(G) ento retornar FS S { vi }
fim-parase vN S ou vNv1 E(G) ento retornar Fretornar V
fim-funo
Problema " CH em G?" NP
Intratabilidade de Problemas
Exemplo 2: Nmero Cromticofuno EhLimiteParaNC(G: grafo, K: Inteiro): Lgico
// retorno = V (G) Kincio
c ConsultaOrculo("k-colorao prpria de G")S para cada uv E(G) faa
se c(u) = c(v) ento retornar Fse c(u) S ento S S { c(u) }se c(v) S ento S S { c(v) }
fim-pararetornar (|S| K)
fim-funo
Problema "(G) K?" NP
Intratabilidade de Problemas
Exemplo 3: Isomorfismo de Grafosfuno SaoIsomorfos(G: grafo, H: Grafo): Lgico
//retorno = V G Hincio
f ConsultaOrculo("bijeo entre V(G) e V(H) que comprove G H")S para cada u, v V(G), u v faa
se f(u) = f(v) ento retornar Fse (uv E(G) E f(u)f(v) E(H)) OU (uv E(G) E f(u)f(v) E(H))
ento retornar Ffim-pararetornar (|V(G)| = |V(H)|)
fim-funo
Problema "G H?" NP
Intratabilidade de Problemas
Exemplo 4: Busca em Vetores
funo PossuiElemento(V(): Inteiro, N: Inteiro, x: Inteiro): Lgico// retorno = V x V(1..N)
incioi ConsultaOrculo("i tal que V(i) = x")retornar (V(i) = x)
fim-funo
Problema "x V(1..N) ?" NP (em particular, sabemos que o problema
"x V(1..N) ?" P)
Intratabilidade de Problemas
Voc deve investir num Orculo aprendiz ou deve resolver voc mesmo seus problemas?
(ou seja, h algum problema para o qual seja necessrio ao menos um Orculo aprendiz para resolv-lo eficientemente?)
Intratabilidade de Problemas
Bem... esta pergunta vale USD 1 milho, e foi eleita um dos 7 problemas mais importantes do milnio pelo Clay Mathematics Institute!(http://www.claymath.org)
Este o problema "P = NP?"
Intratabilidade de Problemas
A classe P consiste dos problemas de deciso que so solveis por um algoritmo eficiente(problemas polinomiais): nenhum Orculo necessrio!
A classe NP consiste dos problemas de deciso para os quais um certificado de soluo pode ser verificado por um algoritmo eficiente(problemas no-deterministicamente polinomiais): usam um Orculo que produz certificados verificveis eficientemente
Intratabilidade de Problemas
Intratabilidade de Problemas
NP P ou P = NP
Todo problema em P tambm est em NP (para um problema em P, pea um certificado qualquer, ignore-o, e resolva-o eficientemente). O inverso verdade?
?
Reduo de Problemas
Reduo de problemas a tcnica de se utilizar soluo de outros problemas para se resolver um dado problema especfico
Qualquer algoritmo que utiliza procedimentos/funes uma reduo do problema que o algoritmo resolve aos problemas resolvidos pelos procedimentos/funes utilizados
Intratabilidade de Problemas
Pela Tese de Church-Turing, esta a forma mais geral de reduo para funes computveis, chamada de Turing-reduo
Turing-reduo: Sejam P e Q problemas. Dizemos que P T Q se existir um algoritmo A que resolva P empregando chamadas a algoritmos que resolvam Q
Intratabilidade de Problemas
O sinal de T motivado pela consequncia de que portanto a dificuldade para se resolver P no mximo aquela de Q
Se P T Q e Q T P, ento dizemos que P T Q
Intratabilidade de Problemas
Exemplo: Problema da Multiplicao (MULT): Dado
dois nmeros racionais a, b, computar a x b Problema de Potncia 2 (POT2): Dado um
nmero racional a, computar a2
Como a2 = a x a, ento POT2 T MULT Como a x b = ((a + b)2 - a2 - b2)/2, ento
MULT T POT2 (Logo, MULT T POT2)
Intratabilidade de Problemas
Uma reduo entre problemas mais forte (e mais limitada) comumente usada entre problemas em suas verses de deciso a Karp-reduo
Karp-reduo: Sejam P e Q problemas de deciso. Dizemos que P K Q uma Karp-reduo se existir um algoritmo A que transforme uma entrada E de P em uma entrada E' de Q de forma que
A resposta de P com entrada E SIM A resposta de Q com entrada E' = SIM
Intratabilidade de Problemas
Exemplo: Problema da Multiplicao (MULT-D): Dado nmeros
racionais a, b, K, responder se a x b = K Problema de Potncia 2 (POT2-D): Dado nmeros
racionais a, K, responder se a2 = K
Como a2 = a x a, ento POT2-D(a, K) = SIM MULT-D(a, a, K) = SIM. Logo, existe uma Karp-reduo POT2-D K MULT-D
Note, no entanto, que no claro como construir uma Karp-reduo MULT-D K POT2-D
Intratabilidade de Problemas
Tais redues abordam o problema da computabilidade dos problemas. Com efeito, se P T Q, conclumos que se Q for computvel, ento P computvel
Intratabilidade de Problemas
E a eficincia da computao?
As redues so teis tambm para mostrar que se um problema for solvel eficientemente, ento outro tambm . Com efeito, se P T Q e o algoritmo que implementa T eficiente, conclumos que P eficientemente computvel
Note necessrio assumir apenas redues eficientes. Tais redues so chamadas de redues polinomiais
Intratabilidade de Problemas
Classe NP-Completo (Classe NPC) e
Classe NP-Difcil
Intratabilidade de Problemas Def.: Um problema D NP-Difcil se para todo
problema Q NP, existir reduo polinomial Q T D
Def.: Um problema D NPC (D NP-Completo) se: D NP D NP-Difcil
Dada a definio da classe NPC, no claro se esta classe possui algum elemento. Existem duas consequncias imediatas caso NPC :
Intratabilidade de Problemas
Consequncia 1: Se Q NPC e Q for resolvido eficientemente, ento todos os problemas em NP so resolvidos eficientemente (ou seja, P = NP!)
Consequncia 2: Se D NPC e Q NP um problema tal que existe reduo polinomial D KQ, ento Q NPC (ou seja, mostrar que outro problema pertence a NPC depois da prova que um inicial existe uma tarefa potencialmente mais simples)
Intratabilidade de Problemas Problema de Satisfabilidade (SAT):
Entrada: Um predicado lgico proposicional P(x1,...,xn)Problema: Existe uma interpretao de x1,...,xn tal que P(x1,...,xn) = V ?
Exemplo 1:P(a, b, c) = (a b c) ( a b c) ( a b c) satisfatvel, pois P(V, F, F) = V
Exemplo 2:Q(a, b, c) = (a b) ( a c) ( b c) ( b a) (b c) no satisfatvel
Intratabilidade de Problemas
Teorema (Cook, Levin):SAT NPC.
Intratabilidade de Problemas Exemplo 1:
Seja CLIQUE(G, K) o problema de decidir se existe uma clique em G de tamanho igual a K.
Seja INDEP(G, K) o problema de decidir se existe um conjunto independente em G de tamanho igual a K.
Sabendo-se que CLIQUE NPC, prove que INDEP NPC
Intratabilidade de Problemas Exemplo 1:
Seja G e K uma instncia de entrada para o problema CLIQUE.
Seja H = GC. Se G possui uma clique de tamanho K, ento H possui
um conjunto independente de tamanho K. Por outro lado, se H possui um conjunto independente de tamanho K, ento G possui uma clique de tamanho K. Logo, CLIQUE K INDEP.
Note que K uma reduo polinomial, pois computar o complemento de um grafo eficiente (O(n2)). Logo, INDEP NPC.
Intratabilidade de Problemas Exemplo 2:
Seja COBERTURA(G, K) o problema de decidir se existe existe uma cobertura de vrtices em G de tamanho igual a K.
Sabendo-se que CLIQUE NPC, prove que COBERTURA NPC
Intratabilidade de Problemas Exemplo 2:
Seja G e K uma instncia de entrada para o problema CLIQUE
Seja H = GC Queremos mostrar que CLIQUE(G, K) = SIM
COBERTURA(H, n - K) = SIM () Se CLIQUE(G, K) = SIM, tome uma clique C em G
tal que |C|=K. Note que para todo u, v C, uv E(H). Logo, V(H) - C uma cobertura em H. Portanto, COBERTURA(H, n - K) = SIM
Intratabilidade de Problemas Exemplo 2:
() Se COBERTURA(H, n - K) = SIM, seja C uma cobertura C em H tal que |C|=n-K. Note que para todo u, v (V(H) - C), uv E(H). Logo, V(H) - C um conjunto independente de H de tamanho K. Portanto, V(H) - C uma clique de G de tamanho K. Logo, CLIQUE K COBERTURA.
Note que K uma reduo polinomial, pois computar o complemento de um grafo e n - K so operaes eficientes. Logo, COBERTURA NPC.
Intratabilidade de Problemas Exemplo 3:
Seja CH(G) o problema de decidir se existe um ciclo hamiltoniano em G.
Seja TSP(G, c, K) o problema de decidir se existe um ciclo hamiltoniano de G com peso menor ou igual a K. O peso W(C) de um ciclo C dado por { c(uv) | uv C}
Sabendo que CH NPC, prove que TSP NPC
Intratabilidade de Problemas Exemplo 3:
Seja G uma instncia de entrada para o problema CH Seja c(e) = 1, para toda e E(G)
Queremos mostrar que CH(G) = SIM TSP(G, c, n) = SIM
() Se CH(G) = SIM, seja C o CH de G. Como toda aresta tem custo unitrio por construo de c, ento C um ciclo hamiltoniano de G com custo n, e portanto TSP(G, c, n) = SIM
Intratabilidade de Problemas Exemplo 3:
() Se TSP(G, c, n) = SIM, ento G possui um ciclo hamiltoniano. Logo, CH(G) = SIM. Logo, CH K TSP
Note que K uma reduo polinomial, pois computar a funo c leva tempo constante. Logo, TSP NPC.
Intratabilidade de Problemas Exemplos de outros problemas em NPC:
Caminho Mais Longo Dado um grafo G e um inteiro K, determinar se existe
um caminho em G de tamanho maior ou igual a K Caminho Mais Curto, no entanto, pertence a P
Ciclo Hamiltoniano Dado um grafo G, determinar se G hamiltoniano Ciclo Euleriano, no entanto, pertence a P
3-SAT SAT restrito a forma normal conjuntiva (FNC) com
exatas 3 variveis em cada clusula 2-SAT, no entanto, pertence a P
Intratabilidade de Problemas
NPP ou P = NP = NPC
Diagrama de Incluso entre as Classes
?
NP-Difcil
NP-DifcilNPC
1. Considere o problema de encontrar uma rota entre origem e destino num mapa levando-se em conta as distncias de cada possvel resposta. Enuncie este problema nas verses de deciso, busca e otimizao
2. Cada item abaixo descreve a complexidade de tempo e o tamanho |E| da entrada de um algoritmo A com entrada E. Classifique cada um como eficiente ou ineficiente:
Exerccios
Algoritmo Complexidade de Tempo |E| Eficiente?
(1) O(N3) (N3)
(2) O(N) (lg N)
(3) O(N2 M2) (N M1/2)
(4) O(N M) (N + M)
Exerccios3. Para cada problema abaixo, mostre que ele pertence a NP descrevendo o
certificado e o algoritmo que testa o certificado. Evidencie o tamanho da entrada e a complexidade do algoritmo:a. determinar se existe num vetor A de N inteiros um valor maior que um
dado inteiro Kb. determinar se existe um divisor maior que 1 comum a dois inteiros A e
Bc. determinar se existe um subconjunto de elementos de um vetor A de
N inteiros cuja soma totalize um dado inteiro Kd. determinar se um grafo eulerianoe. determinar se um grafo conexof. determinar se um nmero primo
g. determinar se existe digrafo D cujo grafo subjacente dado grafo G tal que se ab A(D) e bc A(D), ento ac A(D)
Exerccios4. Verdadeiro ou Falso? Justifique.
a. Os problemas em NPC so os problemas mais difceis computacionais de serem resolvidos que so conhecidos
b. Os problemas em P admitem algoritmos eficientes e, portanto, admitem solues sempre adequadas aos usurios na prtica
c. No se conhece nenhuma soluo eficiente na prtica para um problema em NPCd. A resoluo por um algoritmo eficiente de um problema em NP vale USD 1 milho,
problema este conhecido como "P=NP?"e. Qualquer algoritmo que resolva um problema em NPC executa num nmero de passos
exponencial em funo da entrada no pior caso, no caso de P NPf. Qualquer execuo de um algoritmo que resolva um problema em NPC executa num
nmero de passos exponencial em funo da entrada, no caso de P NPg. Problemas que esto em NP-Difcil so ainda mais difceis que aqueles em NPC
Exerccios5. Faa um algoritmo de busca que responda se um nmero w dado como
entrada composto, i.e., mostre nmeros x, y > 1 tais que x y = w ou declare que tais nmeros no existem. Qual a complexidade do seu algoritmo em funo do tamanho da entrada? Este algoritmo eficiente?