więc myślałem,Formowanie algorytm programowania dynamicznego dla odmiany Knapsack problem
chciałem zrobić odmianę plecaka problem.
Wyobraź sobie oryginalny problem z przedmiotami o różnych masach/wartościach.
Moja wersja wraz z normalnymi wartościami/wartościami zawiera "grupę".
np. Pozycja1 [5 kg, $ 600, Elektroniczny] ITEM2 [1 kg, $ 50, żywność]
Teraz, mając komplet przedmiotów, takich jak to, w jaki sposób mogę zakodować się problemu plecakowego, aby upewnić się, że maksymalnie 1 sztukę z każda "grupa" jest wybrana.
Uwagi:
- Nie trzeba wybrać pozycję z tej grupy
- Istnieje wiele elementów w każdej grupie
- Ciągle minimalizuje wagę, wartość maksymalizacji
- ilość predefiniowanych grup wraz z ich wartościami.
Właśnie piszę szkic kodu na tym etapie, a ja wybrałem dynamiczne podejście. Rozumiem ideę dynamicznego rozwiązania problemu zwykłego plecaka, jak mogę zmienić to rozwiązanie, aby włączyć te "grupy"?
KnapSackVariation(v,w,g,n,W)
{
for (w = 0 to W)
V[0,w] = 0;
for(i = 1 to n)
for(w = 0 to W)
if(w[i] <= w)
V[i,w] = max{V[i-1, w], v[i] + V[i-1, w-w[i]]};
else
V[i,w] = V[i-1, w];
return V[n,W];
}
To, co mam tak daleko, trzeba dodać go tak, że będzie usunąć wszystkie odpowiednie elementy z grupy to jest w każdej chwili rozwiązuje to.
Dodaj element grupy do stanu! – quasiverse
Co z rozwiązaniem problemu optymalizacji kombinatorycznej? Dla każdej pozycji wybierasz przedmiot lub nie ma go. Aby go rozwiązać, możesz użyć wyszukiwania rozgałęzień i ograniczeń. – ysdx