intratabilidade de problemas

57
 Minicurso em Eficiência de Algoritmos Intratabilidade de Problemas versão 2.2 Prof. D.Sc. Fabiano Oliveira [email protected] 

Upload: guillermo-dario-pasqualetti

Post on 09-Oct-2015

52 views

Category:

Documents


0 download

DESCRIPTION

Intratabilidade de Problemas

TRANSCRIPT

  • 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?