www.matheraum.de
Das Matheforum.
Das Matheforum des MatheRaum.

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenAlgorithmen und Datenstrukturendynamische Programmierung
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Deutsch • Englisch • Französisch • Latein • Spanisch • Russisch • Griechisch
Forum "Algorithmen und Datenstrukturen" - dynamische Programmierung
dynamische Programmierung < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

dynamische Programmierung: 0/1-Rucksack-Problem
Status: (Frage) beantwortet Status 
Datum: 22:22 Sa 01.10.2005
Autor: Karl_Pech

Hallo Zusammen,


Ich versuche gerade den dynamischen Lösungsansatz für das 0/1-Rucksack-Problem zu begreifen. Ich lese da z.B. Folgendes:


Developing a DP Algorithm for Knapsack:


Step 2: Recursively define the value of an optimal solution in terms of solutions to smaller problems.

Initial Settings: Set

[mm]\begin{array}{lll} \textcolor{red}{V[0,w]:=0}&\texttt{for }\textcolor{blue}{0\leqslant w\leqslant W},&\texttt{no item}\\ V[i,w] := -\infty&\texttt{for }w< 0,&\texttt{illegal} \end{array}[/mm]

Recursive Step: Use

[mm]\textcolor{red}{V[i,w]:=\max\left\{V[i-1,w],v_i+V\left[i-1,w-w_i\right]\right\}}[/mm] for [mm]\textcolor{blue}{1\leqslant i\leqslant n,\ 0\leqslant w\leqslant W}[/mm].


Die Anfangsbedingungen leuchten sofort ein (ein leerer Rucksack ist nichts Wert ;-)). Schwieriger wird es schon bei der rekursiven Definition. Wie kann man sich das informell vorstellen? Ich schreibe jetzt mal, was ich so bisher nachvollziehen konnte:


Wir haben unseren Rucksack bisher also optimal mit den Gegenständen [mm] $1,\dotsc,i-1$ [/mm] gefüllt, und der Rucksack wiegt $w$. Jetzt wollen wir noch einen Gegenstand reintun. Jetzt kann zweierlei passieren:


(1) Der Rucksack droht zu reisen. -> Die vorige Rucksack-Belegung mit $i-1$ Gegenständen beim gleichen(!?) Gewicht $w$ ist optimal.

(2) Der Rucksack droht nicht zu reisen. -> Dann hat unser Rucksack an Wert [mm] $v_i$ [/mm] des [mm]i\texttt{-ten}[/mm] Gegenstandes zugelegt. Der Rucksack ist aber auch schwerer geworden. Was bedeutet dann [mm] $w-w_i$? [/mm]


Danke!



Viele Grüße
Karl



        
Bezug
dynamische Programmierung: Antwort
Status: (Antwort) fertig Status 
Datum: 13:12 So 02.10.2005
Autor: Frank05


> Die Anfangsbedingungen leuchten sofort ein (ein leerer
> Rucksack ist nichts Wert ;-)). Schwieriger wird es schon
> bei der rekursiven Definition. Wie kann man sich das
> informell vorstellen? Ich schreibe jetzt mal, was ich so
> bisher nachvollziehen konnte:
>  
> Wir haben unseren Rucksack bisher also optimal mit den
> Gegenständen [mm]1,\dotsc,i-1[/mm] gefüllt, und der Rucksack wiegt
> [mm]w[/mm].

Wichtig ist auch, dass du dir klar machst, dass der Rucksack zu diesem Zeitpunkt nicht unbedingt alle $i-1$ Gegenstaende beinhaltet, sondern nur eine Teilmenge dieser.

> Jetzt wollen wir noch einen Gegenstand reintun. Jetzt
> kann zweierlei passieren:
>  
> (1) Der Rucksack droht zu reisen. -> Die vorige
> Rucksack-Belegung mit [mm]i-1[/mm] Gegenständen beim gleichen(!??)
> Gewicht [mm]w[/mm] ist optimal.

Wir bilden ein Maximum aus 2 Faellen. Diese beiden Faelle entsprechen anschaulich, ob wir nun den Gegenstand $i$ in den Rucksack packen oder eben nicht.

Fall 1 - Wir lassen den Gegenstand draussen:
$V[i-1,w]$ ist der optimale Zustand des Rucksacks bevor wir den Gegenstand $i$ betrachtet haben. Dabei gibt $w$ das Maximalgewicht an, das im Rucksack Platz hat. Da wir gegenueber der Betrachtung des Gegenstands $i-1$ nichts aendern kann dieser Wert unveraendern uebernommen werden. Der Wert der Gegenstaende ist gleich und auch das Maximalgewicht bleibt erhalten.

> (2) Der Rucksack droht nicht zu reisen. -> Dann hat unser
> Rucksack an Wert [mm]v_i[/mm] des [mm]i-\text{ten}[/mm] Gegenstandes
> zugelegt. Der Rucksack ist aber auch schwerer geworden. Was
> bedeutet dann [mm]w-w_i[/mm]?

Fall 2 - Gegenstand $i$ wird in den Rucksack gepackt:
[mm] $v_i [/mm] + [mm] V[i-1,w-w_i]$ [/mm] ist der neue Wert des Rucksacks bestehend aus [mm] $v_i$, [/mm] dem Wert des neuen Gegenstands $i$, und dem was sonst noch im Rucksack Platz hat. Hier ist der entscheidende Schritt des DPs. Wir haben uns jetzt entschieden, dass wir Gegenstand $i$ einpacken und nun verschieben wir das Problem auf ein kleineres Teilproblem. Wir bauen uns quasi einen neuen Rucksack. Dieser Rucksack hat nur noch [mm] $w-w_i$ [/mm] Kapazitaet und soll mit den Gegenstaenden $1 [mm] \dots [/mm] i-1$ optimal gefuellt werden. Den optimalen Wert fuer einen solchen Rucksack finden wir aber gerade in [mm] $V[i-1,w-w_i]$ [/mm]

Zum Schluss finden wir dann in $V[n,W]$ den Wert eines Rucksacks mit Maximalgewicht $W$, der optimal mit den Gegenstaende $1 [mm] \dots [/mm] n$ beladen ist.

Das schoene an den meisten DP Algorithmen ist, dass man sie auch einfach kurz implementieren kann, weil sie im Wesentlichen ja nur aus einer kleinen Rekursionsgleichung bestehen. Dementsprechend waere es vielleicht noch hilfreich, wenn du dir den Algorithmus mal implementierst und dir die fertig berechnete Tabelle mal fuer ein paar Beispiele ausgeben laesst und nachvollziehst. Einziger Fallstrick beim Implementieren sind die Tabellengrenzen, also das was in deiner Definition mit [mm] $-\infty$ [/mm] belegt wird, aber das bekommst du schon in den Griff ;-)


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheforum.net
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]