Solução de programação dinâmica para seleção de atividades
No16.1 An activity-selection problem
doIntroduction to Algorithm
, a solução de programação dinâmica para esse problema foi fornecida como
c [i, j] = 0 se S (i, j) estiver vazio
c [i, j] = max {c [i, k] + c [k, j] + 1} se S (i, j) não estiver vazio
OndeS(i, j)
denota o conjunto de atividades que iniciam após a atividadea(i)
termina e que termina antes da atividadea(j)
começa ec[i, j]
denota o tamanho de uma solução ideal para o conjuntoS(i, j)
No entanto, estou pensando em outra solução mais simples
c[i] = max { c[i - 1], c[f(i)] + 1 }
Ondef(i)
fornece a atividade que é compatível coma(i)
e tem o maxterminar a hora e termina antesa(i)
começa.
Isso vai funcionar? Se sim, por que o autor fornece essa solução complexa. Se não, o que estou perdendo?