Professional Documents
Culture Documents
Campinas
26 de maio de 2015.
Campinas
26 de maio de 2015.
Resumo:
Neste projeto foi feita uma pesquisa sobre a classe de algoritmos NP. Mostramos
tambm suas subclasses e possveis solues para problemas dessa classe.
Aps o desenvolvimento apresentamos um exemplo prtico de problema dessa classe
e sua resoluo.
Abstract:
In this project a research about the algorithm class NP was made. We also show its
subclasses and possible solutions for problems of this class.
After the discussion we show a practical example of a problem from this class and
your resolution.
Sumrio:
1 Introduo.................................................................................................................... 5
2 Objetivo........................................................................................................................ 6
3 Desenvolvimento.......................................................................................................... 6
3.1 Classe de algoritmos e suas sub-classes ............................................................. 6
3.1.1 Classe NP................................................................................................................. 6
3.1.2 Classe P.................................................................................................................... 7
3.1.3 NP-Completo........................................................................................................... 7
3.1.4 Solues de Problemas NP-completos.................................................................... 8
3.1.5 NP-Difcil................................................................................................................ 8
3.1.6 Solues de Problemas NP-difceis....................................................................... 8
3.2 Exemplo prtico de problema: Problema da Mochila .................................... 9
3.2.1 Pseudocdigo para a resoluo do Problema da Mochila ............................ 10
4 Concluso................................................................................................................... 11
5 Referncia bibliogrficas.......................................................................................... 11
1 Introduo:
A complexidade computacional um ramo da teoria da computao em cincia da
computao terica e matemtica que estuda a eficincia dos algoritmos se concentra em
classificar problemas computacionais de acordo com sua dificuldade inerente, e relacionar
essas classes entre si.
Entre os problemas esto:
fcil entender que a classe NP inclui a classe P, ou seja, que todo problema
polinomial polinomialmente verificvel. O bom senso sugere que P apenas uma pequena
parte de NP. Surpreendentemente, ningum encontrou ainda um problema de NP que no
esteja em P, isto , um problema polinomialmente verificvel para o qual no existe algoritmo
polinomial.
Neste projeto pesquisaremos sobre a classe NP e suas sub-classes, apresentando uma
explicao sobre a classe e um exemplo prtico de problema e sua resoluo.
2 Objetivo:
Pesquisar sobre a classe de algoritmos NP e suas subclasses. Com o estudo, mostrar
possveis solues. E por fim, mostrar um exemplo prtico.
3 Desenvolvimento:
3.1 Classes de algoritmos e suas sub-classes:
3.1.1 Classe NP:
A classe NP consiste dos algoritmos no-determinsticos polinomiais, e recebe este
nome devido a uma formulao equivalente que no usa o conceito de certificao, mas o de
deciso de linguagens. As categorias de linguagens usadas nessa deciso so as reconhecidas
pelas maquinas de Turing. Essa mquina um modelo abstrato de computador, restringida
apenas aos aspectos lgicos de funcionamento.
Problemas NP-completos so os problemas mais difceis no conjunto NP. Um
problema de deciso L NP-Completo se:
1) L est em NP (Qualquer soluo dada para problemas NP-completos podem ser
verificadas rapidamente, mas no h nenhuma soluo eficiente conhecida).
2) Todos os problemas em NP redutvel a L em tempo.
Um problema NP-difcil se segue propriedade 2 mencionada acima, no precisa
seguir propriedade 1. Portanto, o conjunto NP-completo tambm um subconjunto do
conjunto NP-difcil.
3.1.2 Classe P:
A classe P, subconjunto da classe NP, o conjunto de todos os problemas que podem
ser resolvidos por algoritmos determinsticos em tempo polinomial; em outras palavras, a
classe complexa P abrange todas as solues para os problemas que podem ser resolvidos e
so considerados tratveis.
Exemplos de problemas da classe P: ordenao caminhos mais curtos em um grafo;
rvore geradora de peso mnimo; fluxo mximo; programao linear.
3.1.3 NP-Completo:
o subconjunto dos problemas NP de tal modo que todo problema em NP se pode
reduzir, com uma reduo de tempo polinomial, a um dos problemas NP-completo.
Os problemas NP-completos o subconjunto dos "mais difceis" problemas nodeterminsticos polinomiais.
A partir da definio de NP-completos, parece impossvel provar que um problema L
NP-completo. Por definio, isso nos requere mostrar que todos os problemas em NP so
tempos polinomiais redutveis a L. Felizmente, h uma maneira alternativa para provar isso. A
Em particular, um estudo dos padres de inputs que ocorrem com mais frequncia
pode levar a escolha de um algoritmo que se comporte melhor para esses inputs.
3.1.5 NP-Difcil:
Est entre o conjunto dos problemas NP, tambm chamado NP-hard ou NP-complexo.
So to difceis quanto os problemas mais difceis em NP e podem ser de qualquer tipo como
de problemas de deciso, problemas de pesquisa ou problemas de otimizao.
Um problema A pertence a classe NP-Difcil se existe um problema B NPCompleto que pode ser transformado em A em tempo polinomial.
3.1.6 Solues de Problemas NP-difceis:
Fonte: http://pt.wikipedia.org/wiki/Ficheiro:Knapsack.svg
Por exemplo: na figura acima temos uma mochila com peso mximo de 15Kg e cinco
itens de peso e valor diferentes. Quais itens devero ser escolhidos para que o valor total seja
o maior possvel respeitando o peso mximo?
Para a soluo desse problema existem vrias formas como: programao dinmica,
algoritmo guloso e meta-heurstica. Porem as duas ltimas citadas so utilizadas para solues
aproximadas. Nesse projeto vamos apresentar uma forma de resoluo que obtm uma
soluo exata, a programao dinmica.
A soluo por programao dinmica utiliza uma forma aprimorada da recursividade
de modo que garante que uma funo no seja executada vrias vezes; assim ocorre a
armazenagem dos dados j calculados, geralmente em uma matriz para que seja evitado
reclculos, possibilitando que estes possam ser usados na resoluo dos problemas seguintes.
Geralmente fazemos o uso de variveis do tipo integer, uma para o nmero de itens
que sero trabalhados, outra para o peso mximo da mochila, e dois vetores, um para
armazenar em casa posio pesos dos itens e outro vetor para os valores. Uma tabela
(quantidades de itens/ peso mximo da mochila) montada. O maior valor possvel sempre
estar na ltima linha e coluna da matriz.
O tempo do algoritmo proporcional ao tamanho da tabela, ou seja, quanto maior o
nmero de itens trabalhados/ou peso mximo da mochila, maior o consumo de tempo do
algoritmo.
3.2.1 Pseudocdigo para a resoluo do Problema da Mochila:
int pesos[]
int valores[]
int tabela_resultados[][]
int itens
int peso_maximo
Para y de 0 at peso_maximo
Tabela_resultados[0][y] = 0
Para i de 1 at itens
A = tabela_resultado[i-1][y]
Se pesos[i] > y
B=0
Seno
B = tabela_resultado[i - 1][y pesos[i]] + valores[i]
Se A > B
Tabela_resultado[i][y] = a
Seno
B = tabela_resultado[i][y] = b
Retorne tabela_resultados[itens][peso_maximo]
4 Concluso:
Pela observao dos aspectos analisados conclumos que algoritmos NP podem possuir
possveis solues caso no sejam algoritmos NP intratveis. Alm de analisar as subclasses
diferentes da classe de algoritmo, observamos o exemplo do Problema da Mochila em que
foi apresentado acima, resolvido por programao dinmica, que mais exata.
5 Referncias bibliogrficas:
Disponvel em: <http://pt.wikipedia.org/wiki/Complexidade_computacional> Acesso em: 18
Maio 2015
Disponvel em: <http://www.dm.ufscar.br/hp/hp501/hp501001/hp501001.html> Acesso em:
18 Maio 2015
Disponvel em: <http://pt.wikipedia.org/wiki/M%C3%A1quina_de_Turing> Acesso em: 18
Maio 2015
Disponvel em: <http://www.ime.usp.br/~pf/analise_de_algoritmos/aulas/NPcompleto.html>
Acesso em: 18 Maio 2015
Disponvel em: < http://pt.slideshare.net/OnOSJunior/trabalho-pnp > Acesso em: 18 Maio
2015