Você está na página 1de 39

Limites da Computao Algoritmos P, NP e NP-Completos

Disciplina de Anlise de Algoritmos

Wagner Al-Alam Sistemas de Informao - Faculdade Loureno Filho

Introduo

Problemas intratveis ou difceis so comuns na natureza e nas reas do conhecimento. Problemas fceis: - resolvidos por algoritmos polinomiais. Problemas difceis: - somente possuem algoritmos exponenciais para resolv-los. A complexidade de tempo da maioria dos problemas polinomial ou exponencial.

Funo Polinomial

Quando a funo de complexidade O(p(n)), onde p(n) um polinmio.


- Exemplos: - algoritmos com pesquisa binria (O(log n)) - pesquisa sequencial - O(n) - ordenao por insero - O(n2) - multiplicao de matrizes - O(n3).

Funo Exponencial

Quando a funo de complexidade O(c n), com c > 1.


- Exemplos: - problema do caixeiro-viajante (PCV) - O(n!). - Mesmo problemas de tamanho pequeno a moderado no podem ser resolvidos por algoritmos no-polinomiais.

Comparativo de Funes

Classe NP - Problemas Sim/No

Para o estudo terico da complexidade de algoritmos considera-se problemas de deciso cujo resultado da computao seja sim ou no. Verso do Problema do Caixeiro-Viajante (PCV) cujo resultado do tipo sim/no:
- Dados: uma constante k, um conjunto de cidades C = {c1 , c2 , , cn } e uma distncia d(ci , cj ) para cada par de cidades ci , cj C. - Questo: Existe um roteiro para todas as cidades em C cujo comprimento total seja menor ou igual a k?

Caracterstica da classe NP: problemas sim/no para os quais uma dada soluo pode ser verificada facilmente. A soluo pode ser muito difcil ou impossvel de ser obtida, mas uma vez conhecida ela pode ser verificada em tempo polinomial.

Caminho em um Grafo

Considere um grafo com peso nas arestas, dois vrtices i, j e um inteiro k > 0.

Fcil: Existe um caminho de i at j com peso k?.


- H um algoritmo eficiente com complexidade de tempo O(A log V ), sendo A o nmero de arestas e V o nmero de vrtices (algoritmo de Dijkstra).

Difcil: Existe um caminho de i at j com peso k?


- No existe algoritmo eficiente. equivalente ao PCV em termos de complexidade.

HC - The Hamilton Circuit (=Cycle)

O Circuito Hamiltoniano:
- Dado um grafo orientado, determine se h um ciclo que visite cada n exatamente uma vez, terminando no n inicial.

Mochila Booleana

Problema da Mochila Booleana:


- Uma mochila tem capacidade M; - num cofre, h n itens, cada um com seu peso (pi) e seu valor (vi); - Escolha que itens levar na mochila, de modo que o total de peso seja menor ou igual a M, e o total dos valores seja mximo.

Boolean Satisfiability Problem (SAT)

Satisfatibilidade de expresso booleana:


- Dada uma expresso proposicional na forma normal conjuntiva, determine se h algum conjunto de atribuies true e false aos smbolos proposicionais, que torne true o valor da expresso.

Foi o primeiro problema NP-Completo proposto por Stephen Cook em 1971.

10

Algoritmos Determinsticos

So algoritmos onde o resultado de cada operao definido de forma nica e apresentam comportamento previsvel. Dada uma determinada entrada, o algoritmo apresenta sempre a mesma sada. S podem estar em um estado por vez, onde entende-se por um estado, o que a mquina est fazendo em um determinado tempo. Em um arcabouo terico, possvel remover a restrio de comportamento previsvel. Apesar de parecer irreal, este um conceito importante e geralmente utilizado para definir a classe NP. Neste caso, os algoritmos podem conter operaes cujo resultado no definido de forma nica.

11

Algoritmos No-Determinsticos

Algoritmo no-determinista: capaz de escolher uma dentre as vrias alternativas possveis a cada passo. Algoritmos no-deterministas contm operaes cujo resultado no unicamente definido, ainda que limitado a um conjunto especificado de possibilidades.

12

Funo escolhe(C)

Algoritmos no-deterministas utilizam uma funo escolhe(C), que escolhe um dos elementos do conjunto C de forma arbitrria. O comando de atribuio X escolhe (1:n) pode resultar na atribuio a X de qualquer dos inteiros no intervalo [1, n]. A complexidade de tempo para cada chamada da funo escolhe O(1). Neste caso, no existe nenhuma regra especificando como a escolha realizada. Se um conjunto de possibilidades levam a uma resposta, este conjunto escolhido sempre e o algoritmo terminar com sucesso. Em contrapartida, um algoritmo no-determinista termina sem sucesso se e somente se no h um conjunto de escolhas que indique sucesso.
13

Algoritmos No-Determinsticos

Algoritmo no-determinista: capaz de escolher uma dentre as vrias alternativas possveis a cada passo. Algoritmos no-deterministas contm operaes cujo resultado no unicamente definido, ainda que limitado a um conjunto especificado de possibilidades.

14

Comandos Sucesso e Insucesso

Algoritmos no-deterministas utilizam tambm dois comandos, a saber:


- insucesso: indica trmino sem sucesso. - sucesso: indica trmino com sucesso.

Os comandos insucesso e sucesso so usados para definir uma execuo do algoritmo. Esses comandos so equivalentes a um comando de parada de um algoritmo determinista. Os comandos insucesso e sucesso tambm tm complexidade de tempo O(1).

15

Mquina No-Determinstica

Uma mquina capaz de executar a funo escolhe admite a capacidade de computao no-determinista. Uma mquina no-determinista capaz de produzir cpias de si mesma quando diante de duas ou mais alternativas, e continuar a computao independentemente para cada alternativa. A mquina no-determinista que acabamos de definir no existe na prtica, mas ainda assim fornece fortes evidncias de que certos problemas no podem ser resolvidos por algoritmos deterministas em tempo polinomial, conforme mostrado na definio da classe N P-completo frente.

16

Passo 0

17

Passo 1

18

Passo 2

19

Passo 3

20

Soluo Encontrada e a Computao Para

21

Mquina No-Determinstica

Em outras palavras:
- Problema inicial com resoluo em 2n passos em mquina determinstica (pior caso) - Em mquina no determinstica leva tempo n.

Intrigante:
- Ser que existe algum problema que apenas uma mquina no-determinstica resolva? - No. Uma mquina no-determinstica calcula apenas mais rpido, pois equivalente a mquinas determinsticas.

22

Pesquisa No-Determinstica

Pesquisar o elemento x em um conjunto de elementos A[1 : n], n 1.

void pesquisaND ( x , A, 1 , n){ j escolhe (A, 1 , n); if (A[ j ] == x ) sucesso; else insucesso ; }
Determina um ndice j tal que A[j] = x para um trmino com sucesso ou ento insucesso quando x no est presente em A. O algoritmo tem complexidade no-determinista O(1). Para um algoritmo determinista a complexidade O(n).
23

Caracterizao das Classes P e NP

P: conjunto de todos os problemas que podem ser resolvidos por algoritmos deterministas em tempo polinomial. NP: conjunto de todos os problemas que podem ser resolvidos por algoritmos no-deterministas em tempo polinomial. Para mostrar que um determinado problema est em NP, basta apresentar um algoritmo no-determinista que execute em tempo polinomial para resolver o problema. Outra maneira encontrar um algoritmo determinista polinomial para verificar que uma dada soluo vlida.

24

Existe Diferena entre P e NP?

P NP, pois algoritmos deterministas so um caso especial dos no-deterministas. - A questo se P = NP ou P NP. - Esse o problema no resolvido mais famoso que existe na rea de cincia da computao. - Se existem algoritmos polinomiais deterministas para todos os problemas em NP, ento P = NP. - Em contrapartida, a prova de que P NP parece exigir tcnicas ainda desconhecidas. Descrio tentativa do mundo NP:

Acredita-se que NP >> P, pois para muitos problemas em NP, no existem algoritmos polinomiais conhecidos, nem um limite inferior no-polinomial provado.
25

NP P ou NP = P? Consequncias?

Muitos problemas prticos em NP podem ou no pertencer a P (no conhecemos nenhum algoritmo determinista eficiente para eles). Se conseguirmos provar que um problema no pertence a P, ento temos um indcio de que esse problema pertence a NP e que esse problema to difcil de ser resolvido quanto outros problemas NP. Como no existe tal prova, sempre h esperana de que algum descubra um algoritmo eficiente. Quase ningum acredita que NP = P. Existe um esforo considervel para provar o contrrio, mas a questo continua em aberto!

26

Problemas NP-Completo

A teoria de complexidade a ser apresentada no mostra como obter algoritmos polinomiais para problemas que demandam algoritmos exponenciais, nem afirma que no existem. possvel mostrar que os problemas para os quais no h algoritmo polinomial conhecido so computacionalmente relacionados.
- Formam a classe conhecida como NP.

Propriedade: um problema da classe NP poder ser resolvido em tempo polinomial se e somente se todos os outros problemas em NP tambm puderem. Este fato um indcio forte de que dificilmente algum ser capaz de encontrar um algoritmo eficiente para um problema da classe NP.
- difcil mas no se sabe se impossvel, algum quer tentar?
27

Problemas NP-Completo

Problemas que pertencem a NP, mas que podem ou no pertencer a P. Propriedade: se qualquer problema NP-completo puder ser resolvido em tempo polinomial por uma mquina determinista, ento todos os problemas da classe podem, isto , P = NP. A falha coletiva de todos os pesquisadores para encontrar algoritmos eficientes para estes problemas pode ser vista como uma dificuldade para provar que P = NP. Contribuio prtica da teoria: - fornece um mecanismo que permite descobrir se um novo problema fcil ou difcil. Se encontrarmos um algoritmo eficiente para o problema, ento no h dificuldade. Seno, uma prova de que o problema NP-completo nos diz que o problema to difcil quanto todos os outros problemas difceis da classe NP-completo.
28

Problemas NP-Difcil

Alm da classe NP-Completo, existe a classe NP-Difcil. Para mostrar que um problema NP-Difcil, basta satisfazer as condies:
- Ser possvel mostrar que pelo menos um problema NP-Completo pode ser reduzido diretamente ao problema estudado. - Mostre que o problema no est em NP: - Mostrando que no existe nenhum algoritmo para ele;

TODO PROBLEMA NP-COMPLETO TAMBM NP-DIFCIL.

29

Resumo:

P: Problemas solucionveis em tempo polinomial, ou seja, podemos solucionar o problema em tempo polinomial no tamanho da entrada do problema. NP: problemas verificveis em tempo polinomial, ou seja, dada uma soluo proposta, podemos verificar que esta uma soluo para o problema em tempo polinomial do tamanho da entrada e do tamanho da soluo proposta. NP-Difcil: um problema onde, se existir um algoritmo em tempo polinomial para solucionar o problema, ento poderemos converter cada problema em NP neste problema de modo a solucionar cada problema em NP em tempo polinomial. NP-Completo: um problema que NP-Difcil e tambm NP.
30

Problemas Exponenciais

desejvel resolver instncias grandes de problemas de otimizao em tempo razovel. Os melhores algoritmos para problemas NP-completo comportamento de pior caso exponencial no tamanho da entrada. tm

Para um algoritmo que execute em tempo proporcional a 2N , no garantido obter resposta para todos os problemas de tamanho N 100. Independente da velocidade do computador, ningum poderia esperar por um algoritmo que leva 2100 passos para terminar sua tarefa. Um supercomputador poderia resolver um problema de tamanho N = 50 em 1 hora, ou N = 51 em 2 horas, ou N = 59 em um ano. Mesmo um computador paralelo contendo um milho de processadores, (sendo cada processador um milho de vezes mais rpido que o melhor processador que possa existir) no seria suficiente para chegar a N = 100.
31

O Que Fazer para Resolver Problemas Exponenciais?

Usar algoritmos exponenciais eficientes aplicando tcnicas de tentativa e erro. Usar algoritmos aproximados. Acham uma resposta que pode no ser a soluo tima, mas garantido ser prxima dela. Concentrar no caso mdio. Buscar algoritmos melhores que outros neste quesito e que funcionem bem para as entradas de dados que ocorrem usualmente na prtica.
- Existem poucos algoritmos exponenciais que so muito teis na prtica. - Exemplo: Simplex (programao linear). Complexidade de tempo exponencial no pior caso, mas muito rpido na prtica. - Tais exemplos so raros. A grande maioria dos algoritmos exponenciais conhecidos no muito til.
32

Problemas Exponenciais

desejvel resolver instncias grandes de problemas de otimizao em tempo razovel. Os melhores algoritmos para problemas NP-completo tm comportamento de pior caso exponencial no tamanho da entrada. Para um algoritmo que execute em tempo proporcional a 2N , no garantido obter resposta para todos os problemas de tamanho N 100. Independente da velocidade do computador, ningum poderia esperar por um algoritmo que leva 2100 passos para terminar sua tarefa. Um supercomputador poderia resolver um problema de tamanho N = 50 em 1 hora, ou N = 51 em 2 horas, ou N = 59 em um ano. Mesmo um computador paralelo contendo um milho de processadores, (sendo cada processador um milho de vezes mais rpido que o melhor processador que possa existir) no seria suficiente para chegar a N = 100.
33

Tcnicas de trabalhar com algoritmos NP-Completos

Algumas dessas tcnicas:


- Algoritmos de aproximao(soluo pode ser ou no tima) - Comprometem a optamibilidade. - Algoritmos que tratam problemas NPC em tempo polinomial na mdia. - Comprometem a eficincia. - Algoritmos que funcionam para casos especiais da entrada. - Comprometem a completude. - Algoritmos exponenciais que trabalham bem para pequenas entradas (FORA BRUTA).

34

Heursticas para Problemas NP-Completo


Heurstica: algoritmo que pode produzir um bom resultado (ou at a soluo tima), mas pode tambm no obter soluo ou obter uma distante da tima. Uma heurstica pode ser determinista ou probabilstica. Pode haver instncias em que uma heurstica (probabilstica ou no) nunca vai encontrar uma soluo. A principal diferena entre uma heurstica probabilstica e um algoritmo Monte Carlo que o algoritmo Monte Carlo tem que encontrar uma soluo correta com uma certa probabilidade (de preferncia alta) para qualquer instncia do problema.

35

Heurstica para o PCV

Algoritmo do vizinho mais prximo, heurstica gulosa simples:


1. Inicie com um vrtice arbitrrio. 2. Procure o vrtice mais prximo do ltimo vrtice adicionado que no esteja no caminho e adicione ao caminho a aresta que liga esses dois vrtices. 3. Quando todos os vrtices estiverem no caminho, adicione uma aresta conectando o vrtice inicial e o ltimo vrtice adicionado.

Complexidade: O(n2 ), sendo n o nmero de cidades, ou O(d), sendo d o conjunto de distncias entre cidades. Aspecto negativo: embora todas as arestas escolhidas sejam localmente mnimas, a aresta final pode ser bastante longa.

36

Heurstica para o PCV

Caminho timo para esta instncia: 0 1 2 5 3 4 0 (comprimento 58). Para a heurstica do vizinho mais prximo, se iniciarmos pelo vrtice 0, o vrtice mais prximo o 1 com distncia 3. A partir do 1, o mais prximo o 2, a partir do 2 o mais prximo o 4, a partir do 4 o mais prximo o 3, a partir do 3 restam o 5 e o 0. O comprimento do caminho 0 1 2 4 3 5 0 60.
37

Heurstica para o PCV

Embora o algoritmo do vizinho mais prximo no encontre a soluo tima, a obtida est bem prxima do timo. Entretanto, possvel encontrar instncias em que a soluo obtida pode ser muito ruim. Pode mesmo ser arbitrariamente ruim, uma vez que a aresta final pode ser muito longa. possvel achar um algoritmo que garanta encontrar uma soluo que seja razoavelmente boa no pior caso, desde que a classe de instncias consideradas seja restrita.

38

Algoritmos Aproximados para Problemas NP-Completo


Para projetar algoritmos polinomiais para resolver um problema de otimizao NP-completo necessrio relaxar o significado de resolver. Removemos a exigncia de que o algoritmo tenha sempre de obter a soluo tima. Procuramos algoritmos eficientes que no garantem obter a soluo tima, mas sempre obtm uma prxima da tima. Tal soluo, com valor prximo da tima, chamada de soluo aproximada. Um algoritmo aproximado para um problema um algoritmo que gera solues aproximadas para . Para ser til, importante obter um limite para a razo entre a soluo tima e a produzida pelo algoritmo aproximado.
39

Você também pode gostar