B
blubbiblubb
Gast
Hallo.
Aufgabe:
In der Vorlesung wurde ein Algorithmus vorgestellt, der das Rucksackproblem löst. Genauer löst der
vorgestellte Algorithmus allerdings nur die Optimierungsversion, da lediglich der Profit einer optimalen
Packung berechnet wird, aber keine Menge von Gegenständen mit diesem optimalen Profit. Erweitern
Sie den Algorithmus derart, dass nicht nur der optimale Profit, sondern auch eine dazu passende Auswahl
von Gegenständen ermittelt wird. Implementieren Sie den erweiterten Algorithmus und testen Sie ihn mit
geeigneten Beispielen.
Ich habe leider keine Idee, wie ich das Umsetzen kann und hoffe, dass ihr mir vielleicht ein wenig dabei helfen könntet.
Aufgabe:
In der Vorlesung wurde ein Algorithmus vorgestellt, der das Rucksackproblem löst. Genauer löst der
vorgestellte Algorithmus allerdings nur die Optimierungsversion, da lediglich der Profit einer optimalen
Packung berechnet wird, aber keine Menge von Gegenständen mit diesem optimalen Profit. Erweitern
Sie den Algorithmus derart, dass nicht nur der optimale Profit, sondern auch eine dazu passende Auswahl
von Gegenständen ermittelt wird. Implementieren Sie den erweiterten Algorithmus und testen Sie ihn mit
geeigneten Beispielen.
Code:
int P[] = new int[n];
int w[] = new int[n];
//Eingabe...
...
//Alg:
int s = 0;
for(int i = 0;i <= n-1; i++)
s = s + P[i];
//Initialisieren, A[0][.]
int A[][] = new int[n][s+1];
for(int t = 0;t <= s; t++){
if (P[0] != t)
A[0][t] = B + 1;
else
A[0][t] = w[0];
}
A[0][0] = 0;
//Berechnung der Werte A[1][.], A[2][.],...,A[n-1][.]
for(int t = 0;t <= s; t++){
if (t < P[i])
A[i][t] = A[i-1][t];
else if (A[i-1][t] <= A[i-1][t-P[i]] + w[i])
A[i][t] = A[i-1][t];
else
A[i][t] = A[i-1][t-P[i]] + w[i];
}
}
//Bestimme max j mit A[ne-1][j] B
int j = 0;
for(int t = 1;t <= s; t++){
if (A[n-1][t] <= B){
j = t;
}
}
Ich habe leider keine Idee, wie ich das Umsetzen kann und hoffe, dass ihr mir vielleicht ein wenig dabei helfen könntet.