www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
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.vorhilfe.de