P = NP?

Homer Simpson contemplando o abismo
Muito se fala de um dos sete problemas do Prêmio do Millenium, que, se solucionado teria um impacto sem precedentes na computação e nos mais diversos campos da ciência. O que de fato é "P vs. NP"?
Para compreendermos do que se trata precisamos antes responder às seguintes perguntas: “O que é algoritmo?” e “O que é complexidade de algoritmo?”.
No nosso dia-a-dia nos defrontamos com situações em que, dado um objetivo inicial, se faz necessário que sigamos um passo-a-passo para que atingi-lo. Por exemplo: para fazer um bolo, dados os ingredientes necessários, seguimos à risca uma receita e só então temos um bolo.

Na área de computação chamamos essas “receitas” de algoritmos, dada uma situação problema fazemos uso deles para chegar a uma solução. Existem infinitas maneira de solucionar um problema e a maneira que temos de avaliar o quão melhor é uma solução em relação à outra é através da complexidade de algoritmos, que quantifica o número de "passos" executados para se resolver o problema, basicamente o tempo de execução, e o quanto da memória do computador é usada nesse processo.

Agora façamos o seguinte exercício mental: dada uma lista não ordenada de número, determine qual é o maior.

A = { 5, 11, 6, 1, 20, 31, 17}
O algoritmo para se determinar o maior número é algo como:
Candidato a maior número é 0.
5 é maior que 0? Sim.
Candidato a maior número é 5.
11 é maior que 5? Sim.
Candidato a maior número é 11.


E assim sucessivamente até não sobrar mais números para comparar e chegarmos à conclusão de que o maior número é 31, a quantidade de comparações ou passos que devemos realizar até chegar ao resultado é proporcional à quantidade de números pertencentes à A. Quanto maior A, maior a quantidade de comparações, e maior tempo de execução do algoritmo, que cresce de forma linear. Temos então um problema com algoritmo de complexidade N.
Entretanto, a grande maioria dos problemas (e suas respectivas soluções) tem complexidade muito maior do que isso. Há problemas cuja melhor solução encontrada é de complexidade proporcional à  N² ou N³, ou N vezes o logaritmo de N… Chamamos esses problemas de Problemas-P ou Polinomiais. Em contrapartida, há aqueles problemas ainda mais difíceis de resolver, cuja melhor solução conhecida é de complexidade 2^N ou ainda N! a que chamamos de Problemas-NP ou Não Polinomiais.
Um algoritmo que leva um tempo proporcional a N³ é mais lento do que um de complexidade N mas essa diferença se torna ainda maior quando falamos de Problemas-NP, quando N  assume valores suficientemente grandes o tempo de execução do algoritmo torna-se impraticável. 
Tempo de execução de algoritmos de diferentes complexidades em função do tamanho da entrada

A razão para P vs. NP atrair tanta atenção, além do prêmio de um milhão de dólares, são as consequências práticas. Se fosse provado que P = NP, o que possivelmente traria consigo algoritmos muito mais eficientes do aqueles que existem hoje em dia. Haveriam grandes avanços nos mais diversos campos da ciência. Como exemplo temos o problema do Caixeiro Viajante, com diversas aplicações em logística e biologia, mas cuja solução num modelo exato é de complexidade N!. 

Grafo numa representação do problema do caixeiro viajante


 E você, acha que P = NP ou não? ;)

Fontes:

"Explained: P vs. NP" - http://news.mit.edu/2009/explainer-pnp, acessado em 14 de maio de 2019 

"P versus NP" - https://pt.wikipedia.org/wiki/P_versus_NP, acessado em 14 de maio de 2019

"Time complexity" - https://en.wikipedia.org/wiki/Time_complexity, acessado em 14 de maio de 2019

"Difference between Time Complexity and Running time" - https://stackoverflow.com/questions/4915842/difference-between-time-complexity-and-running-time

 

Comentários

  1. Este comentário foi removido pelo autor.

    ResponderExcluir
  2. Segundo um artigo publicado por Norbert Blum,que diz ter resolvido este problema, P NÃO e igual a NP. Apesar de muitos matemáticos concordarem, outros ainda não sabem ao certo, pois isso não é um fato muito bom a se aceitar.

    ResponderExcluir

Postar um comentário