problema da mochila – sem repetição de objetos profa. sandra de amo bcc-ufu
Post on 07-Apr-2016
240 Views
Preview:
TRANSCRIPT
Problema da Mochila – sem repetição de objetos
Profa. Sandra de AmoBCC-UFU
Ideia
Mochila: 10 kg
Item Peso Valor
1 6 30
2 3 14
3 4 16
4 2 9
Começa no último item : 4 Seu peso é ≤ 10 ? Se Sim: Tenho duas opções: 1. Coloco o item na mochila :
subproblema a resolver K(10-2, 3) 2. Não coloco o item na mochila subproblema a resolver K(10,3) Resultado = max{K(10-2,3) + 9, K(10,3) } Se Não: subproblema a resolver K(10,3) Resultado = resultado de K(10,3)
Problema a resolver K(10,4)
Algoritmo
Complexidade = O(nW)
Algoritmo não é polinomial em W !
Algoritmo é EXPONENCIAL em W, pois a complexidade é medidaem relação ao tamanho da representação da grandeza !
1. For j = 0,...,n 2. K(0,j) = 0, L(0,j) = [ ] 3. For w = 0,...,W4. K(w,0) = 0, L(0,j) = [ ]5. For j = 1 ... n6. For w = 1, ..., W7. If wj > w: K(w,j) = K(w,j-1)8. else: 9. K(w,j) = max {K(w-wi,j-1) + vi, K(w,j-1)}10. x = arg K(w,j)11. L(w,j) = insert(i, L(x)) 12.Retorna L(W)
Valores 30 14 16 9
Pesos 6 3 4 2
0 1 2 3 40 0/[] 0/[] 0/[] 0/[] 0/[]
1 0/[] 0/[] 0/[] 0/[] 0/[]
2 0/[] 0/[] 0/[] 0/[] 9/[4]
3 0/[] 0/[] 14/[2] 14/[2] 14/[2]
4 0/[] 0/[] 14/[2] 16/[3] 16/[3]
5 0/[] 0/[] 14/[2] 16/[3] 23/[2,4]
6 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
7 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
8 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
9 0/[] 30/[1] 44/[1,2] 44/[1,2] 44/[1,2]
10 0/[] 30/[1] 44/[1,2] 46/[1,3] 46/[1.3]
Resultado da execução do algoritmo:
Valores 30 14 16 9
Pesos 6 3 4 2
0 1 2 3 40 0/[] 0/[] 0/[] 0/[] 0/[]
1 0/[] 0/[] 0/[] 0/[] 0/[]
2 0/[] 0/[] 0/[] 0/[] 9/[4]
3 0/[] 0/[] 14/[2] 14/[2] 14/[2]
4 0/[] 0/[] 14/[2] 16/[3] 16/[3]
5 0/[] 0/[] 14/[2] 16/[3] 23/[2,4]
6 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
7 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
8 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
9 0/[] 30/[1] 44/[1,2] 44/[1,2] 44/[1,2]
10 0/[] 30/[1] 44/[1,2] 46/[1,3] 46/[1.3]
EXPLICANDO O VALOR 14/[2] da posição (3,2)
Valores 30 14 16 9
Pesos 6 3 4 2
0 1 2 3 40 0/[] 0/[] 0/[] 0/[] 0/[]
1 0/[] 0/[] 0/[] 0/[] 0/[]
2 0/[] 0/[] 0/[] 0/[] 9/[4]
3 0/[] 0/[] 14/[2] 14/[2] 14/[2]
4 0/[] 0/[] 14/[2] 16/[3] 16/[3]5 0/[] 0/[] 14/[2] 16/[3] 23/[2,4]
6 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
7 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
8 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
9 0/[] 30/[1] 44/[1,2] 44/[1,2] 44/[1,2]
10 0/[] 30/[1] 44/[1,2] 46/[1,3] 46/[1.3]
Valores 30 14 16 9
Pesos 6 3 4 2
0 1 2 3 40 0/[] 0/[] 0/[] 0/[] 0/[]
1 0/[] 0/[] 0/[] 0/[] 0/[]
2 0/[] 0/[] 0/[] 0/[] 9/[4]
3 0/[] 0/[] 14/[2] 14/[2] 14/[2]4 0/[] 0/[] 14/[2] 16/[3] 16/[3]
5 0/[] 0/[] 14/[2] 16/[3] 23/[2,4]
6 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
7 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
8 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
9 0/[] 30/[1] 44/[1,2] 44/[1,2] 44/[1,2]
10 0/[] 30/[1] 44/[1,2] 46/[1,3] 46/[1.3]
Valores 30 14 16 9
Pesos 6 3 4 2
0 1 2 3 40 0/[] 0/[] 0/[] 0/[] 0/[]
1 0/[] 0/[] 0/[] 0/[] 0/[]
2 0/[] 0/[] 0/[] 0/[] 9/[4]
3 0/[] 0/[] 14/[2] 14/[2] 14/[2]4 0/[] 0/[] 14/[2] 16/[3] 16/[3]
5 0/[] 0/[] 14/[2] 16/[3] 23/[2,4]
6 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
7 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
8 0/[] 30/[1] 30/[1] 30/[1] 30/[1]
9 0/[] 30/[1] 44/[1,2] 44/[1,2] 44/[1,2]
10 0/[] 30/[1] 44/[1,2] 46/[1,3] 46/[1.3]
Valor = 0 + 14
top related