Problema da MochilaBianca de Almeida DantasMarcio Osshiro
Objetivos• Apresentar o problema da mochila e suas  variantes.• Mostrar alternativas de solução para a variante  0-1.• Mos...
Aplicação•   Logística•   Criptografia•   Engenharia Naval•   Gerenciamento de Projetos•   Finanças•   Entre outras
• Suponha que um gerente de uma empresa possua no  seu orçamento c reais para investir em projetos  dentro do seu departam...
Variações• Problema da Mochila Limitada• Problema da Mochila Ilimitada (UKP)• Problema da Soma de Subconjuntos• Problema d...
• Problema da Mochila LimitadaDados um conjunto N de n objetos com valores positivos pj, pesos wj, cada um tendobj cópias,...
• Problema da Mochila Ilimitada   Dados um conjunto N de n objetos com valores positivos pj, pesos wj, e uma mochila   de ...
• Problema da Soma de Sub-conjuntosDados um conjunto N de n objetos com pesos wj , e uma mochila de capacidadeinteira e po...
• Problema da Mochila 0-1: ▫ Dados um conjunto N de n objetos com valores   positivos pj, pesos wj e uma mochila de capaci...
Pesquisas em busca de soluções                          Problema                             da                           ...
Problema da Mochila• Dados: ▫ uma mochila de compartimento único e com uma   capacidade máxima. ▫ conjunto de itens, cada ...
• Dois tipos:  ▫ Mochila 0-1: itens indivisíveis. Resolvido com    programação dinâmica.  ▫ Mochila fracionária: itens pod...
Programação Dinâmica• Utilizada quando o problema pode ser definido  recursivamente em termos de soluções para  subproblem...
• Ideias básicas:  ▫ Subestrutura ótima: a solução ótima para o    problema é construída a partir de soluções ótimas    pa...
Problema da Mochila 0-1• Também conhecido como problema da mochila  booleana.• Dado um valor inteiro W e os conjuntos:  ▫ ...
• Problema NP-completo.• Pode ser resolvido em O(nW) => solução  pseudo-polinomial.• Alternativas para solução exata: ▫ Fo...
Algoritmo Força-Bruta• Forma direta e ingênua para resolver o  problema.• Todas as combinações possíveis de itens são  ger...
Tentando definir um subproblema• Podemos considerar um subproblema definido  como: ▫ Sk = conjunto de itens numerados de 1...
Objeto    1        2       3            4             5 Peso     2        3       4            5             9Valor     3 ...
Fórmula Recursiva com Subproblemas• Devemos considerar outro parâmetro: o peso de  cada conjunto de subitens.• O subproble...
Algoritmo de Gilmore e Gomory• Primeiro algoritmo a usar DP para resolver o  problema da mochila 0-1.• Seja f(r, c) a solu...
para c de 0 ate W faca   F[0,w] = 0fimparapara r de 1 ate n faca   F[i,0] = 0fimparapara r de 1 ate n faca   para c de 0 a...
Exemplo• Sejam uma mochila de capacidade 10 e 5 objetos  com seus pesos e valores representados na  seguinte tabela: Objet...
0   1   2   3   4   5   6   7   8   9   10 01(8)2(3)3(6)4(4)5(2)
0   1   2   3   4   5   6   7   8   9   10 0     0   0   0   0   0   0   0   0   0   0   01(8)   02(3)   03(6)   04(4)   0...
0   1   2   3   4   5   6   7   8   9   10 0     0   0   0   0   0   0   0   0   0   0   01(8)   0   02(3)   03(6)   04(4)...
0   1   2   3   4   5   6   7   8   9   10 0     0   0   0   0   0   0   0   0   0   0   01(8)   0   0   0   0   0   0   0...
0   1   2   3   4   5   6   7   8     9   10 0     0   0   0   0   0   0   0   0   0     0   01(8)   0   0   0   0   0   0...
0   1   2   3   4   5   6   7   8     9     10 0     0   0   0   0   0   0   0   0   0     0     01(8)   0   0   0   0   0...
0   1   2   3    4   5   6   7   8     9     10 0     0   0   0   0    0   0   0   0   0     0     01(8)   0   0   0   0  ...
0   1   2   3    4    5    6    7    8     9     10 0     0   0   0   0    0    0    0    0    0     0     01(8)   0   0  ...
0   1   2   3    4    5    6    7    8     9     10 0     0   0   0   0    0    0    0    0    0     0     01(8)   0   0  ...
0   1   2   3    4    5    6    7    8     9     10 0     0   0   0   0    0    0    0    0    0     0     01(8)   0   0  ...
0   1   2   3    4    5    6    7    8     9     10 0     0   0   0   0    0    0    0    0    0     0     01(8)   0   0  ...
0   1   2   3    4    5    6    7    8     9     10 0     0   0   0   0    0    0    0    0    0     0     01(8)   0   0  ...
0   1   2   3    4    5    6    7    8     9     10 0     0   0   0   0    0    0    0    0    0     0     01(8)   0   0  ...
0   1   2   3    4    5    6    7    8     9     10 0     0   0   0   0    0    0    0    0    0     0     01(8)   0   0  ...
0   1   2   3    4    5    6    7    8     9     10 0     0   0   0   0    0    0    0    0    0     0     01(8)   0   0  ...
0   1   2   3    4    5    6    7    8     9     10 0     0   0   0   0    0    0    0    0    0     0     01(8)   0   0  ...
0   1   2   3    4    5    6    7    8     9     10 0     0   0   0   0    0    0    0    0    0     0     01(8)   0   0  ...
0   1   2    3    4    5    6    7    8     9     10 0     0   0   0    0    0    0    0    0    0     0     01(8)   0   0...
0   1   2    3    4    5    6    7    8     9     10 0     0   0   0    0    0    0    0    0    0     0     01(8)   0   0...
0   1   2    3    4    5    6    7    8     9     10 0     0   0   0    0    0    0    0    0    0     0     01(8)   0   0...
0   1   2    3    4    5    6    7    8     9     10 0     0   0   0    0    0    0    0    0    0     0     01(8)   0   0...
0   1   2    3    4    5    6    7    8     9     10 0     0   0   0    0    0    0    0    0    0     0     01(8)   0   0...
0   1   2    3    4    5    6    7    8     9     10 0     0   0   0    0    0    0    0    0    0     0     01(8)   0   0...
0   1   2    3    4    5    6    7    8     9     10 0     0   0   0    0    0    0    0    0    0     0      01(8)   0   ...
Algoritmo Wavefront• Algoritmo paralelo utilizando programação  dinâmica.• Segue o modelo de programação BSP/CGM.• Conside...
Figura 11 – Divisão da matriz em faixas para cada processador.
• Comunicação wavefront ou sistólica.• Cada processador se comunica com, no máximo,  dois processadores.• Problema: Proces...
Figura 12 – Particionamento em blocos de m/p linhas.• Problema: Baixo nível de paralelismo.
Figura 13 – Particionamento usando α = ½.
Código MPI
Referências• Cáceres, E.N.; Nishibe, C. 0-1 Knapsack  Problem:      BSP/CGM      Algorithm    and  Implementation. Proc of...
Apresentacao mochila - parte 1
Próximos SlideShares
Carregando em…5
×

Apresentacao mochila - parte 1

6.079 visualizações

Publicada em

Apresentação realizada no curso de Doutorado em Ciência da Computação da UFMS.

Publicada em: Educação
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
6.079
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.493
Ações
Compartilhamentos
0
Downloads
91
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apresentacao mochila - parte 1

  1. 1. Problema da MochilaBianca de Almeida DantasMarcio Osshiro
  2. 2. Objetivos• Apresentar o problema da mochila e suas variantes.• Mostrar alternativas de solução para a variante 0-1.• Mostrar o funcionamento de um código MPI para o problema.• Abordagem utilizando CUDA.
  3. 3. Aplicação• Logística• Criptografia• Engenharia Naval• Gerenciamento de Projetos• Finanças• Entre outras
  4. 4. • Suponha que um gerente de uma empresa possua no seu orçamento c reais para investir em projetos dentro do seu departamento. Após uma pesquisa realizada por sua equipe, o gerente recebe um relatório com n diferentes projetos que trariam reduções de custo ou aumento de produtividade ao departamento como um todo. Associado a cada projeto j existe um retorno de pj reais e um custo para sua realização de cj reais. O gerente pode encontrar uma distribuição ótima de seu orçamento resolvendo um problema da mochila binária
  5. 5. Variações• Problema da Mochila Limitada• Problema da Mochila Ilimitada (UKP)• Problema da Soma de Subconjuntos• Problema da Mochila 0-1
  6. 6. • Problema da Mochila LimitadaDados um conjunto N de n objetos com valores positivos pj, pesos wj, cada um tendobj cópias, e uma mochila de capacidade inteira e positiva c, determine um vetor (x1,x2, ..., xn), 0 ≤ xj ≤ bj ∈N, que satisfaça as condições:
  7. 7. • Problema da Mochila Ilimitada Dados um conjunto N de n objetos com valores positivos pj, pesos wj, e uma mochila de capacidade inteira e positiva c, determine um vetor (x1, x2, ..., xn), xj ∈N, que satisfaça as condições:Este problema é uma generalização do Problema da Mochila Limitada no qual bj = ∞, ∀j ∈ N
  8. 8. • Problema da Soma de Sub-conjuntosDados um conjunto N de n objetos com pesos wj , e uma mochila de capacidadeinteira e positiva c, determine um vetor (x1 ,x2 , ..., xn),xj ∈{0, 1}, que satisfaça ascondições:Este problema é um caso particular do 0-1KP em que wj = pj, ∀j ∈ N.
  9. 9. • Problema da Mochila 0-1: ▫ Dados um conjunto N de n objetos com valores positivos pj, pesos wj e uma mochila de capacidade inteira e positiva c, determine um vetor (x1, x2, ..., xn que encontre: 𝑛 𝑚𝑎𝑥 𝑝 𝑗 𝑥𝑗 𝑗=1 𝑛 Respeitando as condições 𝑗=1 𝑤𝑗 𝑥 𝑗 ≤ 𝑐 e 𝑥 𝑗 ∈ 0, 1 , 𝑗 = 1, … , 𝑛
  10. 10. Pesquisas em busca de soluções Problema da Mochila Aproximação HeurísticaEstudos Soluções Exatas Branch and Programação Algoritmos Bound Dinâmica Genéticos
  11. 11. Problema da Mochila• Dados: ▫ uma mochila de compartimento único e com uma capacidade máxima. ▫ conjunto de itens, cada qual com um peso e um valor associados.• Quais itens podem ser carregados na mochila sem exceder sua capacidade e maximizando o valor a ser carregado?
  12. 12. • Dois tipos: ▫ Mochila 0-1: itens indivisíveis. Resolvido com programação dinâmica. ▫ Mochila fracionária: itens podem ser divididos. Resolvido com uma estratégia gulosa.
  13. 13. Programação Dinâmica• Utilizada quando o problema pode ser definido recursivamente em termos de soluções para subproblemas menores (subestrutura ótima).• Deve-se encontrar e armazenar soluções para os subproblemas e, então, utilizá-las na solução de problemas maiores.• Mais eficiente do que soluções que utilizam estratégias de força-bruta.
  14. 14. • Ideias básicas: ▫ Subestrutura ótima: a solução ótima para o problema é construída a partir de soluções ótimas para os subproblemas. ▫ Subproblemas “overlapping”: poucos subproblemas com muitas instâncias recorrentes de cada. ▫ Construção de uma tabela com as “subsoluções” usada para solucionar os problemas maiores.
  15. 15. Problema da Mochila 0-1• Também conhecido como problema da mochila booleana.• Dado um valor inteiro W e os conjuntos: ▫ S = {1, 2, 3, ..., n} ▫ W = {w1, w2, w3, ..., wn} ▫ V = {v1, v2, v3, ..., vn}• onde W é a capacidade da mochila, S é um conjunto de objetos, W é o conjunto dos pesos de tais objetos e V é o conjunto de seus valores. Devemos encontrar quais os itens de S devem ser colocados na mochila visando maximizar o valor carregado, sem exceder a capacidade da mochila.
  16. 16. • Problema NP-completo.• Pode ser resolvido em O(nW) => solução pseudo-polinomial.• Alternativas para solução exata: ▫ Força-bruta. ▫ Programação dinâmica (DP): melhor comportamento quando os parâmetros são correlacionados. ▫ Branch-and-bound (B&B): mais eficiente quando os valores de w e v são indepentemente gerados.
  17. 17. Algoritmo Força-Bruta• Forma direta e ingênua para resolver o problema.• Todas as combinações possíveis de itens são geradas. A combinação com o maior valor e que caiba na mochila será a solução ótima.• Com n itens => 2n possíveis combinações.• Complexidade: 0(2n) Algoritmo exponencial. Muito caro!!!!
  18. 18. Tentando definir um subproblema• Podemos considerar um subproblema definido como: ▫ Sk = conjunto de itens numerados de 1 a k, onde 1<=k<=n.• É possível encontrar a solução final Sn em termos dos subproblemas Sk? A resposta é não....
  19. 19. Objeto 1 2 3 4 5 Peso 2 3 4 5 9Valor 3 4 5 8 10 S4 = {1, 2, 3, 4} => Peso total: 14 e Valor: 20 S5 = {1, 3, 4, 5} => Peso total: 20 e Valor: 26 S4 não faz parte da solução de S5
  20. 20. Fórmula Recursiva com Subproblemas• Devemos considerar outro parâmetro: o peso de cada conjunto de subitens.• O subproblema consiste em computar f(r, c): { ▫ f(r, c) = f(r-1, c), se wr > W f(r, c) = max{f(r-1, c), f(r-1, c-wr) + vr}• A melhor solução Sr com peso c é: ▫ a melhor solução Sr-1 com peso c, ou ▫ a melhor solução Sr-1 com peso c-wr mais o valor do item r
  21. 21. Algoritmo de Gilmore e Gomory• Primeiro algoritmo a usar DP para resolver o problema da mochila 0-1.• Seja f(r, c) a solução ótima considerando o conjunto de objetos [1, r] e o peso c., com 1<=r<=n e 0<=c<=W. A solução ótima para o problema será f(n, W).• A relação de recorrência para solução: ▫ f(r, c) = max{f(r-1, c), f(r-1, c-wr) + vr}• Tempo: O(nW)
  22. 22. para c de 0 ate W faca F[0,w] = 0fimparapara r de 1 ate n faca F[i,0] = 0fimparapara r de 1 ate n faca para c de 0 ate W faca se (wi <= W) entao// item i can be part of the solution se (F[r-1,c-wi] + vr > F[r-1,c]) entao F[r,c] = F[r-1,c-wi] + vr senao F[r,c] = F[r-1,c] fimse else F[r,c] = F[r-1,c] // wi > W fimse fimparafimpara
  23. 23. Exemplo• Sejam uma mochila de capacidade 10 e 5 objetos com seus pesos e valores representados na seguinte tabela: Objeto 1 2 3 4 5 Peso 8 3 6 4 2 Valor 100 60 70 15 15
  24. 24. 0 1 2 3 4 5 6 7 8 9 10 01(8)2(3)3(6)4(4)5(2)
  25. 25. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 02(3) 03(6) 04(4) 05(2) 0
  26. 26. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 02(3) 03(6) 04(4) 05(2) 0
  27. 27. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 02(3) 03(6) 04(4) 05(2) 0
  28. 28. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 1002(3) 03(6) 04(4) 05(2) 0
  29. 29. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 03(6) 04(4) 05(2) 0
  30. 30. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 603(6) 04(4) 05(2) 0
  31. 31. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 603(6) 04(4) 05(2) 0
  32. 32. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 04(4) 05(2) 0
  33. 33. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 604(4) 05(2) 0
  34. 34. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 60 70 704(4) 05(2) 0
  35. 35. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 60 70 70 1004(4) 05(2) 0
  36. 36. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 60 70 70 100 130 1304(4) 05(2) 0
  37. 37. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 60 70 70 100 130 1304(4) 0 0 0 605(2) 0
  38. 38. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 60 70 70 100 130 1304(4) 0 0 0 60 60 60 705(2) 0
  39. 39. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 60 70 70 100 130 1304(4) 0 0 0 60 60 60 70 755(2) 0
  40. 40. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 60 70 70 100 130 1304(4) 0 0 0 60 60 60 70 75 100 130 1305(2) 0
  41. 41. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 60 70 70 100 130 1304(4) 0 0 0 60 60 60 70 75 100 130 1305(2) 0 0 15
  42. 42. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 60 70 70 100 130 1304(4) 0 0 0 60 60 60 70 75 100 130 1305(2) 0 0 15 60 60
  43. 43. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 60 70 70 100 130 1304(4) 0 0 0 60 60 60 70 75 100 130 1305(2) 0 0 15 60 60 75 75
  44. 44. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 60 70 70 100 130 1304(4) 0 0 0 60 60 60 70 75 100 130 1305(2) 0 0 15 60 60 75 75 75
  45. 45. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 60 70 70 100 130 1304(4) 0 0 0 60 60 60 70 75 100 130 1305(2) 0 0 15 60 60 75 75 75 100
  46. 46. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 60 70 70 100 130 1304(4) 0 0 0 60 60 60 70 75 100 130 1305(2) 0 0 15 60 60 75 75 75 100 130
  47. 47. 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 01(8) 0 0 0 0 0 0 0 0 100 100 1002(3) 0 0 0 60 60 60 60 60 100 100 1003(6) 0 0 0 60 60 60 70 70 100 130 1304(4) 0 0 0 60 60 60 70 75 100 130 1305(2) 0 0 15 60 60 75 75 75 100 130 130
  48. 48. Algoritmo Wavefront• Algoritmo paralelo utilizando programação dinâmica.• Segue o modelo de programação BSP/CGM.• Considerando n itens, capacidade W e p processadores: ▫ O(p) rodadas de comunicação ▫ O(W n/p) de computação• O vetor de pesos é replicado para todos os processadores.• O vetor v é dividido em p partes.
  49. 49. Figura 11 – Divisão da matriz em faixas para cada processador.
  50. 50. • Comunicação wavefront ou sistólica.• Cada processador se comunica com, no máximo, dois processadores.• Problema: Processador Pi precisa de informação do processador Pi-1 para calcular sua primeira coluna.• Solução: Particionar as submatrizes dos processadores em blocos.
  51. 51. Figura 12 – Particionamento em blocos de m/p linhas.• Problema: Baixo nível de paralelismo.
  52. 52. Figura 13 – Particionamento usando α = ½.
  53. 53. Código MPI
  54. 54. Referências• Cáceres, E.N.; Nishibe, C. 0-1 Knapsack Problem: BSP/CGM Algorithm and Implementation. Proc of the 17th IASTED International Conference on Parallel and Distributed Computing and Systems (PDCS 2005), pp. 331-335, 2005.• http://www.cse.unl.edu/~goddard/Courses/CS CE310J

×