You are on page 1of 3

Complexidade computacional A teoria da complexidade computacional um ramo da teoria da computao em cincia da computao terica e matemtica que se concentra em classificar

r problemas computacionais de acordo com sua dificuldade inerente, e relacionar essas classes entre si. Neste contexto, um problema computacional entendido como uma tarefa que , em princpio, passvel de ser resolvida por um computador (o que basicamente significa que o problema pode ser descrito por um conjunto de instrues matemticas). Informalmente, um problema computacional consiste de instncias do problema e solues para essas instncias do problema. Por exemplo, o teste de primariedade o problema de determinar se um dado nmero primo ou no. As instncias deste problema so nmeros naturais, e a soluo para uma instncia sim ou no, dependendo se o nmero primo ou no. Um problema considerado como inerentemente difcil se a sua soluo requer recursos significativos, qualquer que seja o algoritmo usado. A teoria formaliza esta intuio atravs da introduo de modelos matemticos de computao para estudar estes problemas e quantificar os recursos necessrios para resolv-los, tais como tempo e armazenamento. Outras medidas de complexidade tambm so utilizadas, tais como a quantidade de comunicao (usada em complexidade de comunicao), o nmero de portas em um circuito (usado na complexidade de circuito) e o nmero de processadores (usados em computao paralela). Um dos papis da teoria da complexidade computacional determinar os limites prticos do que os computadores podem e no podem fazer. Limites superior e inferior da complexidade dos problemas Para classificar o tempo de computao (ou recursos semelhantes, como o consumo de espao), necessrio provar os limites superiores e inferiores sobre a quantidade mnima de tempo exigida pelo algoritmo mais eficiente para resolver um determinado problema. A complexidade de um algoritmo geralmente entendida como a sua complexidade de pior caso, a menos que seja especificado o contrrio. A anlise de um determinado algoritmo cai sob o campo de anlise de algoritmos. Para mostrar um limite superior T(n) sobre a complexidade de tempo de um problema, necessrio mostrar apenas que h um determinado algoritmo com tempo de funcionamento, no mximo, T(n). No entanto, provar limites inferiores muito mais difcil, uma vez que limites inferiores fazem uma declarao sobre todos os possveis algoritmos que resolvem um determinado problema. A frase "todos os algoritmos possveis" inclui no apenas os algoritmos conhecidos hoje, mas qualquer algoritmo que possa ser descoberto no futuro. Para mostrar um limite inferior de T(n) para um problema requer mostrar que nenhum algoritmo pode ter complexidade de tempo menor do que T(n). Limites superiores e inferiores so geralmente indicados usando a notao O, que desconsidera fatores constantes e termos menores. Isso faz com que os limites independam dos detalhes especficos do modelo computacional utilizado. Algoritmos so desenvolvidos com intuito de solucionar problemas encontrados no cotidiano. Como seu desenvolvimento fica restrito a imaginao de seu desenvolvedor, comum encontrarmos uma srie de algoritmos para a mesma finalidade. Resta ento sabermos qual

desses possui uma melhor empregabilidade no contexto analisado. Para tal, foram estipulados neste contexto, duas formas distintas para analisar a situao, conforme acrescentou Knuth(1971): - anlise de um algoritmo em particular: consiste em identificar qual custo para resolver um problema especfico por um dado algoritmo, levando em conta, o nmero de vezes que determinada parte do cdigo for executada, memria necessria, dentre outras. - anlise de uma classe de algoritmos: a parte que realmente nos interessa, feita uma comparao entre todos os algoritmos apresentados para a soluo, definindo assim, seus limites. Classe de complexidade P versus NP A classe de complexidade P muitas vezes vista como uma abstrao matemtica de modelagem dessas tarefas computacionais que admitem um algoritmo eficiente. A classe de complexidade NP, por outro lado, contm muitos problemas que as pessoas gostariam de resolver de forma eficiente, mas para os quais nenhum algoritmo eficiente conhecido, como o problema da da cobertura de vrtices. A questo de saber se P igual a NP uma das questes mais importantes em aberto na cincia da computao terica por causa da gama de implicaes de uma soluo. Se a resposta for sim, para muitos problemas importantes pode ser mostrado que h solues mais eficientes para eles. Estes incluem vrios tipos de problemas de programao inteira em investigao operacional, muitos problemas na rea de logstica, previso da estrutura de protenas na biologia, e capacidade de encontrar provas formais de teoremas da matemtica pura. O problema P versus NP um dos Problemas do Prmio Millenium (Millenium Prize Problems) proposto pelo Instituto Clay de Matemtica (Clay Mathematics Institute). Existe um prmio de um milho de dlares para resolver o problema. Intratabilidade Problemas que podem ser resolvidos na teoria (por exemplo, dado um tempo infinito), mas que na prtica levam muito tempo para as suas solues sejam teis, so conhecidos como problemas intratveis. Na teoria da complexidade, os problemas que no apresentam solues em tempo polinomial so considerados intratveis por mais pequenas que sejam suas entradas. Na verdade, a tese de Cobham-Edmonds afirma que apenas os problemas que podem ser resolvidos em tempo polinomial podem ser computados de maneira factvel por algum dispositivo computacional. O que intratabilidade significa na prtica est aberto em debate. Dizer que um problema no est em P no implica que todos os grandes casos de problemas so difceis ou at mesmo que a maioria deles so. Por exemplo, o problema da deciso na Aritmtica de Presburger tem demonstrado no estar em P, ainda foram escritos algoritmos que resolvem o problema em tempos razoveis na maioria dos casos. Tempo Polinomial

Um algoritmo dito ser de tempo polinomail se o tempo de execuo dele limitado superiormente por uma expresso polinomial do tamanho da entrada para o algoritmo, i.e., T(n) = O(nk) para algumas constantes k. [5][6] Problemas para algoritmos de tempo polinomial existem pertencendo a classe de complexidade P, que central no campo da teoria da complexidade computacional. A tese de Bobham afirma que tempo polinomial um sinnimo para "dcil", "vivel", "eficiente", ou "veloz". [7] Alguns exemplos de algoritmos de tempo polinomial: Todas as operaes aritmticas bsicas (adio, subtrao, multiplicao, diviso e comparao) pode ser feito em tempo polinomial. Emparelhamento mximo em grafos podem ser encontrados em tempo polinomial.