1 / 22

A Classe de Problemas NP

A Classe de Problemas NP. Referências: M. R. Garey and D. S. Johnson. Computers and Intractability: a Guide to the Theory of NP Completeness. Freeman, 1979. (biblioteca da FEUP) Richard Karp. NP-Complete Problems. Tutorial em video, 1993. (biblioteca da FEUP)

jamar
Download Presentation

A Classe de Problemas NP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. A Classe de Problemas NP • Referências: • M. R. Garey and D. S. Johnson. Computers and Intractability: a Guide to the Theory of NP Completeness. Freeman, 1979. (biblioteca da FEUP) • Richard Karp. NP-Complete Problems. Tutorial em video, 1993. (biblioteca da FEUP) • David Harel. Algorithmics- The Spirit of Computing. Addison-Wesley 1987.

  2. S4 é INDECIDÍVEL — problema está na auto-referência Fácil e difícil • situação "normal": tempo de execução linear no tamanho da entrada • - a maior parte dos algoritmos vistos (excepto o do fluxo numa rede que é polinomial) • os casos em que se obtém melhor que linear envolvem pré-processamento ou são problemas aritméticos • Mas há situações "estranhas", mesmo na Lógica: • S1: esta frase tem mais do que 10 caracteres – V • S2: esta frase está escrita em Inglês – F • S3: esta frase é verdadeira – V • S4: esta frase é falsa – F , V ?

  3. Problema da terminação Algoritmo A while( X != 1 ){ X= X-2 } Stop Termina para entradas X ímpar; não termina para entradas X par Algoritmo B while( X != 1 ){ if( X é par ){ X= X/2 } else { X= 3*X+1 } } Stop Entrada 7 dá sequência 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 e termina Todas as entradas em que foi testado conduziram a sequências que terminaram, por vezes após crescerem muito e flutuarem de forma imprevisível. Mas não se conseguiu provar que terminam sempre (problema da Teoria dos Números). Parar quando? Fácil e difícil

  4. Problema da terminação — é possível construir um programa capaz de detectar ciclos infinitos? (útil para compiladores...) • programa LOOP(P), com parâmetro programa P, corre P sobre ele próprio, isto é, executa P(P); - responde SIM se P entrar em ciclo; entra em ciclo se P terminar • aplicando LOOP a si próprio: P=LOOP - se P(P) termina então LOOP(P) tem que entrar em ciclo; mas assim LOOP(LOOP) tem que entrar em ciclo e terminar ao mesmo tempo - se P(P) entra em ciclo, então LOOP(P) termina: contradição - programa LOOP não se pode construir P LOOP LOOP LOOP P(P) S N LOOP(LOOP) S N Termina? Termina? Contradição! SIM SIM Fácil e difícil

  5. Fácil e difícil Circuito de Euler (caminho que toca todas as arestas 1e 1 só vez) Caminho mais curto a partir de um vértice ALGORITMO LINEAR 6 10 7 1 2 5 3 4 Ciclo Hamiltoniano (ciclo simples que passe em todos os vértices) Caminho mais longo a partir de um vértice ALGORITMO EXPONENCIAL 8 9 • Não tem caminho de Euler • Não tem ciclo Hamiltoniano

  6. Fácil e difícil • Árvore de Steiner • - Qualquer par de pontos pode ser ligado por um segmento • - Problema: encontrar o mínimo da soma dos segmentos que ligam todos os pontos obrigatórios (pontos opcionais podem ser usados também) • DIFÍCIL: ALGORITMO EXPONENCIAL Mesma árvore sem pontos opcionais FÁCIL: ALGORITMO LINEAR n 5 10 20 30 n^3 125 1 000 8 000 27 000 2^n 32 1024 1 048 576 1 073 741 824 Uso do ponto opcional: menor distância na ligação dos 3 pontos

  7. De uma estrutura vasta de soluções possíveis, escolher uma que satisfaça determinadas restrições Variantes Problemas de decisão Problemas de optimização Exemplos Escalonamento: de operações de manufactura, de voos, de aulas Encaminhamento: veículos, chamadas telefónicas, bits, petróleo, gás Planeamento: de equipamentos numa cidade, de componentes numa placa de VLSI Biologia Computacional Criptografia Problemas de Pesquisa Combinatória

  8. Definição informal (J. Edmonds, 1965) Um problema é tratável se pode ser resolvido num número de passos limitado por uma função polinomial no tamanho da entrada Requer formalização de Problema reduz-se a problema de decisão procurar valor mínimo de função  provar que existe valor < k Entrada codifica-se em cadeia de 0’s e 1’s, tamanho é nº de bits Resolver problema aceitar ou rejeitar uma entrada (decisão) Número de passos usa-se modelo de computação universal (máquina de Turing) Tratabilidade P: conjunto de problemas de decisão solúveis em tempo polinomial

  9. Porquê “tratável” para problemas polinomiais? (N100) não parece muito tratável... Problemas polinomiais típicos: ordem baixa Paralelização pode ser usada para aumentar poder de cálculo pode compensar a ordem de crescimento Polinómios têm boas características de fecho fechados sob operações de adição, multiplicação, composição Ex: saída de algoritmo polinomial é entrada de outro algoritmo polinomial : algoritmo resultante é polinomial Tratabilidade

  10. Problemas de Optimização têm objectivos muito diversos é difícil uniformizar problemas e soluções Problemas de Decisão Soluções são respostas Sim/Não Exemplo: Problema do caminho mais curto Optimização: encontrar o caminho mais curto Decisão: Sim/Não existe um caminho de comprimento <k Como comparar soluções Problema de optimização fácil - problema de decisão fácil Problema de decisão difícil- problema de optimização difícil Problemas de Decisão

  11. Um problema L é da classe P se existe um algoritmo A tal que A aceita todas as entradas de L A rejeita todas as entradas que não são de L Há um polinómio f tal que, para qualquer entrada x, A termina antes de f(|x|) passos Redução em tempo polinomial Um problema de decisão L é redutível a um problema de decisão M se existe uma função polinomial computável F de strings em strings tal que x é aceite por L se e só se F(x) é aceite por M Nestas condições, diz-se que M é pelo menos tão geral como L (pelo menos tão difícil como L) Problemas em P Se L é redutível a M, e M está em P, então L está em P também x F(x) M F

  12. Variáveis proposicionais: A, B, C, … Literais: A, ~A, B, ~B, … Cláusulas: A  ~B  ~D  ~F Forma Normal Conjuntiva (CNF): conjunção de cláusulas (A  ~B  ~D  ~F)  (C  B  ~D)  (~A  F  D)  ... Fórmula CNF é satisfazível se existe uma atribuição de valores lógicos às variáveis que torna a fórmula verdadeira Problema da satisfação Booleana • Exemplo: • (A  ~B  ~D  ~F)  (C  B  ~D)  (~A  F  D) • atribuindo o valor V às variáveis A, B, F • e o valor F às variáveis C, D a fórmula é verdadeira.

  13. Problema dos vértices com 3 cores Colorir os nós de um grafo de forma a que nenhum par de nós adjacentes fique com a mesma cor Redução de 3 cores a satisfação Booleana: Variáveis para cada vértice: Ri Gi Bi Cláusulas Para cada vértice: Ri Gi Bi ~Ri ~Gi ~Ri ~Bi ~Gi ~Bi Para cada aresta: ~Ri ~Rj ~Bi ~Bj ~Gi ~Gj Satisfação Booleana é pelo menos tão geral (tão difícil) como 3 cores

  14. Classe NP (algoritmo não determinístico de verificação polinomial) classe de problemas de decisão que podem ser verificados em tempo polinomial (intuição: solução pode ser difícil de encontrar, mas é fácil verificar que satisfaz o problema) máquina não determinística tem uma escolha de passos seguintes e faz sempre a escolha óptima (adivinha!) — característica poderosa mas limitada: não serve para resolver problemas indecidíveis descoberta uma solução, a sua verificação é polinomial Ex: dado um ciclo Hamiltoniano é fácil confirmar Formalmente (R. Karp): Um problema de decisão L está em NP se e só se existe um algoritmo de decisão polinomial A tal que x está em L se e só se existe uma testemunha y, de tamanho limitado por um polinómio no comprimento de x, tal que A aceita o par (x, y) Classe NP

  15. São os mais difíceis da classe; podem ser usados como subrotinas para a solução dos outros (reduz-se problema P1 a problema P2 que é NP-completo, resolve-se este e reconverte-se a solução) Se se descobrir uma solução polinomial para um deles, fica descoberta para todos, pois a conversão é polinomial Suponhamos P1 NP-completo e P2 em NP; além disso existe uma redução polinomial de P1 a P2; como qualquer problema em NP se reduz polinomialmente a P1, também se reduz a P2; então P2 é NP-completo Teorema de Cook (1971): Satisfação Booleana é NP-completo Prova: problemas de NP podem ser resolvidos em tempo polinomial por uma máquina não determinística; funcionamento desta pode ser descrito por uma expressão Booleana; obter resposta para um problema reduz-se a satisfazer a expressão. Problemas NP-completos Um problema é NP-completo se qualquer problema em NP puder ser reduzido àquele em tempo polinomial

  16. Ciclo Hamiltoniano  Caixeiro Viajante • Problema do caixeiro-viajante: Dado um grafo completo com custos nas arestas e um inteiro K existe um ciclo simples que visite todos os vértices e tenha um custo total  K? - aplicação: posicionamento de um furador de circuitos impressos para encaixar componentes (deslocar é que demora, não é furar) • Assumindo que o problema do ciclo Hamiltoniano é já sabido ser NP-completo • reduz-se ciclo Hamiltoniano ao do caixeiro viajante: • um grafo G é convertido num grafo completo G' com os mesmos vértices • aresta de G’ tem peso 1 se pertencer a G e 2 caso contrário • K igual ao número de vértices • G tem um ciclo Hamiltoniano sse G' tiver um percurso de caixeiro viajante de custo total K

  17. Satisfação Booleana  Cobertura de Vértices • Problema da cobertura de vértices (VC): Dado um grafo, decidir se as suas arestas podem ser cobertas por um número K de vértices; cada aresta tem de ser incidente com pelo menos 1 dos K vértices • Solução sobre um grafo G: subconjunto dos vértices - cada aresta de G tem um dos vértices em  - tem K ou menos elementos • Problema é NP – a decisão sobre uma solução é feita em tempo polinomial • Para mostrar que VC é NP-completo: reduz-se SAT a VC Variáveis de SAT: X1, X2, ...Xn Cada variável Xi: 2 vértices ui e vi e uma aresta (ui, vi) Cada cláusula Ci= L1  L2  L3  ... Lm: 1 grafo completo com m vértices wi1, ...wim Ligação entre vértices: Se Lj = Xk ligar wij a uk Se Lj = ~Xk ligar wij a vk Inteiro K do problema VC: nº variáveis + nº ocorrências de literais - nº de cláusulas em SAT

  18. Satisfação Booleana  Cobertura de Vértices • Exemplo de expressão de SAT (X1  X2  ~X3)  (~ X1  X3)  (X1  ~ X2  X3)  (X2) U1 V1 U2 V2 U3 V3 w12 w11 w41 w32 w31 w22 w21 w13 w33

  19. S tem resposta SIM em SAT existe atribuição de valores lógicos a variáveis que satisfaz as cláusulas No problema VC correspondente, fazer uma cobertura V : cada variável com valor V: Ui está em V cada variável com valor F: Vi está em V cada cláusula: pelo menos 1 literal é V, logo o nó w correspondente é adjacente a um vértice de V todos os outros vértices w: vão para V Cobertura V tem número de vértices não superior a K V tem exactamente K vértices Então V tem uma resposta SIM em VC Solução de SAT é solução de VC

  20. Problema V tem resposta SIM em VC grafo construído de acordo com a transformação dada tem cobertura com não mais de K vértices cada subgrafo (Ui, Vi) precisa de 1 vértice na cobertura cada subgrafo completo wi1, wi2, ..., win tem no máximo 1 vértice que não está na cobertura (se retirarmos mais do que 1, alguma aresta fica descoberta) Instância correspondente de SAT (S) Para cada Ui em V , fazer Xi = V Para cada Vi em V , fazer Xi = F Cada subgrafo completo tem um vértice wi que não está em V . por construção do grafo, o vértice wi é adjacente a um de Ui ou Vi, seja W como V é cobertura, W tem de estar em V ou wi não estaria coberto Então S, o problema SAT original, também tem resposta SIM cada cláusula tem 1 literal com valor V Solução de VC é solução de SAT

  21. Mais importante problema em aberto na Ciência da Computação Se L é NP-completo: L está em P se e só se P = NP Não se conseguiu ainda encontrar nenhum problema NP que se prove não ter solução polinomial - é muito difícil provar limites inferiores exponenciais portanto o não-determinismo pode não ser um avanço importante! Nem todos os problemas decidíveis estão em NP determinar se um grafo não possui ciclos Hamiltonianos — enumerar todos os ciclos? Não se sabe se está em NP. NP P P=NP ? Decidível ?

  22. Problema NP-completo: não devemos esperar encontrar algoritmo eficiente para resolvê-lo em todos os casos Alternativa: Procurar algoritmos que lidem com a maior parte das instâncias do problema Em problemas de optimização: aceitar soluções aproximadas (subóptimas) Conclusão • Referências: • M. R. Garey and D. S. Johnson. Computers and Intractability: a Guide to the Theory of NP Completeness. Freeman, 1979. • Richard Karp. NP-Complete Problems. Tutorial em video, 1993. (biblioteca da FEUP) • David Harel. Algorithmics- The Spirit of Computing. Addison-Wesley 1987.

More Related