55
Problema da Mochila Bianca de Almeida Dantas Marcio Osshiro

Apresentacao mochila - parte 1

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Apresentacao mochila - parte 1

Problema da Mochila Bianca de Almeida Dantas

Marcio Osshiro

Page 2: Apresentacao mochila - parte 1

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.

Page 3: Apresentacao mochila - parte 1

Aplicação

• Logística

• Criptografia

• Engenharia Naval

• Gerenciamento de Projetos

• Finanças

• Entre outras

Page 4: Apresentacao mochila - parte 1

• 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

Page 5: Apresentacao mochila - parte 1

Variações

• Problema da Mochila Limitada

• Problema da Mochila Ilimitada (UKP)

• Problema da Soma de Subconjuntos

• Problema da Mochila 0-1

Page 6: Apresentacao mochila - parte 1

• Problema da Mochila Limitada

Dados um conjunto N de n objetos com valores positivos pj, pesos wj, cada um tendo

bj 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:

Page 7: Apresentacao mochila - parte 1

• 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

Page 8: Apresentacao mochila - parte 1

• Problema da Soma de Sub-conjuntos

Dados um conjunto N de n objetos com pesos wj , e uma mochila de capacidade

inteira e positiva c, determine um vetor (x1 ,x2 , ..., xn),xj ∈{0, 1}, que satisfaça as

condições:

Este problema é um caso particular do 0-1KP em que wj = pj, ∀j ∈ N.

Page 9: Apresentacao mochila - parte 1

• 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,… , 𝑛

Page 10: Apresentacao mochila - parte 1

Pesquisas em busca de soluções Problema

da Mochila

Soluções Exatas

Aproximação Heurística

Branch and

Bound

Programação Dinâmica

Algoritmos Genéticos

Est

ud

os

Page 11: Apresentacao mochila - parte 1

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?

Page 12: Apresentacao mochila - parte 1

• 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.

Page 13: Apresentacao mochila - parte 1

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.

Page 14: Apresentacao mochila - parte 1

• 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.

Page 15: Apresentacao mochila - parte 1

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.

Page 16: Apresentacao mochila - parte 1

• 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.

Page 17: Apresentacao mochila - parte 1

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!!!!

Page 18: Apresentacao mochila - parte 1

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....

Page 19: Apresentacao mochila - parte 1

Objeto 1 2 3 4 5

Peso 2 3 4 5 9

Valor 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

Page 20: Apresentacao mochila - parte 1

• 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

Fórmula Recursiva com Subproblemas

{

Page 21: Apresentacao mochila - parte 1

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)

Page 22: Apresentacao mochila - parte 1

para c de 0 ate W faca F[0,w] = 0 fimpara para r de 1 ate n faca F[i,0] = 0 fimpara para 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 fimpara fimpara

Page 23: Apresentacao mochila - parte 1

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

Page 24: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0

1(8)

2(3)

3(6)

4(4)

5(2)

Page 25: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0

2(3) 0

3(6) 0

4(4) 0

5(2) 0

Page 26: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0

2(3) 0

3(6) 0

4(4) 0

5(2) 0

Page 27: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0

2(3) 0

3(6) 0

4(4) 0

5(2) 0

Page 28: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100

2(3) 0

3(6) 0

4(4) 0

5(2) 0

Page 29: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0

3(6) 0

4(4) 0

5(2) 0

Page 30: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60

3(6) 0

4(4) 0

5(2) 0

Page 31: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60

3(6) 0

4(4) 0

5(2) 0

Page 32: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0

4(4) 0

5(2) 0

Page 33: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60

4(4) 0

5(2) 0

Page 34: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60 70 70

4(4) 0

5(2) 0

Page 35: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60 70 70 100

4(4) 0

5(2) 0

Page 36: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60 70 70 100 130 130

4(4) 0

5(2) 0

Page 37: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60 70 70 100 130 130

4(4) 0 0 0 60

5(2) 0

Page 38: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60 70 70 100 130 130

4(4) 0 0 0 60 60 60 70

5(2) 0

Page 39: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60 70 70 100 130 130

4(4) 0 0 0 60 60 60 70 75

5(2) 0

Page 40: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60 70 70 100 130 130

4(4) 0 0 0 60 60 60 70 75 100 130 130

5(2) 0

Page 41: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60 70 70 100 130 130

4(4) 0 0 0 60 60 60 70 75 100 130 130

5(2) 0 0 15

Page 42: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60 70 70 100 130 130

4(4) 0 0 0 60 60 60 70 75 100 130 130

5(2) 0 0 15 60 60

Page 43: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60 70 70 100 130 130

4(4) 0 0 0 60 60 60 70 75 100 130 130

5(2) 0 0 15 60 60 75 75

Page 44: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60 70 70 100 130 130

4(4) 0 0 0 60 60 60 70 75 100 130 130

5(2) 0 0 15 60 60 75 75 75

Page 45: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60 70 70 100 130 130

4(4) 0 0 0 60 60 60 70 75 100 130 130

5(2) 0 0 15 60 60 75 75 75 100

Page 46: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60 70 70 100 130 130

4(4) 0 0 0 60 60 60 70 75 100 130 130

5(2) 0 0 15 60 60 75 75 75 100 130

Page 47: Apresentacao mochila - parte 1

0 1 2 3 4 5 6 7 8 9 10

0 0 0 0 0 0 0 0 0 0 0 0

1(8) 0 0 0 0 0 0 0 0 100 100 100

2(3) 0 0 0 60 60 60 60 60 100 100 100

3(6) 0 0 0 60 60 60 70 70 100 130 130

4(4) 0 0 0 60 60 60 70 75 100 130 130

5(2) 0 0 15 60 60 75 75 75 100 130 130

Page 48: Apresentacao mochila - parte 1

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.

Page 49: Apresentacao mochila - parte 1

Figura 11 – Divisão da matriz em faixas para cada processador.

Page 50: Apresentacao mochila - parte 1

• 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.

Page 51: Apresentacao mochila - parte 1

Figura 12 – Particionamento em blocos de m/p linhas.

• Problema: Baixo nível de paralelismo.

Page 52: Apresentacao mochila - parte 1

Figura 13 – Particionamento usando α = ½.

Page 53: Apresentacao mochila - parte 1
Page 54: Apresentacao mochila - parte 1

Código MPI

Page 55: Apresentacao mochila - parte 1

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/CSCE310J