A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

A Classe de Problemas NP

Apresentações semelhantes


Apresentação em tema: "A Classe de Problemas NP"— Transcrição da apresentação:

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, (biblioteca da FEUP) Richard Karp. NP-Complete Problems. Tutorial em video, (biblioteca da FEUP) David Harel. Algorithmics- The Spirit of Computing. Addison-Wesley 1987.

2 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 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; - 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 • INDECIDÍVEL "esta frase é falsa" é V ou F? — problema da auto-referência

3 Fácil e difícil Não tem caminho de Euler Não tem ciclo Hamiltoniano
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 5 2 3 4 Ciclo Hamiltoniano ( ciclo simples que passe em todos os vértices ) Caminho mais longo a partir de um vértice ALGORITMO EXPONENCIAL 9 8 Não tem caminho de Euler Não tem ciclo Hamiltoniano

4 Fácil e difícil Uso do ponto opcional:
Á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 2^n 32 1024 Uso do ponto opcional: menor distância na ligação dos 3 pontos

5 Problemas de Pesquisa Combinatória
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

6 Tratabilidade 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) P: conjunto de problemas de decisão solúveis em tempo polinomial

7 Tratabilidade 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

8 Problemas de Decisão Problemas de Optimização Problemas de Decisã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

9 Problemas em P Um problema L é de 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) Se L é redutível a M, e M está em P, então L está em P também x F F(x) M

10 Problema da satisfação Booleana
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 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.

11 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

12 Classe NP Classe NP 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)

13 Problemas NP-completos
Um problema é NP-completo se qualquer problema em NP puder ser reduzido àquele em tempo polinomial 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.

14 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

15 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- 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: 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 Referência em “The New Turing Omnibus” Dewdney, Cap. 54

16 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 w11 w12 w41 w32 w21 w22 w31 w13 w33

17 Solução de SAT é solução de VC
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 coberturaV : cada variável com valor V: Ui está em V cada variável com valor F: Vi está em V cada cláusula: 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 Referência em “The New Turing Omnibus” Dewdney, Cap. 54

18 Solução de VC é solução de SAT
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 Referência em “The New Turing Omnibus” Dewdney, Cap. 54

19 P=NP ? 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. Decidível P NP

20 Conclusão 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) 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, (biblioteca da FEUP) David Harel. Algorithmics- The Spirit of Computing. Addison-Wesley 1987.


Carregar ppt "A Classe de Problemas NP"

Apresentações semelhantes


Anúncios Google