34.1-4


A questão consiste em dizer se o algoritmo de programação dinâmica feito na questão 16.2-2 para resolver o problema da mochila 0-1 onde os pesos são inteiros e a capacidade da mochila é também um inteiro dado W, algoritmo este de complexidade O(nW), é polinomial.


Resposta: não é polinomial.


Para ver isto, considere o tamanho da entrada:


Item da entrada

Tamanho

n

lg n

w(i), para i = 1, 2, ..., n

n . lg W'

c(i), para i = 1, 2, ..., n

n . lg C

W

lg W

Total

lg n + n . (lg W' + lg C) + lg W

Nota: aqui W' é o valor do maior peso e C o valor do maior custo.


Na complexidade O(nW), primeiro observamos que ela é na verdade Ө(nW), e depois vemos que, embora n seja polinomial no tamanho da entrada, o mesmo não ocorre com W, que pode ser exponencial no tamanho da entrada (a qual inclui apenas uma parcela lg W).