• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Classes de Problemas P e NP
 

Classes de Problemas P e NP

on

  • 2,003 views

Classes de Problemas P e NP

Classes de Problemas P e NP

Statistics

Views

Total Views
2,003
Views on SlideShare
2,003
Embed Views
0

Actions

Likes
0
Downloads
59
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Classes de Problemas P e NP Classes de Problemas P e NP Document Transcript

    • CENTRO UNIVERSITÁRIO DA FEI ORLANDO DA SILVA JUNIOR CLASSES DE PROBLEMAS P E NP São Bernardo do Campo 2010
    • SUMÁRIO 1 INTRODUÇÃO .....................................................................................................................3 2 TEMPO POLINOMIAL.......................................................................................................4 2.1 Algoritmos determinísticos ..................................................................................................4 2.2 Algoritmos não-determinísticos ...........................................................................................5 2.3 Abstração..............................................................................................................................5 3 PROBLEMAS POLINOMIAIS...........................................................................................6 3.1 Averiguação de um problema polinomial ............................................................................6 3.2 Classe de problemas complexos P........................................................................................6 4 PROBLEMAS NÃO-POLINOMIAIS.................................................................................8 4.1 Problemas NP-Completos ....................................................................................................8 4.2 Demonstração pelo teorema de Cook.................................................................................10 REFERÊNCIAS .......................................................................................................................9
    • 3 1 INTRODUÇÃO A maior parte dos problemas computacionais podem ser resolvidos com algoritmos polinomiais, ou seja, o pior caso de um algoritmo desta natureza ainda é solucionável computacionalmente. Os algoritmos que solucionam o problema do quadrado perfeito, de uma equação de segundo grau ou do caminho mais curto em um grafo pertencem a essa categoria. Algoritmos intratáveis são aqueles cujo tempo não é polinomial. Soluções para problemas deste tipo são dificilmente encontradas em tempo hábil. Todavia, a solução pode existir e não ser polinomial. Neste caso, o problema é classificado como não- polinomial. O tempo polinomial de uma solução indica se o problema pode ser resolvido em tempo útil, ou seja, se um computador qualquer pode tratar o problema e encontrar sua solução. Problemas não-polinomiais, em geral, necessitam que supercomputadores sejam utilizados para que suas instâncias sejam resolvidas. Embora uma solução ótima possa ser encontrada, o tempo para consegui-la pode ser inestimável.
    • 4 2 TEMPO POLINOMIAL A discussão de problemas das classes P e NP envolve também a discussão do tempo polinomial da solução do problema. É consenso entre os pesquisadores dizer que qualquer solução de difícil problema pode ser encontrada. Até mesmo mais de uma solução. Todavia, todos os problemas estudados na classe NP não possuem tempo polinomial satisfatório, o que dificulta encontrar, na prática, a solução para o problema estudado. Três argumentos sustentam a controvérsia de que problemas NP podem ser considerados tratáveis (CORMEN et al, 2002):  Não existem problemas de tão alto grau. Embora problemas de alto grau sejam considerados, não são conhecidos problemas cujas soluções atinjam tão alto grau que não possam ser resolvidos computacionalmente. Ademais, alto grau de tempo polinomial indica que um tempo polinomial menor pode ser encontrado;  O mesmo tempo polinomial pode ser utilizado em diversas classes de problemas. Dado um problema qualquer com um tempo polinomial satisfatório, esse mesmo tempo pode ser utilizado como resolução de outro problema qualquer em um computador distinto;  Os problemas polinomiais fecham-se em operações matemáticas básicas. Alguns algoritmos tem propriedades de fechamento que utilizam operações de soma, subtração, multiplicação, divisão ou composição para encontrar a solução trivial do problema. 2.1 Algoritmos polinomiais determinísticos No modelo formal algorítmico, a eficiência de um algoritmo é uma função de um numero de bits utilizados para codificar a entrada utilizando um razoável esquema de codificação (SEDGEWICK, 1990). Por determinístico entende-se o tempo que o algoritmo leva para ser solucionado. Neste caso, o algoritmo deve ser solucionado necessariamente, e não apenas hipoteticamente, sendo especializado a arquiteturas de hardware. Algoritmos polinomiais determinísticos pertencem à classe P de complexidade de algoritmos. A classe P é o conjunto de todos os problemas que podem ser resolvidos
    • 5 por algoritmos determinísticos em tempo polinomial; em outras palavras, a classe complexa P abrange todas as soluções para os problemas que podem ser resolvidos e são considerados tratáveis, conforme a definição do capítulo 1. 2.2. Algoritmos polinomiais não-determinísticos Em oposição à definição de determinístico, por algoritmo não-determinístico entende-se o conjunto de soluções distintas segundo uma mesma entrada. Em outras palavras, um algoritmo não-determinístico possui diversas soluções para um mesmo problema; todavia, não é possível conhecer previamente o resultado que será fornecido pela aplicação do algoritmo. Os algoritmos não-determinísticos pertencem à classe NP de problemas algoritmicamente complexos. A classe NP é o conjunto de todos os problemas que podem ser resolvidos por um algoritmo não-determinístico em tempo polinomial (SEDGEWICK, 1990). 2.3 Abstração Para o propósito de compreender como funcionam os problemas de classes P e NP, convém definir o que é um problema. Um problema abstrato (CORMEN et al., 2002) é uma relação binária sobre um conjunto de instâncias de problemas e um conjunto de soluções de problemas. Como esta definição está restrita a problemas de decisão, estes podem ser vistos como problemas abstratos que têm a função de mapear o conjunto das instâncias para o conjunto de soluções, denotando em cada solução particular o seu caráter de solubilidade. O algoritmo do menor caminho em um grafo resolve um problema de decisão: dado um grafo não-orientado com mais de dois vértices, deseja-se encontrar o caminho de um vértice ao outro que percorra a menor quantidade de arestas. Embora seja também um problema de otimização, o algoritmo do menor caminho averigua se tal caminho que conecta dois vértices, de fato, existe. Este, pois, é o caráter que o define como também sendo um problema de decisão.
    • 6 3 PROBLEMAS POLINOMIAIS Problemas polinomiais são aqueles que podem ser solucionados em tempo polinomial. Um algoritmo que resolve um dado problema é polinomial se o seu consumo de tempo é limitado por uma função polinomial dos tamanhos das instâncias do problema (FEOFILOFF, 2010). 3.1 Averiguação de um problema polinomial Dada a definição acima, pode-se dizer que um algoritmo de tempo polinomial é definido por suas entradas. Matematicamente, um algoritmo polinomial é assim definido onde seu tempo é O(p(n)), onde p é alguma função polinomial e n é o tamanho da entrada. Qualquer algoritmo cuja função de complexidade de tempo pode não ser tão limitada é chamado de algoritmo de tempo exponencial. (GAREY; JOHNSON, 1979). Através da máquina de Turing, foi possível dizer com maior precisão o que é um algoritmo e como o problema resolvido por esse algoritmo é considerado computável. É cientificamente válido dizer que um problema é computável se é resolvido pela máquina de Turing. Satisfeita essa condição, anos depois da descoberta da existência de tal máquina, necessitou-se saber o quão eficiente um algoritmo o é. Sabe-se que um algoritmo deve ser computável e eficiente. Segundo as definições apresentadas até agora, pode-se dizer que um algoritmo é eficiente se é também polinomial (TOSCANI; VELOSO, 2002). Todavia, para expressar a eficiência de um algoritmo, é computacionalmente válido se utilizar de uma linguagem que verifique o algoritmo, que, por sua vez, também é um algoritmo. Esse algoritmo que verifica a linguagem é chamado de algoritmo de verificação. 3.2 Classe de problemas complexos P Identificar problemas de caráter polinomial é mais simples que caracterizar um que não seja. Um algoritmo que cresce a O(n300 ) é considerado polinomial, já que sua função não pertence ao conjunto de funções exponenciais. Embora o tempo apresentado como exemplo possa parecer enorme quando comparado com outros algoritmos cujo tempo é bastante inferior, uma função que possua essa taxa de crescimento, em termos
    • 7 algorítmicos, é classificada como tendo tempo polinomial aceitável. Todavida, dificilmente existirá na prática um algoritmo que implemente uma solução em O(n300 ). A maior parte dos algoritmos existentes pertencem à classe P, como o HeapSort e o QuickSort, que possuem Θ(nlog2n), e o BubbleSort, que possui complexidade temporal O(n2 ). É possível demonstrar facilmente que esses algoritmos fazem parte da classe P através de suas notações assintóticas.
    • 8 4 PROBLEMAS NÃO-POLINOMIAIS Conforme descrito no capítulo 2.2, problemas polinomiais pertencem à classe de complexidade NP e estão relacionados a algoritmos que podem ser verificados em tempo polinomial. Neste caso, o tempo polinomial é não-determinístico, fazendo revés com os algoritmos mais comuns e utilizados, que são determinísticos. Mais especificamente, a classe NP é a classe de linguagens que podem ser verificadas (cf. cap. 3.1) em tempo polinomial. A relação entre P e NP é um problema ainda em aberto na ciência da computação. Embora se saiba que P ⊆ NP, a maioria dos pesquisadores desacredita que P = NP. A primeira relação é explicada da seguinte forma: dada uma linguagem L que pertence a NP quando existe um algoritmo de tempo polinomial de duas entradas A e uma constante c, é possível conhecer um algoritmo de verificação de dois argumentos que ignore todo e qualquer certificado e aceite as cadeias de entrada contidas em L (CORMEN et al., 2002). A segunda relação apresentada é bastante divergente na ciência da computação. Por muitos pesquisadores acreditarem mais que P ≠ NP do que P = NP, uma outra classe de problemas passou a ser estudada, a classe de linguagens NP-Completas. 4.1 Problemas NP-Completos Alguns autores afirmam que a classe NP-Completo de algoritmos tem uma propriedade bastante interessante intrínseca a ela (CORMEN et al., 2002 e TOSCANI; VELOSO, 2002), a confirmar a existência de um tempo polinomial para qualquer problema da classe NP. Em outras palavras, P = NP.
    • 9 Figura 1 - Relação de conjuntos entre a complexidade dos problemas É comum, no processo de solução de um problema a, reduzi-lo a outro problema b. Isto significa que dada uma instância de a, deve-se construir uma instância de b, tal que a solução da instância de a determine a solução da instância de b correspondente. As reduções deste tipo que preservam a complexidade polinomial são chamadas de reduções polinomiais. Para que ocorra a redução polinomial de uma linguagem L1 para uma linguagem L2, há uma função f que satisfaz as seguintes condições:  Existe um programa para a máquina determinística de Turing de complexidade polinomial que computa f;  Para todo x pertencente ao conjunto de instâncias de L1, x também pertence a L1 de modo que f(x) pertença a L2. Se existe uma redução polinomial de L1 em L2, diz-se que L1 é redutível a L2.
    • 10 Figura 2 - Modelo gráfico da máquina de Turing 4.2 Demonstração pelo Teorema de Cook O primeiro problema a ser considerado NP-Completo foi provado pelo cientista americano Stephen Cook, em 1971. Cook deu uma prova do que é satisfatoriamente algo NP-Completo ao dizer que se existe um algoritmo de tempo polinomial que satisfaça as condições em NP-Completo, então todos os problemas em NP podem ser solucionados em tempo polinomial (COOK, 1971). Para demonstrar a complexidade do tipo NP-Completo, Cook demonstra, através de um modelo da máquina de Turing, que é possível resolver qualquer problema em NP. Por uma demonstração totalmente matemática, o cientista adicionou o não- determinismo à máquina a fim de que ela pudesse solucionar qualquer problema em NP. Em seguida, definiu todas as características que a máquina deveria ter para que resolvesse os problemas. A maneira como a máquina executaria as instruções também foi colocada à prova no artigo, já que a solubilidade do problema estaria descrita em fórmulas matemáticas. Cook finaliza sua demonstração afirmando que a solução para a satisfabilidade (SAT – Boolean Satisfiability Problem) do problema corresponderia essencialmente à simulação da máquina em execução.
    • 11 A solução gerada pela máquina cria uma instância do problema (cf. cap. 4.1), tornando-o, assim, característico da classe de complexidade NP-Completo, conforme a definição.
    • 12 REFERÊNCIAS FEOFILOFF, Paulo. Introdução informal à complexidade de problemas. In: Análise de Algoritmos. Disponível em: <http://www.ime.usp.br/~pf/algoritmos/aulas/hpsrt.html>. Acesso em: 16 mai 2010. COOK, Stephen A. The Complexity of Theorem-Proving Procedures. University of Toronto Papers, Canadá, 1971. CORMEN, Thomas et al. Algoritmos: teoria e prática. Rio de Janeiro: Elsevier, 2002. cap. 34. GAREY, M. R.; JOHNSON, D. Computers and Intractability - A Guide to the Theory of NP-Completeness. USA: W. H. Freeman, 1979. SEDGEWICK, Robert. Algorithms in C. USA: Addison-Wesley, 1990. TOSCANI, Laira V.; VELOSO, Paulo A. S. Complexidade de Algoritmos: análise, projeto e métodos. Porto Alegre: Editora Sagra Luzzatto, 2002. cap. 6. pag. 171-195.