SlideShare ist ein Scribd-Unternehmen logo
1 von 12
Downloaden Sie, um offline zu lesen
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.

Weitere ähnliche Inhalte

Was ist angesagt?

MASP - Metodologia para Análise e Solução de Problemas
MASP - Metodologia para Análise e Solução de ProblemasMASP - Metodologia para Análise e Solução de Problemas
MASP - Metodologia para Análise e Solução de Problemaseugeniorocha
 
Classes de problemas p, np,np completo e np-difícil
Classes de problemas p, np,np completo e np-difícilClasses de problemas p, np,np completo e np-difícil
Classes de problemas p, np,np completo e np-difícilGuilherme Coelho
 
Aula 2 - Lógica de Programação
Aula 2 - Lógica de ProgramaçãoAula 2 - Lógica de Programação
Aula 2 - Lógica de ProgramaçãoInstituto CENTEC
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPDelacyr Ferreira
 
Simulado ITIL Foundation - Questões Comentadas
Simulado ITIL Foundation - Questões ComentadasSimulado ITIL Foundation - Questões Comentadas
Simulado ITIL Foundation - Questões ComentadasFernando Palma
 
Política salarial
Política salarialPolítica salarial
Política salarialgamatte
 
PETI - Planejamento Estratégico de TI
PETI - Planejamento Estratégico de TI PETI - Planejamento Estratégico de TI
PETI - Planejamento Estratégico de TI CompanyWeb
 
Aula 3 técnicas de teste de software1
Aula 3   técnicas de teste de software1Aula 3   técnicas de teste de software1
Aula 3 técnicas de teste de software1Tiago Vizoto
 
Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareDanilo Sousa
 
Gerenciamento de Processos de Negócios - Cap 2 CBoK-V3(pt)
Gerenciamento de Processos de Negócios - Cap 2 CBoK-V3(pt)Gerenciamento de Processos de Negócios - Cap 2 CBoK-V3(pt)
Gerenciamento de Processos de Negócios - Cap 2 CBoK-V3(pt)Jorge Ramalho
 
Apresentação implantando um erp com sucesso
Apresentação   implantando um erp com sucessoApresentação   implantando um erp com sucesso
Apresentação implantando um erp com sucessoJuliana Maria Lopes
 

Was ist angesagt? (20)

MASP - Metodologia para Análise e Solução de Problemas
MASP - Metodologia para Análise e Solução de ProblemasMASP - Metodologia para Análise e Solução de Problemas
MASP - Metodologia para Análise e Solução de Problemas
 
Classes de problemas p, np,np completo e np-difícil
Classes de problemas p, np,np completo e np-difícilClasses de problemas p, np,np completo e np-difícil
Classes de problemas p, np,np completo e np-difícil
 
Aula 2 - Lógica de Programação
Aula 2 - Lógica de ProgramaçãoAula 2 - Lógica de Programação
Aula 2 - Lógica de Programação
 
Gerência de Requisitos
Gerência de RequisitosGerência de Requisitos
Gerência de Requisitos
 
Normalização
NormalizaçãoNormalização
Normalização
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NP
 
Tipos de algoritmos
Tipos de algoritmosTipos de algoritmos
Tipos de algoritmos
 
Simulado ITIL Foundation - Questões Comentadas
Simulado ITIL Foundation - Questões ComentadasSimulado ITIL Foundation - Questões Comentadas
Simulado ITIL Foundation - Questões Comentadas
 
Melhoria de Processo de Negócio
Melhoria de Processo de NegócioMelhoria de Processo de Negócio
Melhoria de Processo de Negócio
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Política salarial
Política salarialPolítica salarial
Política salarial
 
Bpmn portuguese
Bpmn portugueseBpmn portuguese
Bpmn portuguese
 
Modelo kaizen
Modelo kaizenModelo kaizen
Modelo kaizen
 
PETI - Planejamento Estratégico de TI
PETI - Planejamento Estratégico de TI PETI - Planejamento Estratégico de TI
PETI - Planejamento Estratégico de TI
 
Aula 3 técnicas de teste de software1
Aula 3   técnicas de teste de software1Aula 3   técnicas de teste de software1
Aula 3 técnicas de teste de software1
 
Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de Software
 
Scrum, o tutorial definitivo
Scrum, o tutorial definitivo Scrum, o tutorial definitivo
Scrum, o tutorial definitivo
 
Gerenciamento de Processos de Negócios - Cap 2 CBoK-V3(pt)
Gerenciamento de Processos de Negócios - Cap 2 CBoK-V3(pt)Gerenciamento de Processos de Negócios - Cap 2 CBoK-V3(pt)
Gerenciamento de Processos de Negócios - Cap 2 CBoK-V3(pt)
 
Auditoria de sistemas2
Auditoria de sistemas2Auditoria de sistemas2
Auditoria de sistemas2
 
Apresentação implantando um erp com sucesso
Apresentação   implantando um erp com sucessoApresentação   implantando um erp com sucesso
Apresentação implantando um erp com sucesso
 

Ähnlich wie Problemas P e NP

Ähnlich wie Problemas P e NP (20)

NP Completude - Loiane
NP Completude - LoianeNP Completude - Loiane
NP Completude - Loiane
 
Teoria da Computação
Teoria da ComputaçãoTeoria da Computação
Teoria da Computação
 
VisualAlg - Criando algoritmos
VisualAlg - Criando algoritmosVisualAlg - Criando algoritmos
VisualAlg - Criando algoritmos
 
Apresentacao N P Completude Loiane
Apresentacao  N P Completude  LoianeApresentacao  N P Completude  Loiane
Apresentacao N P Completude Loiane
 
Algoritmos e lógica de programação com Python
Algoritmos e lógica de programação com PythonAlgoritmos e lógica de programação com Python
Algoritmos e lógica de programação com Python
 
Linguagem visualg2.0
Linguagem visualg2.0Linguagem visualg2.0
Linguagem visualg2.0
 
Algoritmos parte1
Algoritmos parte1Algoritmos parte1
Algoritmos parte1
 
Apostila visualg (1)
Apostila visualg (1)Apostila visualg (1)
Apostila visualg (1)
 
Algoritmos computacionais
Algoritmos computacionaisAlgoritmos computacionais
Algoritmos computacionais
 
Linguagem visualg2.0
Linguagem visualg2.0Linguagem visualg2.0
Linguagem visualg2.0
 
Apostila de Introdução a Programação
Apostila de Introdução a ProgramaçãoApostila de Introdução a Programação
Apostila de Introdução a Programação
 
Apostila visualg
Apostila visualgApostila visualg
Apostila visualg
 
Algoritimo1
Algoritimo1Algoritimo1
Algoritimo1
 
apostila sobre Algoritmos
apostila sobre Algoritmosapostila sobre Algoritmos
apostila sobre Algoritmos
 
Visual g
Visual gVisual g
Visual g
 
Linguagemvisualg20 1231617059100335-1
Linguagemvisualg20 1231617059100335-1Linguagemvisualg20 1231617059100335-1
Linguagemvisualg20 1231617059100335-1
 
Visualg introdução aos algoritmos
Visualg introdução aos algoritmosVisualg introdução aos algoritmos
Visualg introdução aos algoritmos
 
Algoritmos visualg
Algoritmos visualgAlgoritmos visualg
Algoritmos visualg
 
382 po apostila_completa_mais_livro
382 po apostila_completa_mais_livro382 po apostila_completa_mais_livro
382 po apostila_completa_mais_livro
 
Linguagem visualg2.0
Linguagem visualg2.0Linguagem visualg2.0
Linguagem visualg2.0
 

Mehr von Orlando Junior

Árvores - Introdução e Conceitos Básicos
Árvores - Introdução e Conceitos BásicosÁrvores - Introdução e Conceitos Básicos
Árvores - Introdução e Conceitos BásicosOrlando Junior
 
Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...
Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...
Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...Orlando Junior
 
Predição de Links em Redes Complexas usando o Classificador Naïve Bayes
Predição de Links em Redes Complexas usando o Classificador Naïve BayesPredição de Links em Redes Complexas usando o Classificador Naïve Bayes
Predição de Links em Redes Complexas usando o Classificador Naïve BayesOrlando Junior
 
Predição de Fluxos em Redes de Computadores - SBRC/WP2P+ 2014
Predição de Fluxos em Redes de Computadores - SBRC/WP2P+ 2014Predição de Fluxos em Redes de Computadores - SBRC/WP2P+ 2014
Predição de Fluxos em Redes de Computadores - SBRC/WP2P+ 2014Orlando Junior
 
Investigação de Predição de Fluxos em Redes de Computadores
Investigação de Predição de Fluxos em Redes de ComputadoresInvestigação de Predição de Fluxos em Redes de Computadores
Investigação de Predição de Fluxos em Redes de ComputadoresOrlando Junior
 
Predição de Fluxos em Redes de Computadores
Predição de Fluxos em Redes de ComputadoresPredição de Fluxos em Redes de Computadores
Predição de Fluxos em Redes de ComputadoresOrlando Junior
 
Normalização em banco de dados
Normalização em banco de dadosNormalização em banco de dados
Normalização em banco de dadosOrlando Junior
 
Introdução à Engenharia de Requisitos
Introdução à Engenharia de RequisitosIntrodução à Engenharia de Requisitos
Introdução à Engenharia de RequisitosOrlando Junior
 
Programação Dinâmica
Programação DinâmicaProgramação Dinâmica
Programação DinâmicaOrlando Junior
 
A Missa para não-católicos
A Missa para não-católicosA Missa para não-católicos
A Missa para não-católicosOrlando Junior
 
Aprendizado de Máquina Supervisionado na Predição de Links em Redes Complexas...
Aprendizado de Máquina Supervisionado na Predição de Links em Redes Complexas...Aprendizado de Máquina Supervisionado na Predição de Links em Redes Complexas...
Aprendizado de Máquina Supervisionado na Predição de Links em Redes Complexas...Orlando Junior
 
Sacramento da Penitência - Estrutura
Sacramento da Penitência - EstruturaSacramento da Penitência - Estrutura
Sacramento da Penitência - EstruturaOrlando Junior
 
Web Server Controls e Banco de Dados
Web Server Controls e Banco de DadosWeb Server Controls e Banco de Dados
Web Server Controls e Banco de DadosOrlando Junior
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosOrlando Junior
 
Acessando Dados com ADO .NET
Acessando Dados com ADO .NETAcessando Dados com ADO .NET
Acessando Dados com ADO .NETOrlando Junior
 
10 Mandamentos e Pecados Relacionados
10 Mandamentos e Pecados Relacionados10 Mandamentos e Pecados Relacionados
10 Mandamentos e Pecados RelacionadosOrlando Junior
 
Catequese da Missa Tridentina - Símbolos
Catequese da Missa Tridentina - SímbolosCatequese da Missa Tridentina - Símbolos
Catequese da Missa Tridentina - SímbolosOrlando Junior
 
Verbos da Língua Inglesa - Observações preliminares
Verbos da Língua Inglesa - Observações preliminaresVerbos da Língua Inglesa - Observações preliminares
Verbos da Língua Inglesa - Observações preliminaresOrlando Junior
 
Mineração em Fluxos Contínuos de Dados
Mineração em Fluxos Contínuos de DadosMineração em Fluxos Contínuos de Dados
Mineração em Fluxos Contínuos de DadosOrlando Junior
 

Mehr von Orlando Junior (20)

Árvores - Introdução e Conceitos Básicos
Árvores - Introdução e Conceitos BásicosÁrvores - Introdução e Conceitos Básicos
Árvores - Introdução e Conceitos Básicos
 
Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...
Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...
Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...
 
Predição de Links em Redes Complexas usando o Classificador Naïve Bayes
Predição de Links em Redes Complexas usando o Classificador Naïve BayesPredição de Links em Redes Complexas usando o Classificador Naïve Bayes
Predição de Links em Redes Complexas usando o Classificador Naïve Bayes
 
Predição de Fluxos em Redes de Computadores - SBRC/WP2P+ 2014
Predição de Fluxos em Redes de Computadores - SBRC/WP2P+ 2014Predição de Fluxos em Redes de Computadores - SBRC/WP2P+ 2014
Predição de Fluxos em Redes de Computadores - SBRC/WP2P+ 2014
 
Investigação de Predição de Fluxos em Redes de Computadores
Investigação de Predição de Fluxos em Redes de ComputadoresInvestigação de Predição de Fluxos em Redes de Computadores
Investigação de Predição de Fluxos em Redes de Computadores
 
Predição de Fluxos em Redes de Computadores
Predição de Fluxos em Redes de ComputadoresPredição de Fluxos em Redes de Computadores
Predição de Fluxos em Redes de Computadores
 
Normalização em banco de dados
Normalização em banco de dadosNormalização em banco de dados
Normalização em banco de dados
 
Introdução à Engenharia de Requisitos
Introdução à Engenharia de RequisitosIntrodução à Engenharia de Requisitos
Introdução à Engenharia de Requisitos
 
O que é direito
O que é direitoO que é direito
O que é direito
 
Programação Dinâmica
Programação DinâmicaProgramação Dinâmica
Programação Dinâmica
 
A Missa para não-católicos
A Missa para não-católicosA Missa para não-católicos
A Missa para não-católicos
 
Aprendizado de Máquina Supervisionado na Predição de Links em Redes Complexas...
Aprendizado de Máquina Supervisionado na Predição de Links em Redes Complexas...Aprendizado de Máquina Supervisionado na Predição de Links em Redes Complexas...
Aprendizado de Máquina Supervisionado na Predição de Links em Redes Complexas...
 
Sacramento da Penitência - Estrutura
Sacramento da Penitência - EstruturaSacramento da Penitência - Estrutura
Sacramento da Penitência - Estrutura
 
Web Server Controls e Banco de Dados
Web Server Controls e Banco de DadosWeb Server Controls e Banco de Dados
Web Server Controls e Banco de Dados
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Acessando Dados com ADO .NET
Acessando Dados com ADO .NETAcessando Dados com ADO .NET
Acessando Dados com ADO .NET
 
10 Mandamentos e Pecados Relacionados
10 Mandamentos e Pecados Relacionados10 Mandamentos e Pecados Relacionados
10 Mandamentos e Pecados Relacionados
 
Catequese da Missa Tridentina - Símbolos
Catequese da Missa Tridentina - SímbolosCatequese da Missa Tridentina - Símbolos
Catequese da Missa Tridentina - Símbolos
 
Verbos da Língua Inglesa - Observações preliminares
Verbos da Língua Inglesa - Observações preliminaresVerbos da Língua Inglesa - Observações preliminares
Verbos da Língua Inglesa - Observações preliminares
 
Mineração em Fluxos Contínuos de Dados
Mineração em Fluxos Contínuos de DadosMineração em Fluxos Contínuos de Dados
Mineração em Fluxos Contínuos de Dados
 

Problemas P e NP

  • 1. CENTRO UNIVERSITÁRIO DA FEI ORLANDO DA SILVA JUNIOR CLASSES DE PROBLEMAS P E NP São Bernardo do Campo 2010
  • 2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.