27.11.2012 Aufrufe

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Das Rucksack-Problem (8/8)<br />

Dynamische Programmierung in Java Pseudocode:<br />

public int dpKnapsack(int n, int c ) {// Aufruf: dpKnapsack(objekte.length,c)<br />

int[][] f = new int[2,n][0,c]; // Deklaration des Feldes (CAVE: Java-unüblich)<br />

// Initialisierung des Feldes für i = n<br />

for (int r = 0; r r ) f[n,r] = 0;<br />

else f[n,r] = objekte[n].wert();<br />

// Berechnung des Feldes für i = n-1,...,2<br />

for (int i = n-1; i >=2; i = i-1)<br />

for (int r = 0; r r ) f[i,r] = f[i+1,r];<br />

else f[i,r] = max( f[i+1,r], f[i+1, r- objekte[i].gewicht()]<br />

+objekte[i].wert() );<br />

// Berechne f[1,c] (den maximal erreichbaren Wert)<br />

if ( objekte[1].gewicht() > c ) return f[2,c];<br />

else return max( f[2,c], f[2, c-objekte[1].gewicht()] + objekte[1].wert() );<br />

}<br />

14/47

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!