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

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

NP-Completude Algoritmos e Estruturas de Dados – IF672

Apresentações semelhantes


Apresentação em tema: "NP-Completude Algoritmos e Estruturas de Dados – IF672"— Transcrição da apresentação:

1 NP-Completude Algoritmos e Estruturas de Dados – IF672
Átila Valgueiro Malta Moreira Juliana Medeiros de Lucena Rafael Alberto Gomes Pereira Lima Rafael Loureiro de Carvalho Sara Carvalho da Rocha Brito Tiago Carneiro Pessoa Canto Victor Barbosa de Oliveira Medeiros Vinícius Monteiro de Lira

2 Conceito de instância É um conjunto de dados de um determinado problema computacional. Ex.: No problema da equação do segundo grau (ax2 + bx + c), a escolha dos coeficientes a, b, c define sua instância. Os números 3, 6, 4, 5 podem ser uma instância do problema de ordenação.

3 Tipos de Problemas Podemos classificar os diversos problemas em classes a partir de um critério de classificação: quanto ao retorno: refere-se ao tipo de resposta dada pelo problema, se corresponde a uma solução do problema, por exemplo. quanto à solubilidade: se o problema possui solução ou não.

4 Classificação quanto ao retorno
retorna uma ou mais soluções de uma instância do problema: otimização corretude completude decisão: a partir de uma dada entrada, decidir se é solução ou não de uma instância de um problema.

5 Classificação quanto à solubilidade
indecidível: problemas que não possuem solução computacional; decidível: problemas que possuem solução computacional: complexidade de tempo polinomiais ou tratáveis exponenciais ou intratáveis np-completos complexidade de espaço

6 Problemas que retornam uma ou mais soluções
Dada uma instância de um problema, podemos achar um valor que a satisfaça: Ex.: dada a instância, encontrar uma valoração que satisfaça uma expressão lógica, se houver. Encontrar um caminho de comprimento máximo num grafo. Encontrar a raiz de uma equação de segundo grau. Neste tipo de problema, nem sempre existe solução.

7 Problemas corretos Problemas corretos são aqueles cujas respostas são soluções válidas de uma determinada instância. Ex.: No problema da equação de segundo grau, dada a instância x2 - 5x + 6, o algoritmo retorna o valor 2, que é uma das soluções. No problema do grafo, o algoritmo retorna um caminho entre dois vértices válido. No problema da satisfatibilidade, dada a instância (A ^ ¬B) v C encontra-se as valorações (A=1,B=0,C=0) e (A=1,B=1,C=1) que a tornam satisfatível. Muitas vezes não estamos interessados em apenas algumas soluções, mas em todas.

8 Problemas completos Problemas completos são aqueles que retornam todas as soluções válidas de uma determinada instância como resposta. Ex.: No problema da equação de segundo grau, dada a instância x2 - 5x + 6, o algoritmo retorna os valores 2, 3 e 4. No problema do grafo, o algoritmo retorna todos os caminhos válidos entre dois vértices. No problema da satisfatibilidade, encontra-se todas as valorações válidas de uma proposição. Alguns problemas podem surgir, como soluções infinitas, ou até mesmo soluções incorretas.

9 Problemas de otimização
Devido a certos problemas nos algoritmos corretos e completos, busca-se algoritmos que sejam ambos. Mas, às vezes não estamos interessados em qualquer solução, mas aquela que seja a melhor, a ótima. Ex.:Encontrar o mínimo valor de uma função num gráfico. No problema do grafo, o algoritmo retorna o melhor caminho válido entre dois vértices, ou seja, o menor caminho ou o de custo mínimo. Problemas de otimização são muitas vezes muito custosos, além de ter certos problemas como achar apenas o ótimo local, ao invés do global.

10 Problemas de decisão A partir de uma instância, verificar se ela pertence ao problema ou não, neste caso a solução só admite dois valores: sim e não. Ex.: Decidir se, dado um conjunto, é possível combinando eles, obter o número k. Decidir se uma determinada instância do problema de segundo grau possui raízes primas entre si. A esse tipo de problema, dá-se o nome de problema de decisão, e sempre existe solução. Um problema de decisão que pode ser resolvido por algum algoritmo é chamado de problema de decisão decidível.

11 Problemas Polinomiais
Um algoritmo é dito polinomial se seu tempo de execução é limitado por uma função polinomial. Ou seja, para a instância de pior caso, ele é executado em tempo polinomial. Um problema é dito polinomial se possui pelo menos um algoritmo polinomial. Também conhecido como problema fácil ou tratável. Um problema é não-polinomial se ainda não possui um algoritmo polinomial que o resolva.

12 Classe P A classe P é composta por todos os problemas polinomiais. Ex.: Problema da ordenação (algoritmos mergesort, quicksort e heapsort); Busca em grafos O desafio é inserir vários problemas na classe P (ideal), achando-se um algoritmo polinomial!

13 Problemas Exponenciais
No entanto, há problemas que comprovadamente não possuem algoritmos polinomiais. A estes problemas, denominamos exponenciais. Também conhecidos como problema difícil ou intratável. Estes problemas são resolvidos por algoritmos exponenciais.

14 Redução entre problemas
Um problema A é redutível a outro B se: existir uma função f que transforme uma instância IA de A em uma de B, IB; existir uma função g que transforme a solução SB de B em uma de SA de A. Dessa forma, podemos resolver A através de um algoritmo conhecido de B.

15 Redução polinomial Um problema A é redutível de maneira polinomial a outro B se a transformação for polinomial, ou seja, as funções f e g forem polinomiais.

16 Redução polinomial Assim, podemos achar um algoritmo para A através de um já conhecido de B. πA = f ◦ π B ◦ g Dessa forma, a complexidade de πA será o custo de πB e das funções f e g. Assumindo f e g polinomiais: Se B é problema polinomial então A também será. Se A é problema exponencial então B também será.

17 Propriedades transitividade: se um problema A é redutível a B e B é redutível a C, então A é redutível a C. πA = f’ ◦ π B ◦ g’ πB = f’’ ◦ π C ◦ g’’ πA = f’ ◦ f’’ ◦ π C ◦ g’ ◦ g’’ polinomialmente equivalente: se dois problemas forem redutíveis polinomialmente entre si, eles são polinomialmente equivalente.

18 Noção de difícil Forma de classificar os problemas relacionando-os.
Um problema é mais difícil que outro se ele possui uma complexidade computacional (complexidade de tempo) maior. Assim, um problema exponencial é mais difícil que um polinomial.

19 Noção de difícil Um problema A não é mais difícil que outro B se A for um caso particular de B. Ex.: O problema de resolver uma equação do segundo grau não é mais difícil que o problema de resolver uma equação do terceiro grau. A existência de uma redução polinomial de A para B indica que B é tão ou mais difícil que A. A é tão difícil quanto B se forem polinomialmente equivalentes.

20 Decisão x Otimização É possível formular um problema de otimização como um de decisão relacionado. O problema de otimização é mais difícil (computacionalmente) que seu problema de decisão relacionado. Ex.: Achar o menor caminho entre dois vértices é mais difícil que verificar se um caminho entre esses vértices possui tamanho k. Dessa maneira, se um problema de decisão é difícil, então, seu problema de otimização também o é.

21 Classe NP Dada uma suposta solução de uma instância de um problema, podemos verificar se ela é válida ou não. Se essa verificação ocorrer em tempo polinomial, então esse problema estará em NP. A classe NP (não-deterministicamente polinomial) é um conjunto que possui todos os problemas com tais características, verificáveis polinomialmente.

22 Exemplos de problemas NP
Dados os inteiros a, b e c (instância) e uma suposta solução x da correspondente equação do segundo grau, é fácil verificar se x é de fato uma solução: basta verificar se x é inteiro e comparar o valor da expressão ax2 + bx + c com 0.  Portanto, o problema da equação de segundo grau está em NP. Dado um número natural n (instância) e dois outros números naturais p e q, é fácil verificar se é verdade que n = p·q.  Portanto, o problema do número composto está em NP.

23 Classe NP Para nos ajudar a classificar os problemas em NP, usaremos uma abstração, o algoritmo não-determinístico, com tais objetivos: queremos avaliar apenas o custo de se avaliar uma possível solução; tal solução será retornada pelo comando Escolha; assemelha-se a um algoritmo de decisão, retorna sim (caso exista solução) e não (caso contrário).

24 Comando Escolha Devido aos objetivos do algoritmo não-determinístico, o comando Escolha possui as seguintes características: custo constante (igual a um); sempre retorna um valor, uma solução possível se houver, caso contrário, retornará uma solução inválida; devido a suas características, é não-implementável, o que faz com que todo o algoritmo seja não-implementável.

25 Classe NP Ex.: problema da equação de segundo grau:
Portanto, se um problema possuir algoritmo não-determinístico polinomial, ele será NP! Ex.: problema da equação de segundo grau: Resolver(a, b, c){ //instância no parâmetro solucao = escolha(a, b, c); //construção //verificação: resposta = a*(solucao.x’)2 + b*(solucao.x’) + c; se resposta == 0 então retorna sim; senão retorna não; } //custo constante, logo é um problema NP!

26 P = NP? Classe P: problemas que possuem algoritmo determinístico polinomial. Classe NP: problemas que possuem algoritmo não-determinístico polinomial ou verificáveis em tempo polinomial. Problemas em P também são verificáveis de maneira polinomial, portanto P está contido em NP. P ⊆ N P , então, se N P ⊆ P , a proposição é verdadeira.

27 P = NP? Se todos os problemas de NP forem polinomiais, ou seja, estiverem em P; a proposição é verdadeira. Se algum dos problemas de NP não for polinomial, ou seja, não estiver em P; a proposição é falsa.

28 Classe NP-difícil Se todos os problemas NP não são mais difíceis que um problema A (A é no mínimo tão difícil quanto tais problemas), ou seja, NP NP-difícil se todos os problemas NP forem polinomialmente redutíveis a A, então A é NP-difícil.

29 Considerações do NP-difícil
P não está contido em NP-difícil: como não foi provado P = NP, há problemas NP que não são polinomiais, e portanto não são redutíveis polinomialmente a P. Portanto, P não pode ser NP-difícil. NP possui interseção com NP-difícil: os problemas NP que não estão em P podem ser NP-difícil (exemplos: SAT, problema da mochila valiosa). Pela transitividade, se um problema A NP-difícil se reduz polinomialmente a B, então B também será NP-difícil.

30 Classe NP-Completo Os problemas que são NP e são NP-difícil são NP-completo. NP NP-difícil P NP-completo

31 Classe NP-Completo P ≠ NP P = NP
Dilema da teoria da computação: P = NP ? P ≠ NP P = NP NP-difícil NP P Ø NP NP-difícil P Ø Ø NP-completo NP-completo

32 Motivação NP-Completo
Se um algoritmo de complexidade polinomial puder ser encontrado para qualquer um dos problemas NP-completos, então todos os problemas NP-completos serão na verdade problemas P. Por outro lado, se for provado que um deles requer um algoritmo de solução que apresente complexidade exponencial, então todos irão requerer complexidade exponencial. Assim, a questão P = NP passa a ser simplificada se provar que apenas um problema NP-completo é P ou exponencial.

33 Classe NP-Completo O SAT foi o primeiro problema a ser classificado como NP-completo por Cook. Se um problema NP-completo, ou simplesmente NP-difícil, for redutível a um NP, então o NP também será NP-difícil, e conseqüentemente NP-completo. NP-Completo são os mais difíceis da classe NP. Ex.: problema do ciclo longo, problema do caminho longo, problema da clique grande, problema da cobertura pequena, problema do ciclo hamiltoniano.

34 Tratamento NP-Completo
Os problemas NP-completo são também conhecidos como intratáveis, por não possuírem algoritmos polinomiais eficientes. No entanto, algumas técnicas satisfazem aos problemas NP-completo: exponencial: precisa, mas intratável; probabilística: não totalmente precisa, mas com pequena margem de erros, mais rápida; aproximação, entre outros.

35 Técnicas Como resolver problemas NP-Completos? Programação Dinâmica
Backtracking Branch and Bound Heurísticas Algoritmos de Aproximação Algoritmos Randômicos

36 Programação Dinâmica A solução ótima é computada a partir da solução ótima de outros subproblemas que sobrepostos compõem o problema original Resolve cada subproblema uma vez só e então grava a sua resposta em uma tabela, evitando assim o trabalho de recalcular a resposta toda vez que o subproblema é encontrado Um problema NP-Completo resolvido por Programação Dinâmica é o problema da mochila (Knapsack), cujo objetivo é preencher a mochila com o maior valor possível, não ultrapassando o peso máximo (capacidade da mochila)

37 Backtracking Tipo de algoritmo que representa um refinamento da busca por força bruta, em que múltiplas soluções podem ser eliminadas sem serem explicitamente examinadas Versões melhoradas do processo de busca exaustiva que consiste em avaliar todos os possíveis candidatos para obter uma solução Busca em profundidade Os candidatos a solução são construídos passo a passo e, a cada passo, o candidato é avaliado

38 Backtracking Se num determinado instante esta avaliação permite concluir que aquele candidato não pode levar a uma solução então aquela seqüência de geração é interrompida e o processo retrocede ao passo anterior e uma nova seqüência de geração é tentada Quando essa busca falha, entra em funcionamento o mecanismo de backtracking, onde se faz com que o sistema retorne pelo mesmo caminho percorrido com a finalidade de encontrar soluções alternativas

39 Branch and Bound Variação do Backtracking Busca em largura
Necessidade de uma função objetivo limitante (função de poda) usada no processo de interrupção da seqüência da geração dos candidatos a solução O próximo nó a ser expandido é determinado pela função objetivo Mais detalhes em Tópicos Avançados em Algoritmos

40 Heurísticas Algoritmos que visam encontrar uma solução não necessariamente ótima, mas sim boa o suficiente para um dado problema Os algoritmos heurísticos visam obter uma resposta aceitável em um tempo menor Esta resposta nem sempre é a ótima, porém o ganho de tempo de CPU normalmente compensa esta diferença de “apenas alguns pontos percentuais na média” Mais detalhes em Tópicos Avançados em Algoritmos

41 Algoritmos de Aproximação
Um algoritmo que rapidamente encontra uma solução não necessariamente ótima, contudo dentro de um certo intervalo de erro Em alguns casos, encontrar uma boa aproximação é o suficiente para resolver o problema, porém nem todos os problemas NP-completos tem bons algoritmos de aproximação Mais detalhes em Tópicos Avançados em Algoritmos

42 Exemplo Knapsack com Backtracking Capacidade da Mochila = 5 kg Itens
Item 1 Peso 2 kg Frete R$ 1,00 Item 2 Peso 4 kg Frete R$ 2,00 Item 3 Peso 1 kg Frete R$ 3,00

43 Exemplo Cada estado é representado por um tupla (a, b, c)
a é o peso da mochila no momento b é o frete da mochila no momento c é o frete dos itens ainda não analisados A busca retrocede em duas situações: Se um elemento for escolhido para bolsa e a capacidade da bolsa for ultrapassada Se um elemento não for escolhido para bolsa e o frete que ainda pode ser obtido não ser capaz de ultrapassar o frete máximo obtido até o momento

44 Exemplo 2 4 1 3 Peso Frete Itens Capacidade da Mochila 5 kg 000 100
Inclui Item 1 (2,1) Não inclui Item 1 (2,1) 100 000 Inclui Item 2 (4,2) Não inclui Item 2 (4,2) Inclui Item 2 (4,2) Não inclui Item 2 (4,2) 110 100 010 000 Inclui Item 3 (1,3) Inclui Item 3 (1,3) Inclui Item 3 (1,3) Inclui Item 3 (1,3) Não inclui Item 3 (1,3) Não inclui Item 3 (1,3) Não inclui Item 3 (1,3) Não inclui Item 3 (1,3) 111 110 101 100 011 010 001 000

45 Exemplo 2 4 1 3 Peso Frete Itens 0 0 6 Capacidade da Mochila 5 kg
Inclui Item 1 (2,1) Capacidade da Mochila 5 kg Frete Máximo 1 2 1 5

46 6 kg > Capacidade da Mochila
Exemplo 2 4 1 3 Peso Frete Itens 0 0 6 Inclui Item 1 (2,1) Capacidade da Mochila 5 kg Frete Máximo 1 2 1 5 Inclui Item 2 (4,2) 6 kg > Capacidade da Mochila Bound -> Back

47 6 kg > Capacidade da Mochila
Exemplo 2 4 1 3 Peso Frete Itens 0 0 6 Inclui Item 1 (2,1) Capacidade da Mochila 5 kg Frete Máximo 1 2 1 5 Inclui Item 2 (4,2) Não inclui Item 2 (4,2) 2 1 3 6 kg > Capacidade da Mochila Bound -> Back

48 6 kg > Capacidade da Mochila
Exemplo 2 4 1 3 Peso Frete Itens 0 0 6 Inclui Item 1 (2,1) Capacidade da Mochila 5 kg Frete Máximo 4 2 1 5 Inclui Item 2 (4,2) Não inclui Item 2 (4,2) 2 1 3 6 kg > Capacidade da Mochila Bound -> Back Inclui Item 3 (1,3) 3 4 0

49 6 kg > Capacidade da Mochila
Exemplo 2 4 1 3 Peso Frete Itens 0 0 6 Inclui Item 1 (2,1) Capacidade da Mochila 5 kg Frete Máximo 4 2 1 5 Inclui Item 2 (4,2) Não inclui Item 2 (4,2) 2 1 3 6 kg > Capacidade da Mochila Bound -> Back Inclui Item 3 (1,3) 3 4 0

50 6 kg > Capacidade da Mochila
Exemplo 2 4 1 3 Peso Frete Itens 0 0 6 Inclui Item 1 (2,1) Capacidade da Mochila 5 kg Frete Máximo 4 2 1 5 Inclui Item 2 (4,2) Não inclui Item 2 (4,2) 2 1 3 6 kg > Capacidade da Mochila Bound -> Back Inclui Item 3 (1,3) Não inclui Item 3 (1,3) 3 4 0 1 < Frete Máximo Bound -> Back

51 6 kg > Capacidade da Mochila
Exemplo 2 4 1 3 Peso Frete Itens 0 0 6 Inclui Item 1 (2,1) Capacidade da Mochila 5 kg Frete Máximo 4 2 1 5 Inclui Item 2 (4,2) Não inclui Item 2 (4,2) 2 1 3 6 kg > Capacidade da Mochila Bound -> Back Inclui Item 3 (1,3) Não inclui Item 3 (1,3) 3 4 0 1 < Frete Máximo Bound -> Back

52 6 kg > Capacidade da Mochila
Exemplo 2 4 1 3 Peso Frete Itens 0 0 6 Inclui Item 1 (2,1) Não inclui Item 1 (2,1) Capacidade da Mochila 5 kg Frete Máximo 4 2 1 5 0 0 5 Inclui Item 2 (4,2) Não inclui Item 2 (4,2) 2 1 3 6 kg > Capacidade da Mochila Bound -> Back Inclui Item 3 (1,3) Não inclui Item 3 (1,3) 3 4 0 1 < Frete Máximo Bound -> Back

53 6 kg > Capacidade da Mochila
Exemplo 2 4 1 3 Peso Frete Itens 0 0 6 Inclui Item 1 (2,1) Não inclui Item 1 (2,1) Capacidade da Mochila 5 kg Frete Máximo 4 2 1 5 0 0 5 Inclui Item 2 (4,2) Não inclui Item 2 (4,2) Inclui Item 2 (4,2) 2 1 3 4 2 3 6 kg > Capacidade da Mochila Bound -> Back Inclui Item 3 (1,3) Não inclui Item 3 (1,3) 3 4 0 1 < Frete Máximo Bound -> Back

54 6 kg > Capacidade da Mochila
Exemplo 2 4 1 3 Peso Frete Itens 0 0 6 Inclui Item 1 (2,1) Não inclui Item 1 (2,1) Capacidade da Mochila 5 kg Frete Máximo 5 2 1 5 0 0 5 Inclui Item 2 (4,2) Não inclui Item 2 (4,2) Inclui Item 2 (4,2) 2 1 3 4 2 3 6 kg > Capacidade da Mochila Bound -> Back Inclui Item 3 (1,3) Inclui Item 3 (1,3) Não inclui Item 3 (1,3) 3 4 0 5 5 0 1 < Frete Máximo Bound -> Back

55 6 kg > Capacidade da Mochila
Exemplo 2 4 1 3 Peso Frete Itens 0 0 6 Inclui Item 1 (2,1) Não inclui Item 1 (2,1) Capacidade da Mochila 5 kg Frete Máximo 5 2 1 5 0 0 5 Inclui Item 2 (4,2) Não inclui Item 2 (4,2) Inclui Item 2 (4,2) 2 1 3 4 2 3 6 kg > Capacidade da Mochila Bound -> Back Inclui Item 3 (1,3) Inclui Item 3 (1,3) Não inclui Item 3 (1,3) 3 4 0 5 5 0 1 < Frete Máximo Bound -> Back

56 6 kg > Capacidade da Mochila
Exemplo 2 4 1 3 Peso Frete Itens 0 0 6 Inclui Item 1 (2,1) Não inclui Item 1 (2,1) Capacidade da Mochila 5 kg Frete Máximo 5 2 1 5 0 0 5 Inclui Item 2 (4,2) Não inclui Item 2 (4,2) Inclui Item 2 (4,2) 2 1 3 4 2 3 6 kg > Capacidade da Mochila Bound -> Back Inclui Item 3 (1,3) Inclui Item 3 (1,3) Não inclui Item 3 (1,3) Não inclui Item 3 (1,3) 3 4 0 5 5 0 1 < Frete Máximo Bound -> Back 4 < Frete Máximo Bound -> Back

57 6 kg > Capacidade da Mochila
Exemplo 2 4 1 3 Peso Frete Itens 0 0 6 Inclui Item 1 (2,1) Não inclui Item 1 (2,1) Capacidade da Mochila 5 kg Frete Máximo 5 2 1 5 0 0 5 Inclui Item 2 (4,2) Não inclui Item 2 (4,2) Inclui Item 2 (4,2) Não inclui Item 2 (4,2) 2 1 3 4 2 3 6 kg > Capacidade da Mochila Bound -> Back Inclui Item 3 (1,3) Inclui Item 3 (1,3) 3 < Frete Máximo Bound -> Back Não inclui Item 3 (1,3) Não inclui Item 3 (1,3) 3 4 0 5 5 0 1 < Frete Máximo Bound -> Back 4 < Frete Máximo Bound -> Back

58 6 kg > Capacidade da Mochila
Exemplo 2 4 1 3 Peso Frete Itens 0 0 6 Inclui Item 1 (2,1) Não inclui Item 1 (2,1) Capacidade da Mochila 5 kg Frete Máximo 5 2 1 5 0 0 5 Inclui Item 2 (4,2) Não inclui Item 2 (4,2) Inclui Item 2 (4,2) Não inclui Item 2 (4,2) 2 1 3 4 2 3 6 kg > Capacidade da Mochila Bound -> Back Inclui Item 3 (1,3) Inclui Item 3 (1,3) 3 < Frete Máximo Bound -> Back Não inclui Item 3 (1,3) Não inclui Item 3 (1,3) 3 4 0 5 5 0 1 < Frete Máximo Bound -> Back 4 < Frete Máximo Bound -> Back

59 NP-Completude Algoritmos e Estruturas de Dados – IF672
Átila Valgueiro Malta Moreira Juliana Medeiros de Lucena Rafael Alberto Gomes Pereira Lima Rafael Loureiro de Carvalho Sara Carvalho da Rocha Brito Tiago Carneiro Pessoa Canto Victor Barbosa de Oliveira Medeiros Vinícius Monteiro de Lira


Carregar ppt "NP-Completude Algoritmos e Estruturas de Dados – IF672"

Apresentações semelhantes


Anúncios Google